summaryrefslogtreecommitdiff
path: root/modeling/prod_multi.py
blob: 667241eb13bb9732e3d3a6f9df3e19844dd67e17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/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