File: version0_PP.ml

package info (click to toggle)
hol88 2.02.19940316dfsg-5
  • links: PTS
  • area: main
  • in suites: bookworm
  • size: 65,816 kB
  • sloc: ml: 199,939; ansic: 9,666; sh: 6,913; makefile: 6,032; lisp: 2,747; yacc: 894; sed: 201; cpp: 87; awk: 5
file content (312 lines) | stat: -rw-r--r-- 15,170 bytes parent folder | download | duplicates (11)
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312

let ella_rules =

   % : (print_rule list) %

   [
    ((`ella`,(Print_metavar
               ((Const_name `name`),
                [(Patt_child (Print_metavar ((Var_name `string`),[])))])),
      (\x y. true)),(PF (H_box [((Nat 0),(PO_leaf (`string`,(\s.s))))])));
    ((`ella`,(Print_metavar
               ((Const_name `fnname`),
                [(Patt_child (Print_metavar ((Var_name `string`),[])))])),
      (\x y. true)),(PF (H_box [((Nat 0),(PO_leaf (`string`,(\s.s))))])));
    ((`ella`,(Print_metavar
               ((Const_name `type`),
                [(Patt_child (Print_metavar ((Var_name `string`),[])))])),
      (\x y. true)),(PF (H_box [((Nat 0),(PO_leaf (`string`,(\s.s))))])));
    ((`ella`,
      (Print_metavar ((Const_name `text`),[(Var_children `decls`)])),
      (\x y. true)),
     (PF (V_box [(((Abs 0),(Nat 1)),
                  (PO_expand (H_box [((Nat 0),(PO_subcall (`decls`,[])));
                                     ((Nat 0),(PO_constant `.`))])))])));
    ((`ella`,(Print_metavar
               ((Const_name `typedec`),[(Var_child `name`);
                                        (Var_child `firstname`);
                                        (Var_children `othernames`)])),
      (\x y. true)),
     (PF
       (HV_box
         [(((Nat 1),(Abs 3),(Nat 0)),(PO_constant `TYPE`));
          (((Nat 1),(Abs 3),(Nat 0)),
           (PO_format
             (PF (HV_box [(((Nat 1),(Abs 3),(Nat 0)),
                           (PO_format
                             (PF (H_box
                                   [((Nat 1),(PO_subcall (`name`,[])));
                                    ((Nat 1),(PO_constant `=`))]))));
                          (((Nat 1),(Abs 3),(Nat 0)),
                           (PO_format
                             (PF (H_box
                                   [((Nat 0),(PO_constant `NEW(`));
                                    ((Nat 0),
                                     (PO_format
                                       (PF (HoV_box
                                             [(((Nat 1),
                                                (Abs (-2)),(Nat 0)),
                                               (PO_subcall
                                                 (`firstname`,[])));
                                              (((Nat 1),(Abs (-2)),
                                                (Nat 0)),
                                               (PO_expand
                                                 (H_box
                                                   [((Nat 1),
                                                     (PO_constant
                                                       `|`));
                                                    ((Nat 1),
                                                     (PO_subcall
                                                       (`othernames`,
                                                        [])))])))]))));
                                    ((Nat 0),(PO_constant `)`))]))))]))))])));
    ((`ella`,
      (Print_metavar ((Const_name `inputitem`),[(Var_child `type`)])),
      (\x y. true)),(PF (H_box [((Nat 0),(PO_subcall (`type`,[])))])));
    ((`ella`,(Print_metavar ((Const_name `inputitem`),
                             [(Var_child `type`);(Var_children `names`)])),
      (\x y. true)),
     (PF
       (HV_box [(((Nat 1),(Abs 3),(Nat 0)),
                 (PO_format (PF (H_box [((Nat 0),(PO_subcall (`type`,[])));
                                        ((Nat 0),(PO_constant `:`))]))));
                (((Nat 1),(Abs 3),(Nat 0)),
                 (PO_format (PF (HoV_box [(((Nat 1),(Abs 0),(Nat 0)),
                                           (PO_subcall (`names`,[])))]))))])));
    ((`ella`,(Print_metavar ((Const_name `inputitem_list`),
                             [(Var_children `items`);(Var_child `item`)])),
      (\x y. true)),
     (PF (H_box [((Nat 0),(PO_constant `(`));
                 ((Nat 0),
                  (PO_format
                    (PF (HoV_box [(((Nat 1),(Abs 0),(Nat 0)),
                                   (PO_expand
                                     (H_box
                                       [((Nat 0),(PO_subcall (`items`,[])));
                                        ((Nat 0),(PO_constant `,`))])));
                                  (((Nat 1),(Abs 0),(Nat 0)),
                                   (PO_subcall (`item`,[])))]))));
                 ((Nat 0),(PO_constant `)`))])));
    ((`ella`,(Print_metavar ((Const_name `fndec`),[(Var_child `fnname`);
                                                   (Var_child `items`);
                                                   (Var_child `type`);
                                                   (Var_child `fnbody`)])),
      (\x y. true)),
     (PF (V_box [(((Abs 1),(Nat 0)),
                  (PO_format
                    (PF (HV_box
                          [(((Nat 1),(Abs 3),(Nat 0)),
                            (PO_format
                              (PF (H_box [((Nat 1),(PO_constant `FN`));
                                          ((Nat 1),
                                           (PO_subcall (`fnname`,[])));
                                          ((Nat 1),(PO_constant `=`))]))));
                           (((Nat 1),(Abs 3),(Nat 0)),
                            (PO_format
                              (PF (H_box
                                    [((Nat 0),
                                      (PO_format
                                        (PF
                                          (HV_box
                                            [(((Nat 1),(Abs 3),
                                               (Nat 0)),
                                              (PO_subcall
                                                (`items`,[])));
                                             (((Nat 1),(Abs 3),
                                               (Nat 0)),
                                              (PO_format
                                                (PF
                                                  (H_box
                                                    [((Nat
                                                        1),
                                                      (PO_constant
                                                        `->`));
                                                     ((Nat 1),
                                                      (PO_subcall
                                                        (`type`,
                                                         [])))]))))]))));
                                     ((Nat 0),(PO_constant `:`))]))))]))));
                 (((Abs 1),(Nat 0)),(PO_subcall (`fnbody`,[])))])));
    ((`ella`,
      (Print_metavar ((Const_name `fnbody`),[(Var_child `fnbody`)])),
      (\x y. true)),(PF (H_box [((Nat 0),(PO_subcall (`fnbody`,[])))])));
    ((`ella`,
      (Print_metavar
        ((Const_name `delay`),[(Var_child `name`);(Var_child `int`)])),
      (\x y. true)),
     (PF (HV_box
           [(((Nat 0),(Abs 3),(Nat 0)),(PO_constant `DELAY`));
            (((Nat 0),(Abs 3),(Nat 0)),
             (PO_format
               (PF (H_box [((Nat 0),(PO_constant `(`));
                           ((Nat 0),
                            (PO_format
                              (PF (HV_box
                                    [(((Nat 1),(Abs 3),(Nat 0)),
                                      (PO_format
                                        (PF (H_box
                                              [((Nat 0),
                                                (PO_subcall
                                                  (`name`,[])));
                                               ((Nat 0),
                                                (PO_constant `,`))]))));
                                     (((Nat 1),(Abs 3),(Nat 0)),
                                      (PO_subcall (`int`,[])))]))));
                           ((Nat 0),(PO_constant `)`))]))))])));
    ((`ella`,(Print_metavar ((Const_name `unit`),[(Var_child `unit`)])),
      (\x y. true)),(PF (H_box [((Nat 0),(PO_subcall (`unit`,[])))])));
    ((`ella`,(Print_metavar ((Const_name `tuple`),
                             [(Var_children `units`);(Var_child `unit`)])),
      (\x y. true)),
     (PF (H_box [((Nat 0),(PO_constant `(`));
                 ((Nat 0),
                  (PO_format
                    (PF (HoV_box [(((Nat 1),(Abs 0),(Nat 0)),
                                   (PO_expand
                                     (H_box
                                       [((Nat 0),(PO_subcall (`units`,[])));
                                        ((Nat 0),(PO_constant `,`))])));
                                  (((Nat 1),(Abs 0),(Nat 0)),
                                   (PO_subcall (`unit`,[])))]))));
                 ((Nat 0),(PO_constant `)`))])));
    ((`ella`,
      (Print_metavar ((Const_name `choosers`),[(Var_child `name`)])),
      (\x y. true)),(PF (H_box [((Nat 0),(PO_subcall (`name`,[])))])));
    ((`ella`,(Print_metavar ((Const_name `choosers`),
                             [(Var_children `names`);(Var_child `name`)])),
      (\x y. true)),
     (PF (H_box [((Nat 0),(PO_constant `(`));
                 ((Nat 0),
                  (PO_format
                    (PF (HoV_box [(((Nat 1),(Abs 0),(Nat 0)),
                                   (PO_expand
                                     (H_box
                                       [((Nat 0),(PO_subcall (`names`,[])));
                                        ((Nat 0),(PO_constant `,`))])));
                                  (((Nat 1),(Abs 0),(Nat 0)),
                                   (PO_subcall (`name`,[])))]))));
                 ((Nat 0),(PO_constant `)`))])));
    ((`ella`,(Print_metavar ((Const_name `choices`),
                             [(Var_child `choosers`);(Var_child `unit`)])),
      (\x y. true)),
     (PF (HV_box [(((Nat 1),(Abs 3),(Nat 0)),
                   (PO_format
                     (PF (H_box [((Nat 0),(PO_subcall (`choosers`,[])));
                                 ((Nat 0),(PO_constant `:`))]))));
                  (((Nat 1),(Abs 3),(Nat 0)),(PO_subcall (`unit`,[])))])));
    ((`ella`,
      (Print_metavar ((Const_name `choices_list`),
                      [(Var_children `choices`);(Var_child `choice`)])),
      (\x y. true)),
     (PF
       (HoV_box [(((Nat 1),(Abs 0),(Nat 0)),
                  (PO_expand (H_box [((Nat 0),(PO_subcall (`choices`,[])));
                                     ((Nat 0),(PO_constant `,`))])));
                 (((Nat 1),(Abs 0),(Nat 0)),(PO_subcall (`choice`,[])))])));
    ((`ella`,(Print_metavar ((Const_name `else_clause`),[])),(\x y. true)),
     PF_empty);
    ((`ella`,
      (Print_metavar ((Const_name `else_clause`),[(Var_child `unit`)])),
      (\x y. true)),
     (PF (HV_box [(((Nat 1),(Abs 3),(Nat 0)),(PO_constant `ELSE`));
                  (((Nat 1),(Abs 3),(Nat 0)),(PO_subcall (`unit`,[])))])));
    ((`ella`,(Print_metavar
               ((Const_name `caseclause`),[(Var_child `unit`);
                                           (Var_child `choices_list`);
                                           (Var_child `else_clause`)])),
      (\x y. true)),
     (PF (V_box
           [(((Abs 0),(Nat 0)),
             (PO_format
               (PF (HV_box
                     [(((Nat 1),(Abs 3),(Nat 0)),(PO_constant `CASE`));
                      (((Nat 1),(Abs 3),(Nat 0)),
                       (PO_subcall (`unit`,[])))]))));
            (((Abs 0),(Nat 0)),
             (PO_format
               (PF (H_box [((Nat 1),(PO_constant `OF`));
                           ((Nat 1),(PO_subcall (`choices_list`,[])))]))));
            (((Abs 0),(Nat 0)),(PO_subcall (`else_clause`,[])));
            (((Abs 0),(Nat 0)),(PO_constant `ESAC`))])));
    ((`ella`,(Print_metavar
               ((Const_name `series`),
                [(Patt_child
                   (Print_metavar
                     ((Const_name `step_list`),[(Var_children `steps`)])));
                 (Var_child `unit`)])),(\x y. true)),
     (PF (V_box [(((Abs 0),(Nat 0)),(PO_constant `BEGIN`));
                 (((Abs 3),(Nat 0)),
                  (PO_expand (H_box [((Nat 0),(PO_subcall (`steps`,[])));
                                     ((Nat 0),(PO_constant `.`))])));
                 (((Abs 3),(Nat 0)),
                  (PO_format (PF (HV_box [(((Nat 1),(Abs 3),(Nat 0)),
                                           (PO_constant `OUTPUT`));
                                          (((Nat 1),(Abs 3),(Nat 0)),
                                           (PO_subcall (`unit`,[])))]))));
                 (((Abs 0),(Nat 0)),(PO_constant `END`))])));
    ((`ella`,
      (Print_metavar
        ((Const_name `makeitem`),
         [(Var_child `fnname`);
          (Patt_child
            (Print_metavar
              ((Const_name `name_list`),[(Var_children `names`)])))])),
      (\x y. true)),
     (PF (HV_box
           [(((Nat 1),(Abs 3),(Nat 0)),
             (PO_format (PF (H_box [((Nat 0),(PO_subcall (`fnname`,[])));
                                    ((Nat 0),(PO_constant `:`))]))));
            (((Nat 1),(Abs 3),(Nat 0)),
             (PO_format (PF (HoV_box [(((Nat 1),(Abs 0),(Nat 0)),
                                       (PO_subcall (`names`,[])))]))))])));
    ((`ella`,(Print_metavar
               ((Const_name `make`),
                [(Var_children `makeitems`);(Var_child `makeitem`)])),
      (\x y. true)),
     (PF
       (HV_box
         [(((Nat 1),(Abs 3),(Nat 0)),(PO_constant `MAKE`));
          (((Nat 1),(Abs 3),(Nat 0)),
           (PO_format
             (PF (V_box
                   [(((Abs 0),(Nat 0)),
                     (PO_expand
                       (H_box
                         [((Nat 0),(PO_subcall (`makeitems`,[])));
                          ((Nat 0),(PO_constant `,`))])));
                    (((Abs 0),(Nat 0)),(PO_subcall (`makeitem`,[])))]))))])));
    ((`ella`,
      (Print_metavar
        ((Const_name `joinitem`),[(Var_child `unit`);(Var_child `name`)])),
      (\x y. true)),
     (PF
       (HV_box
         [(((Nat 1),(Abs 3),(Nat 0)),(PO_subcall (`unit`,[])));
          (((Nat 1),(Abs 3),(Nat 0)),
           (PO_format (PF (H_box [((Nat 1),(PO_constant `->`));
                                  ((Nat 1),(PO_subcall (`name`,[])))]))))])));
    ((`ella`,(Print_metavar
               ((Const_name `join`),
                [(Var_children `joinitems`);(Var_child `joinitem`)])),
      (\x y. true)),
     (PF
       (HV_box
         [(((Nat 1),(Abs 3),(Nat 0)),(PO_constant `JOIN`));
          (((Nat 1),(Abs 3),(Nat 0)),
           (PO_format
             (PF (V_box
                   [(((Abs 0),(Nat 0)),
                     (PO_expand
                       (H_box
                         [((Nat 0),(PO_subcall (`joinitems`,[])));
                          ((Nat 0),(PO_constant `,`))])));
                    (((Abs 0),(Nat 0)),(PO_subcall (`joinitem`,[])))]))))])))
   ] : print_rule list;;


let ella_rules_fun =

   % : (print_rule_function) %

   print_rule_fun ella_rules;;