summaryrefslogtreecommitdiff
path: root/modeling/prod_vis.py
diff options
context:
space:
mode:
authorNiclas Dobbertin <niclas.dobbertin@mailbox.org>2024-07-05 12:15:06 +0200
committerNiclas Dobbertin <niclas.dobbertin@mailbox.org>2024-07-05 12:15:06 +0200
commit521e4ee53cc0add0d357d28a35dbed7184026ec2 (patch)
tree3d68e40d9577f43e3a71a04744a7768176173322 /modeling/prod_vis.py
parent89f11b1c74664054aee78de8610344791a0c8c03 (diff)
find max and min value
Diffstat (limited to 'modeling/prod_vis.py')
-rw-r--r--modeling/prod_vis.py1240
1 files changed, 1214 insertions, 26 deletions
diff --git a/modeling/prod_vis.py b/modeling/prod_vis.py
index 31e53ca..bc1f0b4 100644
--- a/modeling/prod_vis.py
+++ b/modeling/prod_vis.py
@@ -1,10 +1,11 @@
#!/usr/bin/env python3
+
def procedures(Model):
prods = []
vis_find_arg1_header = Model.productionstring(
- name = "vis_find_arg1_header",
+ name="vis_find_arg1_header",
string="""
=g>
isa math_goal
@@ -19,17 +20,19 @@ def procedures(Model):
+visual_location>
isa _visuallocation
value =var
- """
+ """,
)
# start value index search
vis_find_arg1_header_done = Model.productionstring(
- name = "vis_find_arg1_header_done",
+ name="vis_find_arg1_header_done",
string="""
=g>
isa math_goal
op find_arg1_header
arg1 =var
+ arg1_idx ~max
+ arg1_idx ~min
arg1_idx =idx
vis_counter ~=idx
vis_counter =vis_counter
@@ -51,11 +54,11 @@ def procedures(Model):
+retrieval>
isa number
number 1
- """
+ """,
)
vis_find_arg1_search_step1 = Model.productionstring(
- name = "vis_find_arg1_search_step1",
+ name="vis_find_arg1_search_step1",
string="""
=g>
isa math_goal
@@ -87,11 +90,11 @@ def procedures(Model):
+retrieval>
isa number
number =next
- """
+ """,
)
vis_find_arg1_search_step2 = Model.productionstring(
- name = "vis_find_arg1_search_step2",
+ name="vis_find_arg1_search_step2",
string="""
=g>
isa math_goal
@@ -123,11 +126,11 @@ def procedures(Model):
+retrieval>
isa number
number =next
- """
+ """,
)
vis_find_arg1_search_step3 = Model.productionstring(
- name = "vis_find_arg1_search_step3",
+ name="vis_find_arg1_search_step3",
string="""
=g>
isa math_goal
@@ -159,7 +162,7 @@ def procedures(Model):
+retrieval>
isa number
number =next
- """
+ """,
)
vis_find_arg1_search_done = Model.productionstring(
@@ -185,7 +188,7 @@ def procedures(Model):
cmd move_attention
screen_pos =visual_location
~visual_location>
- """
+ """,
)
vis_find_arg1_replace = Model.productionstring(
@@ -206,12 +209,605 @@ def procedures(Model):
arg1 =arg1
vis_counter None
~visual>
- """
+ """,
+ )
+
+ vis_max_arg1_header_done = Model.productionstring(
+ name="vis_max_arg1_header_done",
+ string="""
+ =g>
+ isa math_goal
+ op find_arg1_header
+ arg1 =var
+ arg1_idx max
+ vis_counter =vis_counter
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op max_arg1_attend
+ vis_counter 1
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y closest
+ ~retrieval>
+ """,
+ )
+
+ vis_max_arg1_search_step1_attend = Model.productionstring(
+ name="vis_max_arg1_search_step1_attend",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg1_attend
+ arg1_idx max
+ vis_counter 1
+ =visual_location>
+ isa _visuallocation
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op max_arg1_encode
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_max_arg1_search_step1_encode = Model.productionstring(
+ name="vis_max_arg1_search_step1_encode",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg1_encode
+ arg1_idx max
+ vis_counter 1
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op max_arg1_attend
+ vis_counter 2
+ arg1 =value
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y 300
+ """,
)
+ vis_max_arg1_search_step2_attend = Model.productionstring(
+ name="vis_max_arg1_search_step2_attend",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg1_attend
+ arg1_idx max
+ vis_counter 2
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op max_arg1_check
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_max_arg1_search_step2_check = Model.productionstring(
+ name="vis_max_arg1_search_step2_check",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg1_check
+ arg1 =arg1
+ arg1_idx max
+ vis_counter 2
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op max_arg1_encode
+ +retrieval>
+ isa math_op
+ op greater
+ arg1 =arg1
+ arg2 =value
+ """,
+ )
+ vis_max_arg1_search_step2_encode = Model.productionstring(
+ name="vis_max_arg1_search_step2_encode",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg1_encode
+ arg1_idx max
+ vis_counter 2
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ =retrieval>
+ isa math_op
+ op greater
+ result =result
+ ==>
+ =g>
+ isa math_goal
+ op max_arg1_attend
+ vis_counter 3
+ arg1 =result
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y 400
+ ~retrieval>
+ """,
+ )
+ vis_max_arg1_search_step3_attend = Model.productionstring(
+ name="vis_max_arg1_search_step3_attend",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg1_attend
+ arg1_idx max
+ vis_counter 3
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op max_arg1_check
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_max_arg1_search_step3_check = Model.productionstring(
+ name="vis_max_arg1_search_step3_check",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg1_check
+ arg1 =arg1
+ arg1_idx max
+ vis_counter 3
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op max_arg1_encode
+ +retrieval>
+ isa math_op
+ op greater
+ arg1 =arg1
+ arg2 =value
+ """,
+ )
+ vis_max_arg1_search_step3_encode = Model.productionstring(
+ name="vis_max_arg1_search_step3_encode",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg1_encode
+ arg1_idx max
+ vis_counter 3
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ =retrieval>
+ isa math_op
+ op greater
+ result =result
+ ==>
+ =g>
+ isa math_goal
+ op max_arg1_attend
+ vis_counter 4
+ arg1 =result
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y 500
+ ~retrieval>
+ """,
+ )
+ vis_max_arg1_search_step4_attend = Model.productionstring(
+ name="vis_max_arg1_search_step4_attend",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg1_attend
+ arg1_idx max
+ vis_counter 4
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op max_arg1_check
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_max_arg1_search_step4_check = Model.productionstring(
+ name="vis_max_arg1_search_step4_check",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg1_check
+ arg1 =arg1
+ arg1_idx max
+ vis_counter 4
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op max_arg1_encode
+ +retrieval>
+ isa math_op
+ op greater
+ arg1 =arg1
+ arg2 =value
+ """,
+ )
+ vis_max_arg1_search_step4_encode = Model.productionstring(
+ name="vis_max_arg1_search_step4_encode",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg1_encode
+ arg1_idx max
+ vis_counter 4
+ =retrieval>
+ isa math_op
+ op greater
+ result =result
+ ==>
+ =g>
+ isa math_goal
+ op check_if_number_arg2_start
+ arg1 =result
+ vis_counter None
+ ~visual>
+ ~retrieval>
+ """,
+ )
+
+ vis_min_arg1_header_done = Model.productionstring(
+ name="vis_min_arg1_header_done",
+ string="""
+ =g>
+ isa math_goal
+ op find_arg1_header
+ arg1 =var
+ arg1_idx min
+ vis_counter =vis_counter
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op min_arg1_attend
+ vis_counter 1
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y closest
+ ~retrieval>
+ """,
+ )
+
+ vis_min_arg1_search_step1_attend = Model.productionstring(
+ name="vis_min_arg1_search_step1_attend",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg1_attend
+ arg1_idx min
+ vis_counter 1
+ =visual_location>
+ isa _visuallocation
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op min_arg1_encode
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_min_arg1_search_step1_encode = Model.productionstring(
+ name="vis_min_arg1_search_step1_encode",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg1_encode
+ arg1_idx min
+ vis_counter 1
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op min_arg1_attend
+ vis_counter 2
+ arg1 =value
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y 300
+ """,
+ )
+
+ vis_min_arg1_search_step2_attend = Model.productionstring(
+ name="vis_min_arg1_search_step2_attend",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg1_attend
+ arg1_idx min
+ vis_counter 2
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op min_arg1_check
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_min_arg1_search_step2_check = Model.productionstring(
+ name="vis_min_arg1_search_step2_check",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg1_check
+ arg1 =arg1
+ arg1_idx min
+ vis_counter 2
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op min_arg1_encode
+ +retrieval>
+ isa math_op
+ op lesser
+ arg1 =arg1
+ arg2 =value
+ """,
+ )
+ vis_min_arg1_search_step2_encode = Model.productionstring(
+ name="vis_min_arg1_search_step2_encode",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg1_encode
+ arg1_idx min
+ vis_counter 2
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ =retrieval>
+ isa math_op
+ op lesser
+ result =result
+ ==>
+ =g>
+ isa math_goal
+ op min_arg1_attend
+ vis_counter 3
+ arg1 =result
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y 400
+ ~retrieval>
+ """,
+ )
+ vis_min_arg1_search_step3_attend = Model.productionstring(
+ name="vis_min_arg1_search_step3_attend",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg1_attend
+ arg1_idx min
+ vis_counter 3
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op min_arg1_check
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_min_arg1_search_step3_check = Model.productionstring(
+ name="vis_min_arg1_search_step3_check",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg1_check
+ arg1 =arg1
+ arg1_idx min
+ vis_counter 3
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op min_arg1_encode
+ +retrieval>
+ isa math_op
+ op lesser
+ arg1 =arg1
+ arg2 =value
+ """,
+ )
+ vis_min_arg1_search_step3_encode = Model.productionstring(
+ name="vis_min_arg1_search_step3_encode",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg1_encode
+ arg1_idx min
+ vis_counter 3
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ =retrieval>
+ isa math_op
+ op lesser
+ result =result
+ ==>
+ =g>
+ isa math_goal
+ op min_arg1_attend
+ vis_counter 4
+ arg1 =result
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y 500
+ ~retrieval>
+ """,
+ )
+ vis_min_arg1_search_step4_attend = Model.productionstring(
+ name="vis_min_arg1_search_step4_attend",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg1_attend
+ arg1_idx min
+ vis_counter 4
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op min_arg1_check
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_min_arg1_search_step4_check = Model.productionstring(
+ name="vis_min_arg1_search_step4_check",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg1_check
+ arg1 =arg1
+ arg1_idx min
+ vis_counter 4
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op min_arg1_encode
+ +retrieval>
+ isa math_op
+ op lesser
+ arg1 =arg1
+ arg2 =value
+ """,
+ )
+ vis_min_arg1_search_step4_encode = Model.productionstring(
+ name="vis_min_arg1_search_step4_encode",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg1_encode
+ arg1_idx min
+ vis_counter 4
+ =retrieval>
+ isa math_op
+ op lesser
+ result =result
+ ==>
+ =g>
+ isa math_goal
+ op check_if_number_arg2_start
+ arg1 =result
+ vis_counter None
+ ~visual>
+ ~retrieval>
+ """,
+ )
vis_find_arg2_header = Model.productionstring(
- name = "vis_find_arg2_header",
+ name="vis_find_arg2_header",
string="""
=g>
isa math_goal
@@ -226,18 +822,20 @@ def procedures(Model):
+visual_location>
isa _visuallocation
value =var
- """
+ """,
)
# start value index search
vis_find_arg2_header_done = Model.productionstring(
- name = "vis_find_arg2_header_done",
+ name="vis_find_arg2_header_done",
string="""
=g>
isa math_goal
op find_arg2_header
arg2 =var
arg2_idx =idx
+ arg2_idx ~min
+ arg2_idx ~max
vis_counter ~=idx
vis_counter =vis_counter
=visual_location>
@@ -259,11 +857,11 @@ def procedures(Model):
+retrieval>
isa number
number 1
- """
+ """,
)
vis_find_arg2_search_step1 = Model.productionstring(
- name = "vis_find_arg2_search_step1",
+ name="vis_find_arg2_search_step1",
string="""
=g>
isa math_goal
@@ -295,11 +893,11 @@ def procedures(Model):
+retrieval>
isa number
number =next
- """
+ """,
)
vis_find_arg2_search_step2 = Model.productionstring(
- name = "vis_find_arg2_search_step2",
+ name="vis_find_arg2_search_step2",
string="""
=g>
isa math_goal
@@ -331,11 +929,11 @@ def procedures(Model):
+retrieval>
isa number
number =next
- """
+ """,
)
vis_find_arg2_search_step3 = Model.productionstring(
- name = "vis_find_arg2_search_step3",
+ name="vis_find_arg2_search_step3",
string="""
=g>
isa math_goal
@@ -367,10 +965,9 @@ def procedures(Model):
+retrieval>
isa number
number =next
- """
+ """,
)
-
vis_find_arg2_search_done = Model.productionstring(
name="vis_find_arg2_search_done",
string="""
@@ -394,7 +991,7 @@ def procedures(Model):
cmd move_attention
screen_pos =visual_location
~visual_location>
- """
+ """,
)
vis_find_arg2_replace = Model.productionstring(
@@ -416,9 +1013,600 @@ def procedures(Model):
vis_counter None
~visual>
~retrieval>
- """
+ """,
)
+ vis_max_arg2_header_done = Model.productionstring(
+ name="vis_max_arg2_header_done",
+ string="""
+ =g>
+ isa math_goal
+ op find_arg2_header
+ arg2 =var
+ arg2_idx max
+ vis_counter =vis_counter
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op max_arg2_attend
+ vis_counter 1
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y closest
+ ~retrieval>
+ """,
+ )
- return prods
+ vis_max_arg2_search_step1_attend = Model.productionstring(
+ name="vis_max_arg2_search_step1_attend",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg2_attend
+ arg2_idx max
+ vis_counter 1
+ =visual_location>
+ isa _visuallocation
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op max_arg2_encode
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_max_arg2_search_step1_encode = Model.productionstring(
+ name="vis_max_arg2_search_step1_encode",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg2_encode
+ arg2_idx max
+ vis_counter 1
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op max_arg2_attend
+ vis_counter 2
+ arg2 =value
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y 300
+ """,
+ )
+ vis_max_arg2_search_step2_attend = Model.productionstring(
+ name="vis_max_arg2_search_step2_attend",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg2_attend
+ arg2_idx max
+ vis_counter 2
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op max_arg2_check
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_max_arg2_search_step2_check = Model.productionstring(
+ name="vis_max_arg2_search_step2_check",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg2_check
+ arg2 =arg2
+ arg2_idx max
+ vis_counter 2
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op max_arg2_encode
+ +retrieval>
+ isa math_op
+ op greater
+ arg1 =arg2
+ arg2 =value
+ """,
+ )
+ vis_max_arg2_search_step2_encode = Model.productionstring(
+ name="vis_max_arg2_search_step2_encode",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg2_encode
+ arg2_idx max
+ vis_counter 2
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ =retrieval>
+ isa math_op
+ op greater
+ result =result
+ ==>
+ =g>
+ isa math_goal
+ op max_arg2_attend
+ vis_counter 3
+ arg2 =result
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y 400
+ ~retrieval>
+ """,
+ )
+ vis_max_arg2_search_step3_attend = Model.productionstring(
+ name="vis_max_arg2_search_step3_attend",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg2_attend
+ arg2_idx max
+ vis_counter 3
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op max_arg2_check
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_max_arg2_search_step3_check = Model.productionstring(
+ name="vis_max_arg2_search_step3_check",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg2_check
+ arg2 =arg2
+ arg2_idx max
+ vis_counter 3
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op max_arg2_encode
+ +retrieval>
+ isa math_op
+ op greater
+ arg1 =arg2
+ arg2 =value
+ """,
+ )
+ vis_max_arg2_search_step3_encode = Model.productionstring(
+ name="vis_max_arg2_search_step3_encode",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg2_encode
+ arg2_idx max
+ vis_counter 3
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ =retrieval>
+ isa math_op
+ op greater
+ result =result
+ ==>
+ =g>
+ isa math_goal
+ op max_arg2_attend
+ vis_counter 4
+ arg2 =result
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y 500
+ ~retrieval>
+ """,
+ )
+ vis_max_arg2_search_step4_attend = Model.productionstring(
+ name="vis_max_arg2_search_step4_attend",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg2_attend
+ arg2_idx max
+ vis_counter 4
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op max_arg2_check
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_max_arg2_search_step4_check = Model.productionstring(
+ name="vis_max_arg2_search_step4_check",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg2_check
+ arg2 =arg2
+ arg2_idx max
+ vis_counter 4
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op max_arg2_encode
+ +retrieval>
+ isa math_op
+ op greater
+ arg1 =arg2
+ arg2 =value
+ """,
+ )
+ vis_max_arg2_search_step4_encode = Model.productionstring(
+ name="vis_max_arg2_search_step4_encode",
+ string="""
+ =g>
+ isa math_goal
+ op max_arg2_encode
+ arg2_idx max
+ vis_counter 4
+ =retrieval>
+ isa math_op
+ op greater
+ result =result
+ ==>
+ =g>
+ isa math_goal
+ op done
+ arg2 =result
+ vis_counter None
+ ~visual>
+ ~retrieval>
+ """,
+ )
+
+ vis_min_arg2_header_done = Model.productionstring(
+ name="vis_min_arg2_header_done",
+ string="""
+ =g>
+ isa math_goal
+ op find_arg2_header
+ arg2 =var
+ arg2_idx min
+ vis_counter =vis_counter
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op min_arg2_attend
+ vis_counter 1
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y closest
+ ~retrieval>
+ """,
+ )
+
+ vis_min_arg2_search_step1_attend = Model.productionstring(
+ name="vis_min_arg2_search_step1_attend",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg2_attend
+ arg2_idx min
+ vis_counter 1
+ =visual_location>
+ isa _visuallocation
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op min_arg2_encode
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_min_arg2_search_step1_encode = Model.productionstring(
+ name="vis_min_arg2_search_step1_encode",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg2_encode
+ arg2_idx min
+ vis_counter 1
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op min_arg2_attend
+ vis_counter 2
+ arg2 =value
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y 300
+ """,
+ )
+
+ vis_min_arg2_search_step2_attend = Model.productionstring(
+ name="vis_min_arg2_search_step2_attend",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg2_attend
+ arg2_idx min
+ vis_counter 2
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op min_arg2_check
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_min_arg2_search_step2_check = Model.productionstring(
+ name="vis_min_arg2_search_step2_check",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg2_check
+ arg2 =arg2
+ arg2_idx min
+ vis_counter 2
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op min_arg2_encode
+ +retrieval>
+ isa math_op
+ op lesser
+ arg1 =arg2
+ arg2 =value
+ """,
+ )
+ vis_min_arg2_search_step2_encode = Model.productionstring(
+ name="vis_min_arg2_search_step2_encode",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg2_encode
+ arg2_idx min
+ vis_counter 2
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ =retrieval>
+ isa math_op
+ op lesser
+ result =result
+ ==>
+ =g>
+ isa math_goal
+ op min_arg2_attend
+ vis_counter 3
+ arg2 =result
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y 400
+ ~retrieval>
+ """,
+ )
+ vis_min_arg2_search_step3_attend = Model.productionstring(
+ name="vis_min_arg2_search_step3_attend",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg2_attend
+ arg2_idx min
+ vis_counter 3
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op min_arg2_check
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_min_arg2_search_step3_check = Model.productionstring(
+ name="vis_min_arg2_search_step3_check",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg2_check
+ arg2 =arg2
+ arg2_idx min
+ vis_counter 3
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op min_arg2_encode
+ +retrieval>
+ isa math_op
+ op lesser
+ arg1 =arg2
+ arg2 =value
+ """,
+ )
+ vis_min_arg2_search_step3_encode = Model.productionstring(
+ name="vis_min_arg2_search_step3_encode",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg2_encode
+ arg2_idx min
+ vis_counter 3
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ =retrieval>
+ isa math_op
+ op lesser
+ result =result
+ ==>
+ =g>
+ isa math_goal
+ op min_arg2_attend
+ vis_counter 4
+ arg2 =result
+ +visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y 500
+ ~retrieval>
+ """,
+ )
+ vis_min_arg2_search_step4_attend = Model.productionstring(
+ name="vis_min_arg2_search_step4_attend",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg2_attend
+ arg2_idx min
+ vis_counter 4
+ =visual_location>
+ isa _visuallocation
+ screen_x =screen_x
+ screen_y =screen_y
+ ?visual>
+ state free
+ ==>
+ =g>
+ isa math_goal
+ op min_arg2_check
+ +visual>
+ isa _visual
+ cmd move_attention
+ screen_pos =visual_location
+ """,
+ )
+ vis_min_arg2_search_step4_check = Model.productionstring(
+ name="vis_min_arg2_search_step4_check",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg2_check
+ arg2 =arg2
+ arg2_idx min
+ vis_counter 4
+ =visual>
+ isa _visual
+ value =value
+ ==>
+ =g>
+ isa math_goal
+ op min_arg2_encode
+ +retrieval>
+ isa math_op
+ op lesser
+ arg1 =arg2
+ arg2 =value
+ """,
+ )
+ vis_min_arg2_search_step4_encode = Model.productionstring(
+ name="vis_min_arg2_search_step4_encode",
+ string="""
+ =g>
+ isa math_goal
+ op min_arg2_encode
+ arg2_idx min
+ vis_counter 4
+ =retrieval>
+ isa math_op
+ op lesser
+ result =result
+ ==>
+ =g>
+ isa math_goal
+ op done
+ arg2 =result
+ vis_counter None
+ ~visual>
+ ~retrieval>
+ """,
+ )
+ return prods