1
2(SDEFUN |ILOGIC;proposition;S$;1| ((|s| |String|) ($ $)) (CONS 1 (LIST |s|)))
3
4(SDEFUN |ILOGIC;logicT;$;2| (($ $)) (CONS 0 (LIST 'T)))
5
6(SDEFUN |ILOGIC;logicF;$;3| (($ $)) (CONS 0 (LIST 'F)))
7
8(SDEFUN |ILOGIC;~;2$;4| ((|b| $) ($ $))
9        (SPROG ((#1=#:G504 NIL) (|d| ($)) (|c| ($)))
10               (SEQ
11                (EXIT
12                 (SEQ
13                  (COND
14                   ((QEQCAR |b| 0)
15                    (COND
16                     ((EQUAL (QCAR (CDR |b|)) 'T)
17                      (PROGN (LETT #1# (CONS 0 (LIST 'F))) (GO #2=#:G503))))))
18                  (COND
19                   ((QEQCAR |b| 3)
20                    (SEQ (LETT |c| (QCDR (CDR |b|)))
21                         (EXIT
22                          (COND
23                           ((QEQCAR |c| 3)
24                            (SEQ (LETT |d| (QCDR (CDR |c|)))
25                                 (EXIT
26                                  (COND
27                                   ((QEQCAR |d| 0)
28                                    (COND
29                                     ((EQUAL (QCAR (CDR |d|)) 'T)
30                                      (PROGN
31                                       (LETT #1# (CONS 0 (LIST 'F)))
32                                       (GO #2#))))))))))))))
33                  (EXIT (CONS 3 (CONS 'NOT |b|)))))
34                #2# (EXIT #1#))))
35
36(SDEFUN |ILOGIC;/\\;3$;5| ((|a| $) (|b| $) ($ $))
37        (SPROG ((#1=#:G521 NIL))
38               (SEQ
39                (EXIT
40                 (SEQ
41                  (COND
42                   ((QEQCAR |a| 0)
43                    (COND
44                     ((EQUAL (QCAR (CDR |a|)) 'F)
45                      (PROGN (LETT #1# (CONS 0 (LIST 'F))) (GO #2=#:G520))))))
46                  (COND
47                   ((QEQCAR |b| 0)
48                    (COND
49                     ((EQUAL (QCAR (CDR |b|)) 'F)
50                      (PROGN (LETT #1# (CONS 0 (LIST 'F))) (GO #2#))))))
51                  (COND
52                   ((SPADCALL |a| |b| (QREFELT $ 13))
53                    (PROGN (LETT #1# |a|) (GO #2#))))
54                  (COND
55                   ((SPADCALL |a| (SPADCALL |b| (QREFELT $ 11)) (QREFELT $ 13))
56                    (PROGN (LETT #1# (CONS 0 (LIST 'F))) (GO #2#))))
57                  (COND
58                   ((SPADCALL (SPADCALL |a| (QREFELT $ 11)) |b| (QREFELT $ 13))
59                    (PROGN (LETT #1# (CONS 0 (LIST 'F))) (GO #2#))))
60                  (COND
61                   ((QEQCAR |b| 0)
62                    (COND
63                     ((EQUAL (QCAR (CDR |b|)) 'T)
64                      (PROGN (LETT #1# |a|) (GO #2#))))))
65                  (COND
66                   ((QEQCAR |a| 0)
67                    (COND
68                     ((EQUAL (QCAR (CDR |a|)) 'T)
69                      (PROGN (LETT #1# |b|) (GO #2#))))))
70                  (EXIT (CONS 2 (VECTOR 'AND |a| |b|)))))
71                #2# (EXIT #1#))))
72
73(SDEFUN |ILOGIC;\\/;3$;6| ((|a| $) (|b| $) ($ $))
74        (SPROG ((#1=#:G536 NIL))
75               (SEQ
76                (EXIT
77                 (SEQ
78                  (COND
79                   ((QEQCAR |a| 0)
80                    (COND
81                     ((EQUAL (QCAR (CDR |a|)) 'T)
82                      (PROGN (LETT #1# (CONS 0 (LIST 'T))) (GO #2=#:G535))))))
83                  (COND
84                   ((QEQCAR |b| 0)
85                    (COND
86                     ((EQUAL (QCAR (CDR |b|)) 'T)
87                      (PROGN (LETT #1# (CONS 0 (LIST 'T))) (GO #2#))))))
88                  (COND
89                   ((SPADCALL |a| |b| (QREFELT $ 13))
90                    (PROGN (LETT #1# |a|) (GO #2#))))
91                  (COND
92                   ((QEQCAR |b| 0)
93                    (COND
94                     ((EQUAL (QCAR (CDR |b|)) 'F)
95                      (PROGN (LETT #1# |a|) (GO #2#))))))
96                  (COND
97                   ((QEQCAR |a| 0)
98                    (COND
99                     ((EQUAL (QCAR (CDR |a|)) 'F)
100                      (PROGN (LETT #1# |b|) (GO #2#))))))
101                  (EXIT (CONS 2 (VECTOR 'OR |a| |b|)))))
102                #2# (EXIT #1#))))
103
104(SDEFUN |ILOGIC;implies;3$;7| ((|a| $) (|b| $) ($ $))
105        (SPROG ((#1=#:G550 NIL))
106               (SEQ
107                (EXIT
108                 (SEQ
109                  (COND
110                   ((QEQCAR |a| 0)
111                    (COND
112                     ((QEQCAR |b| 0)
113                      (SEQ
114                       (COND
115                        ((SPADCALL (QCAR (CDR |a|)) 'F (QREFELT $ 17))
116                         (COND
117                          ((EQUAL (QCAR (CDR |b|)) 'F)
118                           (PROGN
119                            (LETT #1# (CONS 0 (LIST 'F)))
120                            (GO #2=#:G549))))))
121                       (EXIT
122                        (PROGN (LETT #1# (CONS 0 (LIST 'T))) (GO #2#))))))))
123                  (EXIT (CONS 2 (VECTOR 'IMPLY |a| |b|)))))
124                #2# (EXIT #1#))))
125
126(SDEFUN |ILOGIC;redux;2$;8| ((|n| $) ($ $))
127        (SPROG ((#1=#:G564 NIL) (#2=#:G474 NIL))
128               (SEQ
129                (EXIT
130                 (SEQ
131                  (COND ((QEQCAR |n| 0) (PROGN (LETT #1# |n|) (GO #3=#:G563))))
132                  (COND ((QEQCAR |n| 1) (PROGN (LETT #1# |n|) (GO #3#))))
133                  (COND
134                   ((QEQCAR |n| 2)
135                    (SEQ
136                     (COND
137                      ((EQUAL
138                        (QVELT
139                         (PROG2 (LETT #2# |n|)
140                             (QCDR #2#)
141                           (|check_union2| (QEQCAR #2# 2)
142                                           (|Record| (|:| |typ| (|Symbol|))
143                                                     (|:| |c1| $) (|:| |c2| $))
144                                           (|Union|
145                                            (|:| |const|
146                                                 (|Record|
147                                                  (|:| |val| (|Symbol|))))
148                                            (|:| |var|
149                                                 (|Record|
150                                                  (|:| |str| (|String|))))
151                                            (|:| |binaryOp|
152                                                 (|Record|
153                                                  (|:| |typ| (|Symbol|))
154                                                  (|:| |c1| $) (|:| |c2| $)))
155                                            (|:| |unaryOp|
156                                                 (|Record|
157                                                  (|:| |typ| (|Symbol|))
158                                                  (|:| |c1| $))))
159                                           #2#))
160                         0)
161                        'IMPLY)
162                       (PROGN
163                        (LETT #1#
164                              (SPADCALL
165                               (SPADCALL
166                                (QVELT
167                                 (PROG2 (LETT #2# |n|)
168                                     (QCDR #2#)
169                                   (|check_union2| (QEQCAR #2# 2)
170                                                   (|Record|
171                                                    (|:| |typ| (|Symbol|))
172                                                    (|:| |c1| $) (|:| |c2| $))
173                                                   (|Union|
174                                                    (|:| |const|
175                                                         (|Record|
176                                                          (|:| |val|
177                                                               (|Symbol|))))
178                                                    (|:| |var|
179                                                         (|Record|
180                                                          (|:| |str|
181                                                               (|String|))))
182                                                    (|:| |binaryOp|
183                                                         (|Record|
184                                                          (|:| |typ|
185                                                               (|Symbol|))
186                                                          (|:| |c1| $)
187                                                          (|:| |c2| $)))
188                                                    (|:| |unaryOp|
189                                                         (|Record|
190                                                          (|:| |typ|
191                                                               (|Symbol|))
192                                                          (|:| |c1| $))))
193                                                   #2#))
194                                 1)
195                                (QREFELT $ 19))
196                               (SPADCALL
197                                (QVELT
198                                 (PROG2 (LETT #2# |n|)
199                                     (QCDR #2#)
200                                   (|check_union2| (QEQCAR #2# 2)
201                                                   (|Record|
202                                                    (|:| |typ| (|Symbol|))
203                                                    (|:| |c1| $) (|:| |c2| $))
204                                                   (|Union|
205                                                    (|:| |const|
206                                                         (|Record|
207                                                          (|:| |val|
208                                                               (|Symbol|))))
209                                                    (|:| |var|
210                                                         (|Record|
211                                                          (|:| |str|
212                                                               (|String|))))
213                                                    (|:| |binaryOp|
214                                                         (|Record|
215                                                          (|:| |typ|
216                                                               (|Symbol|))
217                                                          (|:| |c1| $)
218                                                          (|:| |c2| $)))
219                                                    (|:| |unaryOp|
220                                                         (|Record|
221                                                          (|:| |typ|
222                                                               (|Symbol|))
223                                                          (|:| |c1| $))))
224                                                   #2#))
225                                 2)
226                                (QREFELT $ 19))
227                               (QREFELT $ 18)))
228                        (GO #3#))))
229                     (COND
230                      ((EQUAL
231                        (QVELT
232                         (PROG2 (LETT #2# |n|)
233                             (QCDR #2#)
234                           (|check_union2| (QEQCAR #2# 2)
235                                           (|Record| (|:| |typ| (|Symbol|))
236                                                     (|:| |c1| $) (|:| |c2| $))
237                                           (|Union|
238                                            (|:| |const|
239                                                 (|Record|
240                                                  (|:| |val| (|Symbol|))))
241                                            (|:| |var|
242                                                 (|Record|
243                                                  (|:| |str| (|String|))))
244                                            (|:| |binaryOp|
245                                                 (|Record|
246                                                  (|:| |typ| (|Symbol|))
247                                                  (|:| |c1| $) (|:| |c2| $)))
248                                            (|:| |unaryOp|
249                                                 (|Record|
250                                                  (|:| |typ| (|Symbol|))
251                                                  (|:| |c1| $))))
252                                           #2#))
253                         0)
254                        'AND)
255                       (PROGN
256                        (LETT #1#
257                              (SPADCALL
258                               (SPADCALL
259                                (QVELT
260                                 (PROG2 (LETT #2# |n|)
261                                     (QCDR #2#)
262                                   (|check_union2| (QEQCAR #2# 2)
263                                                   (|Record|
264                                                    (|:| |typ| (|Symbol|))
265                                                    (|:| |c1| $) (|:| |c2| $))
266                                                   (|Union|
267                                                    (|:| |const|
268                                                         (|Record|
269                                                          (|:| |val|
270                                                               (|Symbol|))))
271                                                    (|:| |var|
272                                                         (|Record|
273                                                          (|:| |str|
274                                                               (|String|))))
275                                                    (|:| |binaryOp|
276                                                         (|Record|
277                                                          (|:| |typ|
278                                                               (|Symbol|))
279                                                          (|:| |c1| $)
280                                                          (|:| |c2| $)))
281                                                    (|:| |unaryOp|
282                                                         (|Record|
283                                                          (|:| |typ|
284                                                               (|Symbol|))
285                                                          (|:| |c1| $))))
286                                                   #2#))
287                                 1)
288                                (QREFELT $ 19))
289                               (SPADCALL
290                                (QVELT
291                                 (PROG2 (LETT #2# |n|)
292                                     (QCDR #2#)
293                                   (|check_union2| (QEQCAR #2# 2)
294                                                   (|Record|
295                                                    (|:| |typ| (|Symbol|))
296                                                    (|:| |c1| $) (|:| |c2| $))
297                                                   (|Union|
298                                                    (|:| |const|
299                                                         (|Record|
300                                                          (|:| |val|
301                                                               (|Symbol|))))
302                                                    (|:| |var|
303                                                         (|Record|
304                                                          (|:| |str|
305                                                               (|String|))))
306                                                    (|:| |binaryOp|
307                                                         (|Record|
308                                                          (|:| |typ|
309                                                               (|Symbol|))
310                                                          (|:| |c1| $)
311                                                          (|:| |c2| $)))
312                                                    (|:| |unaryOp|
313                                                         (|Record|
314                                                          (|:| |typ|
315                                                               (|Symbol|))
316                                                          (|:| |c1| $))))
317                                                   #2#))
318                                 2)
319                                (QREFELT $ 19))
320                               (QREFELT $ 14)))
321                        (GO #3#))))
322                     (EXIT
323                      (COND
324                       ((EQUAL
325                         (QVELT
326                          (PROG2 (LETT #2# |n|)
327                              (QCDR #2#)
328                            (|check_union2| (QEQCAR #2# 2)
329                                            (|Record| (|:| |typ| (|Symbol|))
330                                                      (|:| |c1| $)
331                                                      (|:| |c2| $))
332                                            (|Union|
333                                             (|:| |const|
334                                                  (|Record|
335                                                   (|:| |val| (|Symbol|))))
336                                             (|:| |var|
337                                                  (|Record|
338                                                   (|:| |str| (|String|))))
339                                             (|:| |binaryOp|
340                                                  (|Record|
341                                                   (|:| |typ| (|Symbol|))
342                                                   (|:| |c1| $) (|:| |c2| $)))
343                                             (|:| |unaryOp|
344                                                  (|Record|
345                                                   (|:| |typ| (|Symbol|))
346                                                   (|:| |c1| $))))
347                                            #2#))
348                          0)
349                         'OR)
350                        (PROGN
351                         (LETT #1#
352                               (SPADCALL
353                                (SPADCALL
354                                 (QVELT
355                                  (PROG2 (LETT #2# |n|)
356                                      (QCDR #2#)
357                                    (|check_union2| (QEQCAR #2# 2)
358                                                    (|Record|
359                                                     (|:| |typ| (|Symbol|))
360                                                     (|:| |c1| $) (|:| |c2| $))
361                                                    (|Union|
362                                                     (|:| |const|
363                                                          (|Record|
364                                                           (|:| |val|
365                                                                (|Symbol|))))
366                                                     (|:| |var|
367                                                          (|Record|
368                                                           (|:| |str|
369                                                                (|String|))))
370                                                     (|:| |binaryOp|
371                                                          (|Record|
372                                                           (|:| |typ|
373                                                                (|Symbol|))
374                                                           (|:| |c1| $)
375                                                           (|:| |c2| $)))
376                                                     (|:| |unaryOp|
377                                                          (|Record|
378                                                           (|:| |typ|
379                                                                (|Symbol|))
380                                                           (|:| |c1| $))))
381                                                    #2#))
382                                  1)
383                                 (QREFELT $ 19))
384                                (SPADCALL
385                                 (QVELT
386                                  (PROG2 (LETT #2# |n|)
387                                      (QCDR #2#)
388                                    (|check_union2| (QEQCAR #2# 2)
389                                                    (|Record|
390                                                     (|:| |typ| (|Symbol|))
391                                                     (|:| |c1| $) (|:| |c2| $))
392                                                    (|Union|
393                                                     (|:| |const|
394                                                          (|Record|
395                                                           (|:| |val|
396                                                                (|Symbol|))))
397                                                     (|:| |var|
398                                                          (|Record|
399                                                           (|:| |str|
400                                                                (|String|))))
401                                                     (|:| |binaryOp|
402                                                          (|Record|
403                                                           (|:| |typ|
404                                                                (|Symbol|))
405                                                           (|:| |c1| $)
406                                                           (|:| |c2| $)))
407                                                     (|:| |unaryOp|
408                                                          (|Record|
409                                                           (|:| |typ|
410                                                                (|Symbol|))
411                                                           (|:| |c1| $))))
412                                                    #2#))
413                                  2)
414                                 (QREFELT $ 19))
415                                (QREFELT $ 15)))
416                         (GO #3#))))))))
417                  (COND
418                   ((QEQCAR |n| 3)
419                    (PROGN
420                     (LETT #1#
421                           (SPADCALL (SPADCALL (QCDR (CDR |n|)) (QREFELT $ 19))
422                                     (QREFELT $ 11)))
423                     (GO #3#))))
424                  (EXIT |n|)))
425                #3# (EXIT #1#))))
426
427(SDEFUN |ILOGIC;factor;$L;9| ((|n| $) ($ |List| $))
428        (SPROG ((|ch| (|List| $)) (#1=#:G577 NIL) (#2=#:G474 NIL))
429               (SEQ
430                (EXIT
431                 (SEQ
432                  (COND
433                   ((NOT (QEQCAR |n| 2))
434                    (PROGN (LETT #1# (LIST |n|)) (GO #3=#:G576))))
435                  (COND
436                   ((NOT
437                     (EQUAL
438                      (QVELT
439                       (PROG2 (LETT #2# |n|)
440                           (QCDR #2#)
441                         (|check_union2| (QEQCAR #2# 2)
442                                         (|Record| (|:| |typ| (|Symbol|))
443                                                   (|:| |c1| $) (|:| |c2| $))
444                                         (|Union|
445                                          (|:| |const|
446                                               (|Record|
447                                                (|:| |val| (|Symbol|))))
448                                          (|:| |var|
449                                               (|Record|
450                                                (|:| |str| (|String|))))
451                                          (|:| |binaryOp|
452                                               (|Record| (|:| |typ| (|Symbol|))
453                                                         (|:| |c1| $)
454                                                         (|:| |c2| $)))
455                                          (|:| |unaryOp|
456                                               (|Record| (|:| |typ| (|Symbol|))
457                                                         (|:| |c1| $))))
458                                         #2#))
459                       0)
460                      'AND))
461                    (PROGN (LETT #1# (LIST |n|)) (GO #3#))))
462                  (LETT |ch| (SPADCALL |n| (QREFELT $ 21)))
463                  (EXIT
464                   (SPADCALL
465                    (SPADCALL (SPADCALL |ch| (QREFELT $ 23)) (QREFELT $ 24))
466                    (SPADCALL (SPADCALL |ch| (QREFELT $ 25)) (QREFELT $ 24))
467                    (QREFELT $ 26)))))
468                #3# (EXIT #1#))))
469
470(SDEFUN |ILOGIC;removeDup| ((|a| |List| $) (|b| |List| $) ($ |List| $))
471        (SPROG
472         ((|res| (|List| $)) (|fnd| (|Boolean|)) (#1=#:G584 NIL) (|a1| NIL)
473          (#2=#:G583 NIL) (|b1| NIL))
474         (SEQ (LETT |res| NIL)
475              (SEQ (LETT |b1| NIL) (LETT #2# |b|) G190
476                   (COND
477                    ((OR (ATOM #2#) (PROGN (LETT |b1| (CAR #2#)) NIL))
478                     (GO G191)))
479                   (SEQ (LETT |fnd| 'NIL)
480                        (SEQ (LETT |a1| NIL) (LETT #1# |a|) G190
481                             (COND
482                              ((OR (ATOM #1#)
483                                   (PROGN (LETT |a1| (CAR #1#)) NIL))
484                               (GO G191)))
485                             (SEQ
486                              (EXIT
487                               (COND
488                                ((SPADCALL |a1| |b1| (QREFELT $ 13))
489                                 (LETT |fnd| 'T)))))
490                             (LETT #1# (CDR #1#)) (GO G190) G191 (EXIT NIL))
491                        (EXIT
492                         (COND
493                          ((NULL |fnd|)
494                           (LETT |res|
495                                 (SPADCALL |res| |b1| (QREFELT $ 27)))))))
496                   (LETT #2# (CDR #2#)) (GO G190) G191 (EXIT NIL))
497              (EXIT |res|))))
498
499(SDEFUN |ILOGIC;deductions1| ((|ln| |List| $) ($ |List| $))
500        (SPROG
501         ((|res| (|List| $)) (#1=#:G601 NIL) (|n2| NIL) (|ch| (|List| $))
502          (#2=#:G600 NIL) (|n| NIL))
503         (SEQ (LETT |res| NIL)
504              (SEQ (LETT |n| NIL) (LETT #2# |ln|) G190
505                   (COND
506                    ((OR (ATOM #2#) (PROGN (LETT |n| (CAR #2#)) NIL))
507                     (GO G191)))
508                   (SEQ
509                    (EXIT
510                     (COND
511                      ((QEQCAR |n| 2)
512                       (COND
513                        ((EQUAL (QVELT (CDR |n|) 0) 'IMPLY)
514                         (SEQ (LETT |ch| (SPADCALL |n| (QREFELT $ 21)))
515                              (EXIT
516                               (SEQ (LETT |n2| NIL) (LETT #1# |ln|) G190
517                                    (COND
518                                     ((OR (ATOM #1#)
519                                          (PROGN (LETT |n2| (CAR #1#)) NIL))
520                                      (GO G191)))
521                                    (SEQ
522                                     (EXIT
523                                      (COND
524                                       ((SPADCALL
525                                         (SPADCALL |ch| (QREFELT $ 23)) |n2|
526                                         (QREFELT $ 13))
527                                        (LETT |res|
528                                              (SPADCALL |res|
529                                                        (SPADCALL |ch|
530                                                                  (QREFELT $
531                                                                           25))
532                                                        (QREFELT $ 27)))))))
533                                    (LETT #1# (CDR #1#)) (GO G190) G191
534                                    (EXIT NIL))))))))))
535                   (LETT #2# (CDR #2#)) (GO G190) G191 (EXIT NIL))
536              (EXIT |res|))))
537
538(SDEFUN |ILOGIC;deductions;2L;12| ((|ln| |List| $) ($ |List| $))
539        (SPROG
540         ((|loopbreaker| (|NonNegativeInteger|)) (|emptyres| (|Boolean|))
541          (|res| (|List| $)) (|thisres| (|List| $)) (|allres| (|List| $)))
542         (SEQ (LETT |res| NIL) (LETT |thisres| (|ILOGIC;deductions1| |ln| $))
543              (LETT |res| (SPADCALL |res| |thisres| (QREFELT $ 26)))
544              (LETT |emptyres| (SPADCALL |thisres| (QREFELT $ 28)))
545              (LETT |loopbreaker| 1)
546              (SEQ G190
547                   (COND
548                    ((NULL (COND (|emptyres| NIL) ('T (< |loopbreaker| 20))))
549                     (GO G191)))
550                   (SEQ (LETT |allres| (SPADCALL |ln| |res| (QREFELT $ 26)))
551                        (LETT |thisres| (|ILOGIC;deductions1| |allres| $))
552                        (LETT |thisres| (|ILOGIC;removeDup| |res| |thisres| $))
553                        (LETT |thisres|
554                              (|ILOGIC;removeDup| |allres| |thisres| $))
555                        (LETT |res| (SPADCALL |res| |thisres| (QREFELT $ 26)))
556                        (LETT |emptyres| (SPADCALL |thisres| (QREFELT $ 28)))
557                        (EXIT (LETT |loopbreaker| (+ |loopbreaker| 1))))
558                   NIL (GO G190) G191 (EXIT NIL))
559              (EXIT |res|))))
560
561(SDEFUN |ILOGIC;opType;$S;13| ((|n| $) ($ |Symbol|))
562        (SPROG ((#1=#:G609 NIL))
563               (SEQ
564                (EXIT
565                 (SEQ
566                  (COND
567                   ((QEQCAR |n| 2)
568                    (PROGN (LETT #1# (QVELT (CDR |n|) 0)) (GO #2=#:G608))))
569                  (COND ((QEQCAR |n| 3) (PROGN (LETT #1# 'NOT) (GO #2#))))
570                  (EXIT 'OTHER)))
571                #2# (EXIT #1#))))
572
573(SDEFUN |ILOGIC;atom?;$B;14| ((|n| $) ($ |Boolean|))
574        (COND ((QEQCAR |n| 1) 'T) ('T (QEQCAR |n| 0))))
575
576(SDEFUN |ILOGIC;value;$S;15| ((|n| $) ($ |Symbol|))
577        (SPROG ((#1=#:G624 NIL))
578               (SEQ
579                (EXIT
580                 (SEQ
581                  (COND
582                   ((QEQCAR |n| 0)
583                    (SEQ
584                     (COND
585                      ((EQUAL (QCAR (CDR |n|)) 'F)
586                       (PROGN (LETT #1# 'F) (GO #2=#:G623))))
587                     (COND
588                      ((EQUAL (QCAR (CDR |n|)) 'T)
589                       (PROGN (LETT #1# 'T) (GO #2#))))
590                     (EXIT (PROGN (LETT #1# 'E) (GO #2#))))))
591                  (COND ((QEQCAR |n| 1) (PROGN (LETT #1# 'P) (GO #2#))))
592                  (EXIT 'C)))
593                #2# (EXIT #1#))))
594
595(SDEFUN |ILOGIC;getChildren;$L;16| ((|n| $) ($ |List| $))
596        (SPROG ((#1=#:G630 NIL) (#2=#:G475 NIL))
597               (SEQ
598                (EXIT
599                 (SEQ
600                  (COND
601                   ((SPADCALL |n| (QREFELT $ 31))
602                    (PROGN (LETT #1# NIL) (GO #3=#:G629))))
603                  (COND
604                   ((QEQCAR |n| 2)
605                    (PROGN
606                     (LETT #1# (LIST (QVELT (CDR |n|) 1) (QVELT (CDR |n|) 2)))
607                     (GO #3#))))
608                  (EXIT
609                   (COND
610                    ((QEQCAR |n| 3)
611                     (PROGN
612                      (LETT #1#
613                            (LIST
614                             (QCDR
615                              (PROG2 (LETT #2# |n|)
616                                  (QCDR #2#)
617                                (|check_union2| (QEQCAR #2# 3)
618                                                (|Record|
619                                                 (|:| |typ| (|Symbol|))
620                                                 (|:| |c1| $))
621                                                (|Union|
622                                                 (|:| |const|
623                                                      (|Record|
624                                                       (|:| |val| (|Symbol|))))
625                                                 (|:| |var|
626                                                      (|Record|
627                                                       (|:| |str| (|String|))))
628                                                 (|:| |binaryOp|
629                                                      (|Record|
630                                                       (|:| |typ| (|Symbol|))
631                                                       (|:| |c1| $)
632                                                       (|:| |c2| $)))
633                                                 (|:| |unaryOp|
634                                                      (|Record|
635                                                       (|:| |typ| (|Symbol|))
636                                                       (|:| |c1| $))))
637                                                #2#)))))
638                      (GO #3#)))))))
639                #3# (EXIT #1#))))
640
641(SDEFUN |ILOGIC;=;2$B;17| ((|a| $) (|b| $) ($ |Boolean|))
642        (SEQ
643         (COND
644          ((QEQCAR |a| 0)
645           (COND
646            ((QEQCAR |b| 0)
647             (EXIT
648              (SEQ
649               (COND
650                ((EQUAL (QCAR (CDR |a|)) 'F)
651                 (COND ((EQUAL (QCAR (CDR |b|)) 'F) (EXIT 'T)))))
652               (COND
653                ((EQUAL (QCAR (CDR |a|)) 'T)
654                 (COND ((EQUAL (QCAR (CDR |b|)) 'T) (EXIT 'T)))))
655               (EXIT NIL)))))))
656         (COND
657          ((QEQCAR |a| 1)
658           (COND
659            ((QEQCAR |b| 1)
660             (EXIT
661              (COND ((EQUAL (QCAR (CDR |a|)) (QCAR (CDR |b|))) 'T)
662                    (#1='T NIL)))))))
663         (COND
664          ((QEQCAR |a| 2)
665           (COND
666            ((QEQCAR |b| 2)
667             (EXIT
668              (COND
669               ((SPADCALL (QVELT (CDR |a|) 0) (QVELT (CDR |b|) 0)
670                          (QREFELT $ 17))
671                NIL)
672               (#1#
673                (SEQ
674                 (COND
675                  ((SPADCALL (QVELT (CDR |a|) 1) (QVELT (CDR |b|) 1)
676                             (QREFELT $ 13))
677                   (COND
678                    ((SPADCALL (QVELT (CDR |a|) 2) (QVELT (CDR |b|) 2)
679                               (QREFELT $ 13))
680                     (EXIT 'T)))))
681                 (EXIT NIL)))))))))
682         (COND
683          ((QEQCAR |a| 3)
684           (COND
685            ((QEQCAR |b| 3)
686             (EXIT
687              (NULL
688               (OR (SPADCALL (QCAR (CDR |a|)) (QCAR (CDR |b|)) (QREFELT $ 17))
689                   (NULL
690                    (SPADCALL (QCDR (CDR |a|)) (QCDR (CDR |b|))
691                              (QREFELT $ 13))))))))))
692         (EXIT NIL)))
693
694(SDEFUN |ILOGIC;parseBracketTerm|
695        ((|t1| |String|) (|pin| . #1=(|NonNegativeInteger|))
696         ($ |Record| (|:| |rft| $) (|:| |pout| (|NonNegativeInteger|))))
697        (SPROG
698         ((|p1| #1#) (#2=#:G662 NIL) (|ch| (|Character|)) (|trm| ($))
699          (|r2| (|Record| (|:| |rft| $) (|:| |pout| (|NonNegativeInteger|)))))
700         (SEQ
701          (EXIT
702           (SEQ (LETT |p1| |pin|) (LETT |trm| (SPADCALL (QREFELT $ 9)))
703                (LETT |ch| (STR_ELT1 |t1| |p1|))
704                (COND
705                 ((NULL (|eql_SI| |ch| (|STR_to_CHAR| "(")))
706                  (SEQ (|error| "bracket term must start with (")
707                       (EXIT
708                        (PROGN (LETT #2# (CONS |trm| |p1|)) (GO #3=#:G661))))))
709                (LETT |p1| (+ |p1| 1))
710                (COND
711                 ((> |p1| (SPADCALL |t1| (QREFELT $ 34)))
712                  (SEQ (|error| "opening but no closing bracket")
713                       (EXIT (PROGN (LETT #2# (CONS |trm| |p1|)) (GO #3#))))))
714                (LETT |r2| (SPADCALL |t1| |p1| (QREFELT $ 37)))
715                (LETT |trm| (QCAR |r2|)) (LETT |p1| (QCDR |r2|))
716                (LETT |ch| (STR_ELT1 |t1| |p1|))
717                (COND
718                 ((NULL (|eql_SI| |ch| (|STR_to_CHAR| ")")))
719                  (SEQ (|error| "can't find closing bracket")
720                       (EXIT (PROGN (LETT #2# (CONS |trm| |p1|)) (GO #3#))))))
721                (LETT |p1| (+ |p1| 1)) (EXIT (CONS |trm| |p1|))))
722          #3# (EXIT #2#))))
723
724(SDEFUN |ILOGIC;parseILand|
725        ((|t1| |String|) (|pin| . #1=(|NonNegativeInteger|)) (|firstTerm| $)
726         ($ |Record| (|:| |rft| $) (|:| |pout| (|NonNegativeInteger|))))
727        (SPROG
728         ((|p1| #1#) (|secondTerm| ($))
729          (|r| (|Record| (|:| |rft| $) (|:| |pout| (|NonNegativeInteger|))))
730          (#2=#:G669 NIL) (|ch| (|Character|)) (|trm| ($)) (|pt| #1#))
731         (SEQ
732          (EXIT
733           (SEQ (LETT |p1| |pin|) (LETT |pt| |pin|)
734                (LETT |trm| (SPADCALL (QREFELT $ 9)))
735                (LETT |ch| (STR_ELT1 |t1| |p1|))
736                (COND
737                 ((NULL (|eql_SI| |ch| (|STR_to_CHAR| "/")))
738                  (SEQ (|error| "expecting /\\")
739                       (EXIT
740                        (PROGN (LETT #2# (CONS |trm| |p1|)) (GO #3=#:G668))))))
741                (LETT |p1| (+ |p1| 1)) (LETT |ch| (STR_ELT1 |t1| |p1|))
742                (COND
743                 ((NULL (|eql_SI| |ch| (|STR_to_CHAR| "\\")))
744                  (SEQ (|error| "expecting /\\")
745                       (EXIT (PROGN (LETT #2# (CONS |trm| |p1|)) (GO #3#))))))
746                (LETT |p1| (+ |p1| 1))
747                (LETT |r| (SPADCALL |t1| |p1| (QREFELT $ 37)))
748                (LETT |secondTerm| (QCAR |r|)) (LETT |p1| (QCDR |r|))
749                (EXIT
750                 (CONS (SPADCALL |firstTerm| |secondTerm| (QREFELT $ 14))
751                       |p1|))))
752          #3# (EXIT #2#))))
753
754(SDEFUN |ILOGIC;parseILor|
755        ((|t1| |String|) (|pin| . #1=(|NonNegativeInteger|)) (|firstTerm| $)
756         ($ |Record| (|:| |rft| $) (|:| |pout| (|NonNegativeInteger|))))
757        (SPROG
758         ((|p1| #1#) (|secondTerm| ($))
759          (|r| (|Record| (|:| |rft| $) (|:| |pout| (|NonNegativeInteger|))))
760          (#2=#:G676 NIL) (|ch| (|Character|)) (|trm| ($)) (|pt| #1#))
761         (SEQ
762          (EXIT
763           (SEQ (LETT |p1| |pin|) (LETT |pt| |pin|)
764                (LETT |trm| (SPADCALL (QREFELT $ 9)))
765                (LETT |ch| (STR_ELT1 |t1| |p1|))
766                (COND
767                 ((NULL (|eql_SI| |ch| (|STR_to_CHAR| "\\")))
768                  (SEQ (|error| "expecting \\/")
769                       (EXIT
770                        (PROGN (LETT #2# (CONS |trm| |p1|)) (GO #3=#:G675))))))
771                (LETT |p1| (+ |p1| 1)) (LETT |ch| (STR_ELT1 |t1| |p1|))
772                (COND
773                 ((NULL (|eql_SI| |ch| (|STR_to_CHAR| "/")))
774                  (SEQ (|error| "expecting \\/")
775                       (EXIT (PROGN (LETT #2# (CONS |trm| |p1|)) (GO #3#))))))
776                (LETT |p1| (+ |p1| 1))
777                (LETT |r| (SPADCALL |t1| |p1| (QREFELT $ 37)))
778                (LETT |secondTerm| (QCAR |r|)) (LETT |p1| (QCDR |r|))
779                (EXIT
780                 (CONS (SPADCALL |firstTerm| |secondTerm| (QREFELT $ 15))
781                       |p1|))))
782          #3# (EXIT #2#))))
783
784(SDEFUN |ILOGIC;parseILfn|
785        ((|t1| |String|) (|pin| . #1=(|NonNegativeInteger|)) (|firstTerm| $)
786         ($ |Record| (|:| |rft| $) (|:| |pout| (|NonNegativeInteger|))))
787        (SPROG
788         ((|p1| #1#) (|secondTerm| ($))
789          (|r| (|Record| (|:| |rft| $) (|:| |pout| (|NonNegativeInteger|))))
790          (#2=#:G683 NIL) (|ch| (|Character|)) (|trm| ($)) (|pt| #1#))
791         (SEQ
792          (EXIT
793           (SEQ (LETT |p1| |pin|) (LETT |pt| |pin|)
794                (LETT |trm| (SPADCALL (QREFELT $ 9)))
795                (LETT |ch| (STR_ELT1 |t1| |p1|))
796                (COND
797                 ((NULL (|eql_SI| |ch| (|STR_to_CHAR| "-")))
798                  (SEQ (|error| "expecting ->")
799                       (EXIT
800                        (PROGN (LETT #2# (CONS |trm| |p1|)) (GO #3=#:G682))))))
801                (LETT |p1| (+ |p1| 1)) (LETT |ch| (STR_ELT1 |t1| |p1|))
802                (COND
803                 ((NULL (|eql_SI| |ch| (|STR_to_CHAR| ">")))
804                  (SEQ (|error| "expecting ->")
805                       (EXIT (PROGN (LETT #2# (CONS |trm| |p1|)) (GO #3#))))))
806                (LETT |p1| (+ |p1| 1))
807                (LETT |r| (SPADCALL |t1| |p1| (QREFELT $ 37)))
808                (LETT |secondTerm| (QCAR |r|)) (LETT |p1| (QCDR |r|))
809                (EXIT
810                 (CONS (SPADCALL |firstTerm| |secondTerm| (QREFELT $ 18))
811                       |p1|))))
812          #3# (EXIT #2#))))
813
814(SDEFUN |ILOGIC;parseILName|
815        ((|t1| |String|) (|pin| . #1=(|NonNegativeInteger|))
816         ($ |Record| (|:| |rft| $) (|:| |pout| (|NonNegativeInteger|))))
817        (SPROG
818         ((|ch| (|Character|)) (#2=#:G689 NIL) (|pt| #1#) (|vnm| (|String|)))
819         (SEQ
820          (EXIT
821           (SEQ (LETT |vnm| "") (LETT |pt| |pin|)
822                (LETT |ch| (STR_ELT1 |t1| |pt|))
823                (SEQ G190
824                     (COND ((NULL (SPADCALL |ch| (QREFELT $ 39))) (GO G191)))
825                     (SEQ (LETT |vnm| (SPADCALL |vnm| |ch| (QREFELT $ 40)))
826                          (LETT |pt| (+ |pt| 1))
827                          (COND
828                           ((> |pt| (SPADCALL |t1| (QREFELT $ 34)))
829                            (PROGN
830                             (LETT #2#
831                                   (CONS (SPADCALL |vnm| (QREFELT $ 8)) |pt|))
832                             (GO #3=#:G688))))
833                          (EXIT (LETT |ch| (STR_ELT1 |t1| |pt|))))
834                     NIL (GO G190) G191 (EXIT NIL))
835                (EXIT (CONS (SPADCALL |vnm| (QREFELT $ 8)) |pt|))))
836          #3# (EXIT #2#))))
837
838(SDEFUN |ILOGIC;parseILTerm;SNniR;23|
839        ((|t1| |String|) (|pin| |NonNegativeInteger|)
840         ($ |Record| (|:| |rft| $) (|:| |pout| (|NonNegativeInteger|))))
841        (SPROG
842         ((|p1| (|NonNegativeInteger|)) (|res| ($))
843          (|r| (|Record| (|:| |rft| $) (|:| |pout| (|NonNegativeInteger|))))
844          (|ch| (|Character|)) (#1=#:G706 NIL))
845         (SEQ
846          (EXIT
847           (SEQ (LETT |p1| |pin|) (LETT |res| (SPADCALL (QREFELT $ 9)))
848                (LETT |ch| (STR_ELT1 |t1| |p1|))
849                (SEQ G190
850                     (COND
851                      ((NULL (|eql_SI| |ch| (|STR_to_CHAR| " "))) (GO G191)))
852                     (SEQ (LETT |p1| (+ |p1| 1))
853                          (COND
854                           ((> |p1| (SPADCALL |t1| (QREFELT $ 34)))
855                            (PROGN
856                             (LETT #1# (CONS |res| |p1|))
857                             (GO #2=#:G705))))
858                          (EXIT (LETT |ch| (STR_ELT1 |t1| |p1|))))
859                     NIL (GO G190) G191 (EXIT NIL))
860                (LETT |r| (CONS |res| |p1|))
861                (COND
862                 ((SPADCALL |ch| (QREFELT $ 41))
863                  (LETT |r| (|ILOGIC;parseILName| |t1| |p1| $))))
864                (COND
865                 ((|eql_SI| |ch| (|STR_to_CHAR| "("))
866                  (LETT |r| (|ILOGIC;parseBracketTerm| |t1| |p1| $))))
867                (LETT |res| (QCAR |r|)) (LETT |p1| (QCDR |r|))
868                (COND
869                 ((> |p1| (SPADCALL |t1| (QREFELT $ 34)))
870                  (PROGN (LETT #1# (CONS |res| |p1|)) (GO #2#))))
871                (LETT |ch| (STR_ELT1 |t1| |p1|))
872                (COND
873                 ((|eql_SI| |ch| (|STR_to_CHAR| " "))
874                  (SEQ (LETT |p1| (+ |p1| 1))
875                       (EXIT
876                        (COND
877                         ((> |p1| (SPADCALL |t1| (QREFELT $ 34)))
878                          (PROGN (LETT #1# (CONS |res| |p1|)) (GO #2#))))))))
879                (LETT |ch| (STR_ELT1 |t1| |p1|))
880                (COND
881                 ((|eql_SI| |ch| (|STR_to_CHAR| "/"))
882                  (SEQ (LETT |r| (|ILOGIC;parseILand| |t1| |p1| |res| $))
883                       (LETT |res| (QCAR |r|)) (EXIT (LETT |p1| (QCDR |r|))))))
884                (COND
885                 ((|eql_SI| |ch| (|STR_to_CHAR| "\\"))
886                  (SEQ (LETT |r| (|ILOGIC;parseILor| |t1| |p1| |res| $))
887                       (LETT |res| (QCAR |r|)) (EXIT (LETT |p1| (QCDR |r|))))))
888                (COND
889                 ((|eql_SI| |ch| (|STR_to_CHAR| "-"))
890                  (SEQ (LETT |r| (|ILOGIC;parseILfn| |t1| |p1| |res| $))
891                       (LETT |res| (QCAR |r|)) (EXIT (LETT |p1| (QCDR |r|))))))
892                (EXIT (CONS |res| |p1|))))
893          #2# (EXIT #1#))))
894
895(SDEFUN |ILOGIC;parseIL2;SNniR;24|
896        ((|t1| |String|) (|pin| |NonNegativeInteger|)
897         ($ |Record| (|:| |rft| $) (|:| |pout| (|NonNegativeInteger|))))
898        (SPROG
899         ((|p1| (|NonNegativeInteger|)) (|res| ($))
900          (|r| (|Record| (|:| |rft| $) (|:| |pout| (|NonNegativeInteger|))))
901          (|ch| (|Character|)) (#1=#:G714 NIL))
902         (SEQ
903          (EXIT
904           (SEQ (LETT |p1| |pin|) (LETT |res| (SPADCALL (QREFELT $ 9)))
905                (LETT |ch| (STR_ELT1 |t1| |p1|))
906                (SEQ G190
907                     (COND
908                      ((NULL (|eql_SI| |ch| (|STR_to_CHAR| " "))) (GO G191)))
909                     (SEQ (LETT |p1| (+ |p1| 1))
910                          (COND
911                           ((> |p1| (SPADCALL |t1| (QREFELT $ 34)))
912                            (PROGN
913                             (LETT #1# (CONS |res| |p1|))
914                             (GO #2=#:G713))))
915                          (EXIT (LETT |ch| (STR_ELT1 |t1| |p1|))))
916                     NIL (GO G190) G191 (EXIT NIL))
917                (LETT |r| (CONS |res| |p1|))
918                (COND
919                 ((SPADCALL |ch| (QREFELT $ 41))
920                  (LETT |r| (|ILOGIC;parseILName| |t1| |p1| $))))
921                (COND
922                 ((|eql_SI| |ch| (|STR_to_CHAR| "("))
923                  (LETT |r| (|ILOGIC;parseBracketTerm| |t1| |p1| $))))
924                (LETT |res| (QCAR |r|)) (LETT |p1| (QCDR |r|))
925                (EXIT (CONS |res| |p1|))))
926          #2# (EXIT #1#))))
927
928(SDEFUN |ILOGIC;parseIL;S$;25| ((|t1| |String|) ($ $))
929        (SPROG
930         ((|r| (|Record| (|:| |rft| $) (|:| |pout| (|NonNegativeInteger|))))
931          (#1=#:G715 NIL))
932         (SEQ
933          (LETT |r|
934                (SPADCALL |t1|
935                          (PROG1 (LETT #1# (SPADCALL |t1| (QREFELT $ 43)))
936                            (|check_subtype2| (>= #1# 0)
937                                              '(|NonNegativeInteger|)
938                                              '(|Integer|) #1#))
939                          (QREFELT $ 37)))
940          (EXIT (QCAR |r|)))))
941
942(SDEFUN |ILOGIC;toString;$S;26| ((|n| $) ($ |String|))
943        (SPROG ((#1=#:G734 NIL) (#2=#:G474 NIL) (|s1| (|String|)))
944               (SEQ
945                (EXIT
946                 (SEQ
947                  (COND
948                   ((QEQCAR |n| 0)
949                    (SEQ
950                     (COND
951                      ((EQUAL (QCAR (CDR |n|)) 'F)
952                       (PROGN (LETT #1# "_|_") (GO #3=#:G733))))
953                     (COND
954                      ((EQUAL (QCAR (CDR |n|)) 'T)
955                       (PROGN (LETT #1# "T") (GO #3#))))
956                     (EXIT (PROGN (LETT #1# "?") (GO #3#))))))
957                  (COND
958                   ((QEQCAR |n| 1)
959                    (PROGN (LETT #1# (QCAR (CDR |n|))) (GO #3#))))
960                  (COND
961                   ((QEQCAR |n| 2)
962                    (SEQ (LETT |s1| "->")
963                         (COND
964                          ((EQUAL
965                            (QVELT
966                             (PROG2 (LETT #2# |n|)
967                                 (QCDR #2#)
968                               (|check_union2| (QEQCAR #2# 2)
969                                               (|Record| (|:| |typ| (|Symbol|))
970                                                         (|:| |c1| $)
971                                                         (|:| |c2| $))
972                                               (|Union|
973                                                (|:| |const|
974                                                     (|Record|
975                                                      (|:| |val| (|Symbol|))))
976                                                (|:| |var|
977                                                     (|Record|
978                                                      (|:| |str| (|String|))))
979                                                (|:| |binaryOp|
980                                                     (|Record|
981                                                      (|:| |typ| (|Symbol|))
982                                                      (|:| |c1| $)
983                                                      (|:| |c2| $)))
984                                                (|:| |unaryOp|
985                                                     (|Record|
986                                                      (|:| |typ| (|Symbol|))
987                                                      (|:| |c1| $))))
988                                               #2#))
989                             0)
990                            'AND)
991                           (LETT |s1| "/\\")))
992                         (COND
993                          ((EQUAL
994                            (QVELT
995                             (PROG2 (LETT #2# |n|)
996                                 (QCDR #2#)
997                               (|check_union2| (QEQCAR #2# 2)
998                                               (|Record| (|:| |typ| (|Symbol|))
999                                                         (|:| |c1| $)
1000                                                         (|:| |c2| $))
1001                                               (|Union|
1002                                                (|:| |const|
1003                                                     (|Record|
1004                                                      (|:| |val| (|Symbol|))))
1005                                                (|:| |var|
1006                                                     (|Record|
1007                                                      (|:| |str| (|String|))))
1008                                                (|:| |binaryOp|
1009                                                     (|Record|
1010                                                      (|:| |typ| (|Symbol|))
1011                                                      (|:| |c1| $)
1012                                                      (|:| |c2| $)))
1013                                                (|:| |unaryOp|
1014                                                     (|Record|
1015                                                      (|:| |typ| (|Symbol|))
1016                                                      (|:| |c1| $))))
1017                                               #2#))
1018                             0)
1019                            'OR)
1020                           (LETT |s1| "\\/")))
1021                         (EXIT
1022                          (PROGN
1023                           (LETT #1#
1024                                 (SPADCALL
1025                                  (LIST "("
1026                                        (SPADCALL
1027                                         (QVELT
1028                                          (PROG2 (LETT #2# |n|)
1029                                              (QCDR #2#)
1030                                            (|check_union2| (QEQCAR #2# 2)
1031                                                            (|Record|
1032                                                             (|:| |typ|
1033                                                                  (|Symbol|))
1034                                                             (|:| |c1| $)
1035                                                             (|:| |c2| $))
1036                                                            (|Union|
1037                                                             (|:| |const|
1038                                                                  (|Record|
1039                                                                   (|:| |val|
1040                                                                        (|Symbol|))))
1041                                                             (|:| |var|
1042                                                                  (|Record|
1043                                                                   (|:| |str|
1044                                                                        (|String|))))
1045                                                             (|:| |binaryOp|
1046                                                                  (|Record|
1047                                                                   (|:| |typ|
1048                                                                        (|Symbol|))
1049                                                                   (|:| |c1| $)
1050                                                                   (|:| |c2|
1051                                                                        $)))
1052                                                             (|:| |unaryOp|
1053                                                                  (|Record|
1054                                                                   (|:| |typ|
1055                                                                        (|Symbol|))
1056                                                                   (|:| |c1|
1057                                                                        $))))
1058                                                            #2#))
1059                                          1)
1060                                         (QREFELT $ 45))
1061                                        |s1|
1062                                        (SPADCALL
1063                                         (QVELT
1064                                          (PROG2 (LETT #2# |n|)
1065                                              (QCDR #2#)
1066                                            (|check_union2| (QEQCAR #2# 2)
1067                                                            (|Record|
1068                                                             (|:| |typ|
1069                                                                  (|Symbol|))
1070                                                             (|:| |c1| $)
1071                                                             (|:| |c2| $))
1072                                                            (|Union|
1073                                                             (|:| |const|
1074                                                                  (|Record|
1075                                                                   (|:| |val|
1076                                                                        (|Symbol|))))
1077                                                             (|:| |var|
1078                                                                  (|Record|
1079                                                                   (|:| |str|
1080                                                                        (|String|))))
1081                                                             (|:| |binaryOp|
1082                                                                  (|Record|
1083                                                                   (|:| |typ|
1084                                                                        (|Symbol|))
1085                                                                   (|:| |c1| $)
1086                                                                   (|:| |c2|
1087                                                                        $)))
1088                                                             (|:| |unaryOp|
1089                                                                  (|Record|
1090                                                                   (|:| |typ|
1091                                                                        (|Symbol|))
1092                                                                   (|:| |c1|
1093                                                                        $))))
1094                                                            #2#))
1095                                          2)
1096                                         (QREFELT $ 45))
1097                                        ")")
1098                                  (QREFELT $ 46)))
1099                           (GO #3#))))))
1100                  (COND
1101                   ((QEQCAR |n| 3)
1102                    (PROGN
1103                     (LETT #1#
1104                           (SPADCALL
1105                            (LIST "~("
1106                                  (SPADCALL (QCDR (CDR |n|)) (QREFELT $ 45))
1107                                  ")")
1108                            (QREFELT $ 46)))
1109                     (GO #3#))))
1110                  (EXIT (|error| "toString: unexpected representation"))))
1111                #3# (EXIT #1#))))
1112
1113(SDEFUN |ILOGIC;toStringUnwrapped;$S;27| ((|n| $) ($ |String|))
1114        (SPROG ((#1=#:G751 NIL) (#2=#:G474 NIL) (|s1| (|String|)))
1115               (SEQ
1116                (EXIT
1117                 (SEQ
1118                  (COND
1119                   ((QEQCAR |n| 0)
1120                    (SEQ
1121                     (COND
1122                      ((EQUAL (QCAR (CDR |n|)) 'F)
1123                       (PROGN (LETT #1# "_|_") (GO #3=#:G750))))
1124                     (COND
1125                      ((EQUAL (QCAR (CDR |n|)) 'T)
1126                       (PROGN (LETT #1# "T") (GO #3#))))
1127                     (EXIT (PROGN (LETT #1# "?") (GO #3#))))))
1128                  (COND
1129                   ((QEQCAR |n| 1)
1130                    (PROGN (LETT #1# (QCAR (CDR |n|))) (GO #3#))))
1131                  (COND
1132                   ((QEQCAR |n| 2)
1133                    (SEQ (LETT |s1| "->")
1134                         (COND
1135                          ((EQUAL
1136                            (QVELT
1137                             (PROG2 (LETT #2# |n|)
1138                                 (QCDR #2#)
1139                               (|check_union2| (QEQCAR #2# 2)
1140                                               (|Record| (|:| |typ| (|Symbol|))
1141                                                         (|:| |c1| $)
1142                                                         (|:| |c2| $))
1143                                               (|Union|
1144                                                (|:| |const|
1145                                                     (|Record|
1146                                                      (|:| |val| (|Symbol|))))
1147                                                (|:| |var|
1148                                                     (|Record|
1149                                                      (|:| |str| (|String|))))
1150                                                (|:| |binaryOp|
1151                                                     (|Record|
1152                                                      (|:| |typ| (|Symbol|))
1153                                                      (|:| |c1| $)
1154                                                      (|:| |c2| $)))
1155                                                (|:| |unaryOp|
1156                                                     (|Record|
1157                                                      (|:| |typ| (|Symbol|))
1158                                                      (|:| |c1| $))))
1159                                               #2#))
1160                             0)
1161                            'AND)
1162                           (LETT |s1| "/\\")))
1163                         (COND
1164                          ((EQUAL
1165                            (QVELT
1166                             (PROG2 (LETT #2# |n|)
1167                                 (QCDR #2#)
1168                               (|check_union2| (QEQCAR #2# 2)
1169                                               (|Record| (|:| |typ| (|Symbol|))
1170                                                         (|:| |c1| $)
1171                                                         (|:| |c2| $))
1172                                               (|Union|
1173                                                (|:| |const|
1174                                                     (|Record|
1175                                                      (|:| |val| (|Symbol|))))
1176                                                (|:| |var|
1177                                                     (|Record|
1178                                                      (|:| |str| (|String|))))
1179                                                (|:| |binaryOp|
1180                                                     (|Record|
1181                                                      (|:| |typ| (|Symbol|))
1182                                                      (|:| |c1| $)
1183                                                      (|:| |c2| $)))
1184                                                (|:| |unaryOp|
1185                                                     (|Record|
1186                                                      (|:| |typ| (|Symbol|))
1187                                                      (|:| |c1| $))))
1188                                               #2#))
1189                             0)
1190                            'OR)
1191                           (LETT |s1| "\\/")))
1192                         (EXIT
1193                          (PROGN
1194                           (LETT #1#
1195                                 (SPADCALL
1196                                  (LIST
1197                                   (SPADCALL
1198                                    (QVELT
1199                                     (PROG2 (LETT #2# |n|)
1200                                         (QCDR #2#)
1201                                       (|check_union2| (QEQCAR #2# 2)
1202                                                       (|Record|
1203                                                        (|:| |typ| (|Symbol|))
1204                                                        (|:| |c1| $)
1205                                                        (|:| |c2| $))
1206                                                       (|Union|
1207                                                        (|:| |const|
1208                                                             (|Record|
1209                                                              (|:| |val|
1210                                                                   (|Symbol|))))
1211                                                        (|:| |var|
1212                                                             (|Record|
1213                                                              (|:| |str|
1214                                                                   (|String|))))
1215                                                        (|:| |binaryOp|
1216                                                             (|Record|
1217                                                              (|:| |typ|
1218                                                                   (|Symbol|))
1219                                                              (|:| |c1| $)
1220                                                              (|:| |c2| $)))
1221                                                        (|:| |unaryOp|
1222                                                             (|Record|
1223                                                              (|:| |typ|
1224                                                                   (|Symbol|))
1225                                                              (|:| |c1| $))))
1226                                                       #2#))
1227                                     1)
1228                                    (QREFELT $ 45))
1229                                   |s1|
1230                                   (SPADCALL
1231                                    (QVELT
1232                                     (PROG2 (LETT #2# |n|)
1233                                         (QCDR #2#)
1234                                       (|check_union2| (QEQCAR #2# 2)
1235                                                       (|Record|
1236                                                        (|:| |typ| (|Symbol|))
1237                                                        (|:| |c1| $)
1238                                                        (|:| |c2| $))
1239                                                       (|Union|
1240                                                        (|:| |const|
1241                                                             (|Record|
1242                                                              (|:| |val|
1243                                                                   (|Symbol|))))
1244                                                        (|:| |var|
1245                                                             (|Record|
1246                                                              (|:| |str|
1247                                                                   (|String|))))
1248                                                        (|:| |binaryOp|
1249                                                             (|Record|
1250                                                              (|:| |typ|
1251                                                                   (|Symbol|))
1252                                                              (|:| |c1| $)
1253                                                              (|:| |c2| $)))
1254                                                        (|:| |unaryOp|
1255                                                             (|Record|
1256                                                              (|:| |typ|
1257                                                                   (|Symbol|))
1258                                                              (|:| |c1| $))))
1259                                                       #2#))
1260                                     2)
1261                                    (QREFELT $ 45)))
1262                                  (QREFELT $ 46)))
1263                           (GO #3#))))))
1264                  (COND
1265                   ((QEQCAR |n| 3)
1266                    (PROGN
1267                     (LETT #1#
1268                           (SPADCALL
1269                            (LIST "~("
1270                                  (SPADCALL (QCDR (CDR |n|)) (QREFELT $ 45))
1271                                  ")")
1272                            (QREFELT $ 46)))
1273                     (GO #3#))))
1274                  (EXIT
1275                   (|error| "toStringUnwrapped: unexpected representation"))))
1276                #3# (EXIT #1#))))
1277
1278(SDEFUN |ILOGIC;coerce;$Of;28| ((|n| $) ($ |OutputForm|))
1279        (SPROG
1280         ((#1=#:G475 NIL) (#2=#:G474 NIL) (|s1| (|OutputForm|))
1281          (#3=#:G473 NIL))
1282         (SEQ
1283          (COND
1284           ((QEQCAR |n| 0)
1285            (COND ((EQUAL (QCAR (CDR |n|)) 'F) (SPADCALL "_|_" (QREFELT $ 49)))
1286                  ((EQUAL (QCAR (CDR |n|)) 'T) (SPADCALL "T" (QREFELT $ 49)))
1287                  (#4='T (SPADCALL "?" (QREFELT $ 49)))))
1288           ((QEQCAR |n| 1)
1289            (SPADCALL
1290             (QCAR
1291              (PROG2 (LETT #3# |n|)
1292                  (QCDR #3#)
1293                (|check_union2| (QEQCAR #3# 1)
1294                                (|Record| (|:| |str| (|String|)))
1295                                (|Union|
1296                                 (|:| |const|
1297                                      (|Record| (|:| |val| (|Symbol|))))
1298                                 (|:| |var| (|Record| (|:| |str| (|String|))))
1299                                 (|:| |binaryOp|
1300                                      (|Record| (|:| |typ| (|Symbol|))
1301                                                (|:| |c1| $) (|:| |c2| $)))
1302                                 (|:| |unaryOp|
1303                                      (|Record| (|:| |typ| (|Symbol|))
1304                                                (|:| |c1| $))))
1305                                #3#)))
1306             (QREFELT $ 49)))
1307           ((QEQCAR |n| 2)
1308            (SEQ (LETT |s1| (SPADCALL "->" (QREFELT $ 49)))
1309                 (COND
1310                  ((EQUAL
1311                    (QVELT
1312                     (PROG2 (LETT #2# |n|)
1313                         (QCDR #2#)
1314                       (|check_union2| (QEQCAR #2# 2)
1315                                       (|Record| (|:| |typ| (|Symbol|))
1316                                                 (|:| |c1| $) (|:| |c2| $))
1317                                       (|Union|
1318                                        (|:| |const|
1319                                             (|Record| (|:| |val| (|Symbol|))))
1320                                        (|:| |var|
1321                                             (|Record| (|:| |str| (|String|))))
1322                                        (|:| |binaryOp|
1323                                             (|Record| (|:| |typ| (|Symbol|))
1324                                                       (|:| |c1| $)
1325                                                       (|:| |c2| $)))
1326                                        (|:| |unaryOp|
1327                                             (|Record| (|:| |typ| (|Symbol|))
1328                                                       (|:| |c1| $))))
1329                                       #2#))
1330                     0)
1331                    'AND)
1332                   (LETT |s1| (SPADCALL "/\\" (QREFELT $ 49)))))
1333                 (COND
1334                  ((EQUAL
1335                    (QVELT
1336                     (PROG2 (LETT #2# |n|)
1337                         (QCDR #2#)
1338                       (|check_union2| (QEQCAR #2# 2)
1339                                       (|Record| (|:| |typ| (|Symbol|))
1340                                                 (|:| |c1| $) (|:| |c2| $))
1341                                       (|Union|
1342                                        (|:| |const|
1343                                             (|Record| (|:| |val| (|Symbol|))))
1344                                        (|:| |var|
1345                                             (|Record| (|:| |str| (|String|))))
1346                                        (|:| |binaryOp|
1347                                             (|Record| (|:| |typ| (|Symbol|))
1348                                                       (|:| |c1| $)
1349                                                       (|:| |c2| $)))
1350                                        (|:| |unaryOp|
1351                                             (|Record| (|:| |typ| (|Symbol|))
1352                                                       (|:| |c1| $))))
1353                                       #2#))
1354                     0)
1355                    'OR)
1356                   (LETT |s1| (SPADCALL "\\/" (QREFELT $ 49)))))
1357                 (EXIT
1358                  (SPADCALL
1359                   (SPADCALL |s1|
1360                             (SPADCALL
1361                              (QVELT
1362                               (PROG2 (LETT #2# |n|)
1363                                   (QCDR #2#)
1364                                 (|check_union2| (QEQCAR #2# 2)
1365                                                 (|Record|
1366                                                  (|:| |typ| (|Symbol|))
1367                                                  (|:| |c1| $) (|:| |c2| $))
1368                                                 (|Union|
1369                                                  (|:| |const|
1370                                                       (|Record|
1371                                                        (|:| |val|
1372                                                             (|Symbol|))))
1373                                                  (|:| |var|
1374                                                       (|Record|
1375                                                        (|:| |str|
1376                                                             (|String|))))
1377                                                  (|:| |binaryOp|
1378                                                       (|Record|
1379                                                        (|:| |typ| (|Symbol|))
1380                                                        (|:| |c1| $)
1381                                                        (|:| |c2| $)))
1382                                                  (|:| |unaryOp|
1383                                                       (|Record|
1384                                                        (|:| |typ| (|Symbol|))
1385                                                        (|:| |c1| $))))
1386                                                 #2#))
1387                               1)
1388                              (QREFELT $ 50))
1389                             (SPADCALL
1390                              (QVELT
1391                               (PROG2 (LETT #2# |n|)
1392                                   (QCDR #2#)
1393                                 (|check_union2| (QEQCAR #2# 2)
1394                                                 (|Record|
1395                                                  (|:| |typ| (|Symbol|))
1396                                                  (|:| |c1| $) (|:| |c2| $))
1397                                                 (|Union|
1398                                                  (|:| |const|
1399                                                       (|Record|
1400                                                        (|:| |val|
1401                                                             (|Symbol|))))
1402                                                  (|:| |var|
1403                                                       (|Record|
1404                                                        (|:| |str|
1405                                                             (|String|))))
1406                                                  (|:| |binaryOp|
1407                                                       (|Record|
1408                                                        (|:| |typ| (|Symbol|))
1409                                                        (|:| |c1| $)
1410                                                        (|:| |c2| $)))
1411                                                  (|:| |unaryOp|
1412                                                       (|Record|
1413                                                        (|:| |typ| (|Symbol|))
1414                                                        (|:| |c1| $))))
1415                                                 #2#))
1416                               2)
1417                              (QREFELT $ 50))
1418                             (QREFELT $ 51))
1419                   (QREFELT $ 52)))))
1420           ((QEQCAR |n| 3)
1421            (SPADCALL
1422             (LIST (SPADCALL "~(" (QREFELT $ 49))
1423                   (SPADCALL
1424                    (QCDR
1425                     (PROG2 (LETT #1# |n|)
1426                         (QCDR #1#)
1427                       (|check_union2| (QEQCAR #1# 3)
1428                                       (|Record| (|:| |typ| (|Symbol|))
1429                                                 (|:| |c1| $))
1430                                       (|Union|
1431                                        (|:| |const|
1432                                             (|Record| (|:| |val| (|Symbol|))))
1433                                        (|:| |var|
1434                                             (|Record| (|:| |str| (|String|))))
1435                                        (|:| |binaryOp|
1436                                             (|Record| (|:| |typ| (|Symbol|))
1437                                                       (|:| |c1| $)
1438                                                       (|:| |c2| $)))
1439                                        (|:| |unaryOp|
1440                                             (|Record| (|:| |typ| (|Symbol|))
1441                                                       (|:| |c1| $))))
1442                                       #1#)))
1443                    (QREFELT $ 50))
1444                   (SPADCALL ")" (QREFELT $ 49)))
1445             (QREFELT $ 53)))
1446           (#4# (|error| "coerce: unexpected representation"))))))
1447
1448(DECLAIM (NOTINLINE |ILogic;|))
1449
1450(DEFUN |ILogic| ()
1451  (SPROG NIL
1452         (PROG (#1=#:G767)
1453           (RETURN
1454            (COND
1455             ((LETT #1# (HGET |$ConstructorCache| '|ILogic|))
1456              (|CDRwithIncrement| (CDAR #1#)))
1457             ('T
1458              (UNWIND-PROTECT
1459                  (PROG1
1460                      (CDDAR
1461                       (HPUT |$ConstructorCache| '|ILogic|
1462                             (LIST (CONS NIL (CONS 1 (|ILogic;|))))))
1463                    (LETT #1# T))
1464                (COND ((NOT #1#) (HREM |$ConstructorCache| '|ILogic|))))))))))
1465
1466(DEFUN |ILogic;| ()
1467  (SPROG ((|dv$| NIL) ($ NIL) (|pv$| NIL))
1468         (PROGN
1469          (LETT |dv$| '(|ILogic|))
1470          (LETT $ (GETREFV 56))
1471          (QSETREFV $ 0 |dv$|)
1472          (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL)))
1473          (|haddProp| |$ConstructorCache| '|ILogic| NIL (CONS 1 $))
1474          (|stuffDomainSlots| $)
1475          (SETF |pv$| (QREFELT $ 3))
1476          (QSETREFV $ 6
1477                    (|Union| (|:| |const| (|Record| (|:| |val| (|Symbol|))))
1478                             (|:| |var| (|Record| (|:| |str| (|String|))))
1479                             (|:| |binaryOp|
1480                                  (|Record| (|:| |typ| (|Symbol|)) (|:| |c1| $)
1481                                            (|:| |c2| $)))
1482                             (|:| |unaryOp|
1483                                  (|Record| (|:| |typ| (|Symbol|))
1484                                            (|:| |c1| $)))))
1485          $)))
1486
1487(MAKEPROP '|ILogic| '|infovec|
1488          (LIST
1489           '#(NIL NIL NIL NIL NIL NIL '|Rep| (|String|)
1490              |ILOGIC;proposition;S$;1| |ILOGIC;logicT;$;2| |ILOGIC;logicF;$;3|
1491              |ILOGIC;~;2$;4| (|Boolean|) |ILOGIC;=;2$B;17| |ILOGIC;/\\;3$;5|
1492              |ILOGIC;\\/;3$;6| (|Symbol|) (0 . ~=) |ILOGIC;implies;3$;7|
1493              |ILOGIC;redux;2$;8| (|List| $) |ILOGIC;getChildren;$L;16|
1494              (|List| $$) (6 . |first|) |ILOGIC;factor;$L;9| (11 . |second|)
1495              (16 . |concat|) (22 . |concat|) (28 . |empty?|)
1496              |ILOGIC;deductions;2L;12| |ILOGIC;opType;$S;13|
1497              |ILOGIC;atom?;$B;14| |ILOGIC;value;$S;15| (|Integer|)
1498              (33 . |maxIndex|) (|Record| (|:| |rft| $) (|:| |pout| 36))
1499              (|NonNegativeInteger|) |ILOGIC;parseILTerm;SNniR;23|
1500              (|Character|) (38 . |alphanumeric?|) (43 . |concat|)
1501              (49 . |alphabetic?|) |ILOGIC;parseIL2;SNniR;24| (54 . |minIndex|)
1502              |ILOGIC;parseIL;S$;25| |ILOGIC;toString;$S;26| (59 . |concat|)
1503              |ILOGIC;toStringUnwrapped;$S;27| (|OutputForm|) (64 . |message|)
1504              |ILOGIC;coerce;$Of;28| (69 . |infix|) (76 . |paren|)
1505              (81 . |hconcat|) (|HashState|) (|SingleInteger|))
1506           '#(~= 86 ~ 92 |value| 97 |toStringUnwrapped| 102 |toString| 107
1507              |redux| 112 |proposition| 117 |parseILTerm| 122 |parseIL2| 128
1508              |parseIL| 134 |opType| 139 |logicT| 144 |logicF| 148 |latex| 152
1509              |implies| 157 |hashUpdate!| 163 |hash| 169 |getChildren| 174
1510              |factor| 179 |deductions| 184 |coerce| 189 |atom?| 194 |_\|_| 199
1511              |\\/| 203 T$ 209 = 213 |/\\| 219)
1512           'NIL
1513           (CONS (|makeByteWordVec2| 1 '(0 0 0 0 0 0 0 0))
1514                 (CONS '#(NIL NIL NIL NIL NIL |SetCategory&| |BasicType&| NIL)
1515                       (CONS
1516                        '#((|BoundedLattice|) (|BoundedMeetSemilattice|)
1517                           (|BoundedJoinSemilattice|) (|MeetSemilattice|)
1518                           (|JoinSemilattice|) (|SetCategory|) (|BasicType|)
1519                           (|CoercibleTo| 48))
1520                        (|makeByteWordVec2| 55
1521                                            '(2 16 12 0 0 17 1 22 2 0 23 1 22 2
1522                                              0 25 2 22 0 0 0 26 2 22 0 0 2 27
1523                                              1 22 12 0 28 1 7 33 0 34 1 38 12
1524                                              0 39 2 7 0 0 38 40 1 38 12 0 41 1
1525                                              7 33 0 43 1 7 0 20 46 1 48 0 7 49
1526                                              3 48 0 0 0 0 51 1 48 0 0 52 1 48
1527                                              0 20 53 2 0 12 0 0 1 1 0 0 0 11 1
1528                                              0 16 0 32 1 0 7 0 47 1 0 7 0 45 1
1529                                              0 0 0 19 1 0 0 7 8 2 0 35 7 36 37
1530                                              2 0 35 7 36 42 1 0 0 7 44 1 0 16
1531                                              0 30 0 0 0 9 0 0 0 10 1 0 7 0 1 2
1532                                              0 0 0 0 18 2 0 54 54 0 1 1 0 55 0
1533                                              1 1 0 20 0 21 1 0 20 0 24 1 0 20
1534                                              20 29 1 0 48 0 50 1 0 12 0 31 0 0
1535                                              0 1 2 0 0 0 0 15 0 0 0 1 2 0 12 0
1536                                              0 13 2 0 0 0 0 14)))))
1537           '|lookupComplete|))
1538
1539(MAKEPROP '|ILogic| 'NILADIC T)
1540