#!/usr/bin/env python3 def procedures(Model): prods = [] proc_start = Model.productionstring( name="proc_start", string=""" =g> isa math_goal proc =proc op None nextop None ?retrieval> state free ?imaginal> state free ==> =g> isa math_goal op retrieve_task +retrieval> isa procedure proc =proc """, ) prods.append(proc_start) proc_start_task1 = Model.productionstring( name="proc_start_task1", string=""" =g> isa math_goal proc =proc op retrieve_task nextop None result1 None =retrieval> isa procedure proc =proc op1 =op arg1_1 =arg1 arg1_2 =arg2 arg1_1_idx =arg1_idx arg1_2_idx =arg2_idx ==> =g> isa math_goal proc =proc task 1 op =op arg1 =arg1 arg2 =arg2 arg1_idx =arg1_idx arg2_idx =arg2_idx result None expand_slot None hundreds1 None tens1 None ones1 None hundreds2 None tens2 None ones2 None hundreds_ans None tens_ans None ones_ans None mul_counter None ones_carry None tens_carry None """, ) prods.append(proc_start_task1) proc_check_substitute_var1 = Model.productionstring( name="proc_substitute_var1", string=""" =g> isa math_goal arg1 ~None arg1 =arg1 op =op nextop None ==> +retrieval> isa number number =arg1 =g> isa math_goal op check_if_number_arg1 nextop =op """ ) proc_check_substitute_var1_number = Model.productionstring( name="proc_substitute_var1_number", string=""" =g> isa math_goal arg1 =arg1 op check_if_number_arg1 nextop =op =retrieval> isa number number =arg1 ==> =g> isa math_goal op =op nextop None """ ) proc_check_substitute_var1_error = Model.productionstring( name="proc_substitute_var1_error", string=""" =g> isa math_goal arg1 =arg1 op check_if_number_arg1 nextop =op ?retrieval> state error ==> =g> isa math_goal op vis_find_arg1 """ ) proc_check_substitute_var2 = Model.productionstring( name="proc_substitute_var2", string=""" =g> isa math_goal arg2 ~None arg2 =arg2 op =op nextop None ==> +retrieval> isa number number =arg2 =g> isa math_goal op check_if_number_arg2 nextop =op """ ) proc_check_substitute_var2_number = Model.productionstring( name="proc_substitute_var2_number", string=""" =g> isa math_goal arg2 =arg2 op check_if_number_arg2 nextop =op =retrieval> isa number number =arg2 ==> =g> isa math_goal op =op nextop None """ ) proc_check_substitute_var2_error = Model.productionstring( name="proc_substitute_var2_error", string=""" =g> isa math_goal arg2 =arg2 op check_if_number_arg2 nextop =op ?retrieval> state error ==> =g> isa math_goal op vis_find_arg2 """ ) proc_harvest_task1 = Model.productionstring( name="proc_harvest_task1", string=""" =g> isa math_goal proc =proc task 1 op done nextop None =imaginal> isa math_op ?retrieval> state free ==> =g> isa math_goal op harvest1 +retrieval> isa procedure proc =proc """, ) proc_harvest_task1_done = Model.productionstring( name="proc_harvest_task1_done", string=""" =g> isa math_goal proc =proc task 1 op harvest1 nextop None result2 =result2 =imaginal> isa math_op result =result1 =retrieval> isa procedure proc =proc op1 =op1 op2 =op2 ==> =g> isa math_goal proc =proc op None nextop None result1 =result1 result2 =result2 ~retrieval> """, ) proc_substitute_result1_left = Model.productionstring( name="proc_substitute_result1_left", string=""" =g> isa math_goal arg1 result1 result1 ~None result1 =result1 ==> =g> isa math_goal arg1 =result1 """ ) proc_substitute_result1_right = Model.productionstring( name="proc_substitute_result1_right", string=""" =g> isa math_goal arg2 result1 result1 ~None result1 =result1 ==> =g> isa math_goal arg2 =result1 """ ) proc_start_task2 = Model.productionstring( name="proc_start_task2", string=""" =g> isa math_goal proc =proc op retrieve_task nextop None result1 ~None result2 None =retrieval> isa procedure proc =proc op2 =op arg2_1 =arg1 arg2_2 =arg2 arg2_1_idx =arg1_idx arg2_2_idx =arg2_idx ==> =g> isa math_goal proc =proc task 2 op =op arg1 =arg1 arg2 =arg2 arg1_idx =arg1_idx arg2_idx =arg2_idx result None expand_slot None hundreds1 None tens1 None ones1 None hundreds2 None tens2 None ones2 None hundreds_ans None tens_ans None ones_ans None mul_counter None ones_carry None tens_carry None """, ) prods.append(proc_start_task2) proc_harvest_task2 = Model.productionstring( name="proc_harvest_task2", string=""" =g> isa math_goal proc =proc task 2 op done nextop None =imaginal> isa math_op ?retrieval> state free ==> =g> isa math_goal op harvest2 +retrieval> isa procedure proc =proc """, ) proc_harvest_task2_done = Model.productionstring( name="proc_harvest_task2_done", string=""" =g> isa math_goal proc =proc task 2 op harvest2 nextop None result1 =result1 =imaginal> isa math_op result =result2 =retrieval> isa procedure proc =proc op1 =op1 arg1_1 =arg1_1 arg1_2 =arg1_2 op2 =op2 arg2_1 =arg2_1 arg2_2 =arg2_2 ==> =g> isa math_goal proc =proc op type_ans nextop None result1 =result1 result2 =result2 ~retrieval> """, )