#!/usr/bin/env python3 def multiplication(Model): prods = [] # TODO: switch operands so less steps are needed # switch_mul = Model.productionstring( # name="switch_mul", # string=""" # =g> # =imaginal> # ==> # =imaginal> # """, # ) # prods.append(switch_mul) start_mul = Model.productionstring( name="start_mul", string=""" =g> isa math_goal op mul task calc =imaginal> isa math_op op mul arg1 ~0 arg1 ~1 arg2 ~0 arg1 ~1 arg1 =mul arg2 =arg ones2 =ones tens2 =tens hundreds2 =huns ==> !g> show terminal +g> isa math_goal op add task calc +imaginal> isa math_op op add arg1 =arg ones1 =ones tens1 =tens hundreds1 =huns arg2 =arg ones2 =ones tens2 =tens hundreds2 =huns +retrieval> isa math_op op add arg1 =arg arg2 =arg """, ) prods.append(start_mul) step_mul = Model.productionstring( name="step_mul", string=""" =g> isa math_goal op mul task calc =imaginal> isa math_op op mul arg2 =arg =retrieval> isa math_op op add arg1 =arg arg2 =arg result =sum ==> =g> isa math_goal op mul one_ans =sum """, ) prods.append(step_mul) return prods