1(IN-PACKAGE "ACL2")
2
3(DEFUN IFF (P Q) (IF P (IF Q 'T 'NIL) (IF Q 'NIL 'T)))
4
5(DEFUN XOR (P Q) (IF P (IF Q 'NIL 'T) (IF Q 'T 'NIL)))
6
7(DEFUN BOOLEANP (X) (IF (EQUAL X 'T) 'T (EQUAL X 'NIL)))
8
9(DEFTHM IFF-IS-AN-EQUIVALENCE
10        (IF (BOOLEANP (IFF X Y))
11            (IF (IFF X X)
12                (IF (IMPLIES (IFF X Y) (IFF Y X))
13                    (IMPLIES (IF (IFF X Y) (IFF Y Z) 'NIL)
14                             (IFF X Z))
15                    'NIL)
16                'NIL)
17            'NIL))
18
19(DEFUN IMPLIES (P Q) (IF P (IF Q 'T 'NIL) 'T))
20
21(DEFTHM IFF-IMPLIES-EQUAL-IMPLIES-1
22        (IMPLIES (IFF Y Y-EQUIV)
23                 (EQUAL (IMPLIES X Y)
24                        (IMPLIES X Y-EQUIV))))
25
26(DEFTHM IFF-IMPLIES-EQUAL-IMPLIES-2
27        (IMPLIES (IFF X X-EQUIV)
28                 (EQUAL (IMPLIES X Y)
29                        (IMPLIES X-EQUIV Y))))
30
31(DEFUN NOT (P) (IF P 'NIL 'T))
32
33(DEFTHM IFF-IMPLIES-EQUAL-NOT
34        (IMPLIES (IFF X X-EQUIV)
35                 (EQUAL (NOT X) (NOT X-EQUIV))))
36
37(DEFUN HIDE (X) X)
38
39(DEFUN REWRITE-EQUIV (X) X)
40
41(DEFUN EQ (X Y) (EQUAL X Y))
42
43(DEFUN TRUE-LISTP (X) (IF (CONSP X) (TRUE-LISTP (CDR X)) (EQ X 'NIL)))
44
45(DEFUN LIST-MACRO (LST)
46       (IF (CONSP LST)
47           (CONS 'CONS
48                 (CONS (CAR LST)
49                       (CONS (LIST-MACRO (CDR LST)) 'NIL)))
50           'NIL))
51
52(DEFUN AND-MACRO (LST)
53       (IF (CONSP LST)
54           (IF (CONSP (CDR LST))
55               (CONS 'IF
56                     (CONS (CAR LST)
57                           (CONS (AND-MACRO (CDR LST))
58                                 (CONS 'NIL 'NIL))))
59               (CAR LST))
60           'T))
61
62(DEFUN OR-MACRO (LST)
63       (IF (CONSP LST)
64           (IF (CONSP (CDR LST))
65               (CONS 'IF
66                     (CONS (CAR LST)
67                           (CONS (CAR LST)
68                                 (CONS (OR-MACRO (CDR LST)) 'NIL))))
69               (CAR LST))
70           'NIL))
71
72(DEFTHM BOOLEANP-COMPOUND-RECOGNIZER
73        (EQUAL (BOOLEANP X)
74               (IF (EQUAL X 'T)
75                   (EQUAL X 'T)
76                   (EQUAL X 'NIL))))
77
78(DEFUN INTEGER-ABS (X) (IF (INTEGERP X) (IF (< X '0) (UNARY-- X) X) '0))
79
80(DEFUN XXXJOIN (FN ARGS)
81       (IF (CDR (CDR ARGS))
82           (CONS FN
83                 (CONS (CAR ARGS)
84                       (CONS (XXXJOIN FN (CDR ARGS)) 'NIL)))
85           (CONS FN ARGS)))
86
87(DEFUN LEN (X) (IF (CONSP X) (BINARY-+ '1 (LEN (CDR X))) '0))
88
89(DEFUN LENGTH (X) (IF (STRINGP X) (LEN (COERCE X 'LIST)) (LEN X)))
90
91(DEFUN ACL2-COUNT (X)
92       (IF (CONSP X)
93           (BINARY-+ '1
94                     (BINARY-+ (ACL2-COUNT (CAR X))
95                               (ACL2-COUNT (CDR X))))
96           (IF (RATIONALP X)
97               (IF (INTEGERP X)
98                   (INTEGER-ABS X)
99                   (BINARY-+ (INTEGER-ABS (NUMERATOR X))
100                             (DENOMINATOR X)))
101               (IF (COMPLEX-RATIONALP X)
102                   (BINARY-+ '1
103                             (BINARY-+ (ACL2-COUNT (REALPART X))
104                                       (ACL2-COUNT (IMAGPART X))))
105                   (IF (STRINGP X) (LENGTH X) '0)))))
106
107(DEFUN COND-CLAUSESP (CLAUSES)
108       (IF (CONSP CLAUSES)
109           (IF (CONSP (CAR CLAUSES))
110               (IF (TRUE-LISTP (CAR CLAUSES))
111                   (IF (< (LEN (CAR CLAUSES)) '3)
112                       (COND-CLAUSESP (CDR CLAUSES))
113                       'NIL)
114                   'NIL)
115               'NIL)
116           (EQ CLAUSES 'NIL)))
117
118(DEFUN COND-MACRO (CLAUSES)
119       (IF (CONSP CLAUSES)
120           (IF (IF (EQ (CAR (CAR CLAUSES)) 'T)
121                   (EQ (CDR CLAUSES) 'NIL)
122                   'NIL)
123               (IF (CDR (CAR CLAUSES))
124                   (CAR (CDR (CAR CLAUSES)))
125                   (CAR (CAR CLAUSES)))
126               (IF (CDR (CAR CLAUSES))
127                   (CONS 'IF
128                         (CONS (CAR (CAR CLAUSES))
129                               (CONS (CAR (CDR (CAR CLAUSES)))
130                                     (CONS (COND-MACRO (CDR CLAUSES))
131                                           'NIL))))
132                   (CONS 'OR
133                         (CONS (CAR (CAR CLAUSES))
134                               (CONS (COND-MACRO (CDR CLAUSES))
135                                     'NIL)))))
136           'NIL))
137
138(DEFUN EQLABLEP (X)
139       (IF (ACL2-NUMBERP X)
140           (ACL2-NUMBERP X)
141           (IF (SYMBOLP X)
142               (SYMBOLP X)
143               (CHARACTERP X))))
144
145(DEFTHM EQLABLEP-RECOG
146        (EQUAL (EQLABLEP X)
147               (IF (ACL2-NUMBERP X)
148                   (ACL2-NUMBERP X)
149                   (IF (SYMBOLP X)
150                       (SYMBOLP X)
151                       (CHARACTERP X)))))
152
153(DEFUN EQLABLE-LISTP (L)
154       (IF (CONSP L)
155           (IF (EQLABLEP (CAR L))
156               (EQLABLE-LISTP (CDR L))
157               'NIL)
158           (EQUAL L 'NIL)))
159
160(DEFUN ATOM (X) (NOT (CONSP X)))
161
162(DEFUN MAKE-CHARACTER-LIST (X)
163       (IF (ATOM X)
164           'NIL
165           (IF (CHARACTERP (CAR X))
166               (CONS (CAR X)
167                     (MAKE-CHARACTER-LIST (CDR X)))
168               (CONS (CODE-CHAR '0)
169                     (MAKE-CHARACTER-LIST (CDR X))))))
170
171(DEFUN EQLABLE-ALISTP (X)
172       (IF (ATOM X)
173           (EQUAL X 'NIL)
174           (IF (CONSP (CAR X))
175               (IF (EQLABLEP (CAR (CAR X)))
176                   (EQLABLE-ALISTP (CDR X))
177                   'NIL)
178               'NIL)))
179
180(DEFUN ALISTP (L)
181       (IF (ATOM L)
182           (EQ L 'NIL)
183           (IF (CONSP (CAR L))
184               (ALISTP (CDR L))
185               'NIL)))
186
187(DEFTHM ALISTP-FORWARD-TO-TRUE-LISTP (IMPLIES (ALISTP X) (TRUE-LISTP X)))
188
189(DEFTHM EQLABLE-ALISTP-FORWARD-TO-ALISTP
190        (IMPLIES (EQLABLE-ALISTP X) (ALISTP X)))
191
192(DEFUN ACONS (KEY DATUM ALIST) (CONS (CONS KEY DATUM) ALIST))
193
194(DEFUN ENDP (X) (ATOM X))
195
196(DEFUN MUST-BE-EQUAL (LOGIC EXEC) LOGIC)
197
198(DEFUN MEMBER-EQUAL (X LST)
199       (IF (ENDP LST)
200           'NIL
201           (IF (EQUAL X (CAR LST))
202               LST (MEMBER-EQUAL X (CDR LST)))))
203
204(DEFUN UNION-EQUAL (X Y)
205       (IF (ENDP X)
206           Y
207           (IF (MEMBER-EQUAL (CAR X) Y)
208               (UNION-EQUAL (CDR X) Y)
209               (CONS (CAR X)
210                     (UNION-EQUAL (CDR X) Y)))))
211
212(DEFUN SUBSETP-EQUAL (X Y)
213       (IF (ENDP X)
214           'T
215           (IF (MEMBER-EQUAL (CAR X) Y)
216               (SUBSETP-EQUAL (CDR X) Y)
217               'NIL)))
218
219(DEFUN SYMBOL-LISTP (LST)
220       (IF (ATOM LST)
221           (EQ LST 'NIL)
222           (IF (SYMBOLP (CAR LST))
223               (SYMBOL-LISTP (CDR LST))
224               'NIL)))
225
226(DEFTHM SYMBOL-LISTP-FORWARD-TO-TRUE-LISTP
227        (IMPLIES (SYMBOL-LISTP X)
228                 (TRUE-LISTP X)))
229
230(DEFUN NULL (X) (EQ X 'NIL))
231
232(DEFUN MEMBER-EQ (X LST)
233       (IF (ENDP LST)
234           'NIL
235           (IF (EQ X (CAR LST))
236               LST (MEMBER-EQ X (CDR LST)))))
237
238(DEFUN SUBSETP-EQ (X Y)
239       (IF (ENDP X)
240           'T
241           (IF (MEMBER-EQ (CAR X) Y)
242               (SUBSETP-EQ (CDR X) Y)
243               'NIL)))
244
245(DEFUN SYMBOL-ALISTP (X)
246       (IF (ATOM X)
247           (EQ X 'NIL)
248           (IF (CONSP (CAR X))
249               (IF (SYMBOLP (CAR (CAR X)))
250                   (SYMBOL-ALISTP (CDR X))
251                   'NIL)
252               'NIL)))
253
254(DEFTHM SYMBOL-ALISTP-FORWARD-TO-EQLABLE-ALISTP
255        (IMPLIES (SYMBOL-ALISTP X)
256                 (EQLABLE-ALISTP X)))
257
258(DEFUN ASSOC-EQ (X ALIST)
259       (IF (ENDP ALIST)
260           'NIL
261           (IF (EQ X (CAR (CAR ALIST)))
262               (CAR ALIST)
263               (ASSOC-EQ X (CDR ALIST)))))
264
265(DEFUN ASSOC-EQUAL (X ALIST)
266       (IF (ENDP ALIST)
267           'NIL
268           (IF (EQUAL X (CAR (CAR ALIST)))
269               (CAR ALIST)
270               (ASSOC-EQUAL X (CDR ALIST)))))
271
272(DEFUN ASSOC-EQ-EQUAL-ALISTP (X)
273       (IF (ATOM X)
274           (EQ X 'NIL)
275           (IF (CONSP (CAR X))
276               (IF (SYMBOLP (CAR (CAR X)))
277                   (IF (CONSP (CDR (CAR X)))
278                       (ASSOC-EQ-EQUAL-ALISTP (CDR X))
279                       'NIL)
280                   'NIL)
281               'NIL)))
282
283(DEFUN ASSOC-EQ-EQUAL (X Y ALIST)
284       (IF (ENDP ALIST)
285           'NIL
286           (IF (IF (EQ (CAR (CAR ALIST)) X)
287                   (EQUAL (CAR (CDR (CAR ALIST))) Y)
288                   'NIL)
289               (CAR ALIST)
290               (ASSOC-EQ-EQUAL X Y (CDR ALIST)))))
291
292(DEFUN NO-DUPLICATESP-EQUAL (L)
293       (IF (ENDP L)
294           'T
295           (IF (MEMBER-EQUAL (CAR L) (CDR L))
296               'NIL
297               (NO-DUPLICATESP-EQUAL (CDR L)))))
298
299(DEFUN STRIP-CARS (X)
300       (IF (ENDP X)
301           'NIL
302           (CONS (CAR (CAR X))
303                 (STRIP-CARS (CDR X)))))
304
305(DEFUN EQL (X Y) (EQUAL X Y))
306
307(DEFUN = (X Y) (EQUAL X Y))
308
309(DEFUN /= (X Y) (NOT (EQUAL X Y)))
310
311(DEFUN ZP (X) (IF (INTEGERP X) (NOT (< '0 X)) 'T))
312
313(DEFTHM ZP-COMPOUND-RECOGNIZER
314        (EQUAL (ZP X)
315               (IF (NOT (INTEGERP X))
316                   (NOT (INTEGERP X))
317                   (NOT (< '0 X)))))
318
319(DEFTHM ZP-OPEN
320        (IMPLIES (SYNP 'NIL
321                       '(SYNTAXP (NOT (VARIABLEP X)))
322                       '(IF (NOT (ATOM X)) 'T 'NIL))
323                 (EQUAL (ZP X)
324                        (IF (INTEGERP X) (NOT (< '0 X)) 'T))))
325
326(DEFUN ZIP (X) (IF (INTEGERP X) (= X '0) 'T))
327
328(DEFTHM ZIP-COMPOUND-RECOGNIZER
329        (EQUAL (ZIP X)
330               (IF (NOT (INTEGERP X))
331                   (NOT (INTEGERP X))
332                   (EQUAL X '0))))
333
334(DEFTHM ZIP-OPEN
335        (IMPLIES (SYNP 'NIL
336                       '(SYNTAXP (NOT (VARIABLEP X)))
337                       '(IF (NOT (ATOM X)) 'T 'NIL))
338                 (EQUAL (ZIP X)
339                        (IF (NOT (INTEGERP X))
340                            (NOT (INTEGERP X))
341                            (EQUAL X '0)))))
342
343(DEFUN NTH (N L)
344       (IF (ENDP L)
345           'NIL
346           (IF (ZP N)
347               (CAR L)
348               (NTH (BINARY-+ '-1 N) (CDR L)))))
349
350(DEFUN CHAR (S N) (NTH N (COERCE S 'LIST)))
351
352(DEFUN PROPER-CONSP (X) (IF (CONSP X) (TRUE-LISTP X) 'NIL))
353
354(DEFUN IMPROPER-CONSP (X) (IF (CONSP X) (NOT (TRUE-LISTP X)) 'NIL))
355
356(DEFUN CONJUGATE (X)
357       (IF (COMPLEX-RATIONALP X)
358           (COMPLEX (REALPART X)
359                    (UNARY-- (IMAGPART X)))
360           X))
361
362(DEFUN PROG2$ (X Y) Y)
363
364(DEFUN EC-CALL (X) X)
365
366(DEFAXIOM CLOSURE
367          (IF (ACL2-NUMBERP (BINARY-+ X Y))
368              (IF (ACL2-NUMBERP (BINARY-* X Y))
369                  (IF (ACL2-NUMBERP (UNARY-- X))
370                      (ACL2-NUMBERP (UNARY-/ X))
371                      'NIL)
372                  'NIL)
373              'NIL))
374
375(DEFAXIOM ASSOCIATIVITY-OF-+
376          (EQUAL (BINARY-+ (BINARY-+ X Y) Z)
377                 (BINARY-+ X (BINARY-+ Y Z))))
378
379(DEFAXIOM COMMUTATIVITY-OF-+ (EQUAL (BINARY-+ X Y) (BINARY-+ Y X)))
380
381(DEFUN FIX (X) (IF (ACL2-NUMBERP X) X '0))
382
383(DEFAXIOM UNICITY-OF-0 (EQUAL (BINARY-+ '0 X) (FIX X)))
384
385(DEFAXIOM INVERSE-OF-+ (EQUAL (BINARY-+ X (UNARY-- X)) '0))
386
387(DEFAXIOM ASSOCIATIVITY-OF-*
388          (EQUAL (BINARY-* (BINARY-* X Y) Z)
389                 (BINARY-* X (BINARY-* Y Z))))
390
391(DEFAXIOM COMMUTATIVITY-OF-* (EQUAL (BINARY-* X Y) (BINARY-* Y X)))
392
393(DEFAXIOM UNICITY-OF-1 (EQUAL (BINARY-* '1 X) (FIX X)))
394
395(DEFAXIOM INVERSE-OF-*
396          (IMPLIES (IF (ACL2-NUMBERP X)
397                       (NOT (EQUAL X '0))
398                       'NIL)
399                   (EQUAL (BINARY-* X (UNARY-/ X)) '1)))
400
401(DEFAXIOM DISTRIBUTIVITY
402          (EQUAL (BINARY-* X (BINARY-+ Y Z))
403                 (BINARY-+ (BINARY-* X Y)
404                           (BINARY-* X Z))))
405
406(DEFAXIOM <-ON-OTHERS (EQUAL (< X Y) (< (BINARY-+ X (UNARY-- Y)) '0)))
407
408(DEFAXIOM ZERO (NOT (< '0 '0)))
409
410(DEFAXIOM TRICHOTOMY
411          (IF (IMPLIES (ACL2-NUMBERP X)
412                       (IF (< '0 X)
413                           (< '0 X)
414                           (IF (EQUAL X '0)
415                               (EQUAL X '0)
416                               (< '0 (UNARY-- X)))))
417              (IF (NOT (< '0 X))
418                  (NOT (< '0 X))
419                  (NOT (< '0 (UNARY-- X))))
420              'NIL))
421
422(DEFAXIOM POSITIVE
423          (IF (IMPLIES (IF (< '0 X) (< '0 Y) 'NIL)
424                       (< '0 (BINARY-+ X Y)))
425              (IMPLIES (IF (RATIONALP X)
426                           (IF (RATIONALP Y)
427                               (IF (< '0 X) (< '0 Y) 'NIL)
428                               'NIL)
429                           'NIL)
430                       (< '0 (BINARY-* X Y)))
431              'NIL))
432
433(DEFAXIOM RATIONAL-IMPLIES1
434          (IMPLIES (RATIONALP X)
435                   (IF (INTEGERP (DENOMINATOR X))
436                       (IF (INTEGERP (NUMERATOR X))
437                           (< '0 (DENOMINATOR X))
438                           'NIL)
439                       'NIL)))
440
441(DEFAXIOM RATIONAL-IMPLIES2
442          (IMPLIES (RATIONALP X)
443                   (EQUAL (BINARY-* (UNARY-/ (DENOMINATOR X))
444                                    (NUMERATOR X))
445                          X)))
446
447(DEFAXIOM INTEGER-IMPLIES-RATIONAL (IMPLIES (INTEGERP X) (RATIONALP X)))
448
449(DEFAXIOM COMPLEX-IMPLIES1
450          (IF (RATIONALP (REALPART X))
451              (RATIONALP (IMAGPART X))
452              'NIL))
453
454(DEFAXIOM COMPLEX-DEFINITION
455          (IMPLIES (IF (RATIONALP X) (RATIONALP Y) 'NIL)
456                   (EQUAL (COMPLEX X Y)
457                          (BINARY-+ X (BINARY-* '#C(0 1) Y)))))
458
459(DEFAXIOM NONZERO-IMAGPART
460          (IMPLIES (COMPLEX-RATIONALP X)
461                   (NOT (EQUAL '0 (IMAGPART X)))))
462
463(DEFAXIOM REALPART-IMAGPART-ELIM
464          (IMPLIES (ACL2-NUMBERP X)
465                   (EQUAL (COMPLEX (REALPART X) (IMAGPART X))
466                          X)))
467
468(DEFAXIOM REALPART-COMPLEX
469          (IMPLIES (IF (RATIONALP X) (RATIONALP Y) 'NIL)
470                   (EQUAL (REALPART (COMPLEX X Y)) X)))
471
472(DEFAXIOM IMAGPART-COMPLEX
473          (IMPLIES (IF (RATIONALP X) (RATIONALP Y) 'NIL)
474                   (EQUAL (IMAGPART (COMPLEX X Y)) Y)))
475
476(DEFTHM COMPLEX-EQUAL
477        (IMPLIES (IF (RATIONALP X1)
478                     (IF (RATIONALP Y1)
479                         (IF (RATIONALP X2) (RATIONALP Y2) 'NIL)
480                         'NIL)
481                     'NIL)
482                 (EQUAL (EQUAL (COMPLEX X1 Y1) (COMPLEX X2 Y2))
483                        (IF (EQUAL X1 X2) (EQUAL Y1 Y2) 'NIL))))
484
485(DEFUN FORCE (X) X)
486
487(DEFUN IMMEDIATE-FORCE-MODEP NIL '"See :DOC immediate-force-modep.")
488
489(DEFUN CASE-SPLIT (X) X)
490
491(DEFUN SYNP (VARS FORM TERM) 'T)
492
493(DEFUN EXTRA-INFO (X Y) 'T)
494
495(DEFAXIOM NONNEGATIVE-PRODUCT
496          (IMPLIES (RATIONALP X)
497                   (IF (RATIONALP (BINARY-* X X))
498                       (NOT (< (BINARY-* X X) '0))
499                       'NIL)))
500
501(DEFAXIOM INTEGER-0 (INTEGERP '0))
502
503(DEFAXIOM INTEGER-1 (INTEGERP '1))
504
505(DEFAXIOM INTEGER-STEP
506          (IMPLIES (INTEGERP X)
507                   (IF (INTEGERP (BINARY-+ X '1))
508                       (INTEGERP (BINARY-+ X '-1))
509                       'NIL)))
510
511(DEFAXIOM
512     LOWEST-TERMS
513     (IMPLIES (IF (INTEGERP N)
514                  (IF (RATIONALP X)
515                      (IF (INTEGERP R)
516                          (IF (INTEGERP Q)
517                              (IF (< '0 N)
518                                  (IF (EQUAL (NUMERATOR X) (BINARY-* N R))
519                                      (EQUAL (DENOMINATOR X) (BINARY-* N Q))
520                                      'NIL)
521                                  'NIL)
522                              'NIL)
523                          'NIL)
524                      'NIL)
525                  'NIL)
526              (EQUAL N '1)))
527
528(DEFAXIOM CAR-CDR-ELIM (IMPLIES (CONSP X) (EQUAL (CONS (CAR X) (CDR X)) X)))
529
530(DEFAXIOM CAR-CONS (EQUAL (CAR (CONS X Y)) X))
531
532(DEFAXIOM CDR-CONS (EQUAL (CDR (CONS X Y)) Y))
533
534(DEFAXIOM CONS-EQUAL
535          (EQUAL (EQUAL (CONS X1 Y1) (CONS X2 Y2))
536                 (IF (EQUAL X1 X2) (EQUAL Y1 Y2) 'NIL)))
537
538(DEFAXIOM BOOLEANP-CHARACTERP (BOOLEANP (CHARACTERP X)))
539
540(DEFAXIOM CHARACTERP-PAGE (CHARACTERP '#\Page))
541
542(DEFAXIOM CHARACTERP-TAB (CHARACTERP '#\Tab))
543
544(DEFAXIOM CHARACTERP-RUBOUT (CHARACTERP '#\Rubout))
545
546(DEFUN MEMBER (X L)
547       (IF (ENDP L)
548           'NIL
549           (IF (EQL X (CAR L))
550               L (MEMBER X (CDR L)))))
551
552(DEFUN NO-DUPLICATESP (L)
553       (IF (ENDP L)
554           'T
555           (IF (MEMBER (CAR L) (CDR L))
556               'NIL
557               (NO-DUPLICATESP (CDR L)))))
558
559(DEFUN ASSOC (X ALIST)
560       (IF (ENDP ALIST)
561           'NIL
562           (IF (EQL X (CAR (CAR ALIST)))
563               (CAR ALIST)
564               (ASSOC X (CDR ALIST)))))
565
566(DEFUN R-EQLABLE-ALISTP (X)
567       (IF (ATOM X)
568           (EQUAL X 'NIL)
569           (IF (CONSP (CAR X))
570               (IF (EQLABLEP (CDR (CAR X)))
571                   (R-EQLABLE-ALISTP (CDR X))
572                   'NIL)
573               'NIL)))
574
575(DEFUN RASSOC (X ALIST)
576       (IF (ENDP ALIST)
577           'NIL
578           (IF (EQL X (CDR (CAR ALIST)))
579               (CAR ALIST)
580               (RASSOC X (CDR ALIST)))))
581
582(DEFUN RASSOC-EQUAL (X ALIST)
583       (IF (ENDP ALIST)
584           'NIL
585           (IF (EQUAL X (CDR (CAR ALIST)))
586               (CAR ALIST)
587               (RASSOC-EQUAL X (CDR ALIST)))))
588
589(DEFUN R-SYMBOL-ALISTP (X)
590       (IF (ATOM X)
591           (EQUAL X 'NIL)
592           (IF (CONSP (CAR X))
593               (IF (SYMBOLP (CDR (CAR X)))
594                   (R-SYMBOL-ALISTP (CDR X))
595                   'NIL)
596               'NIL)))
597
598(DEFUN RASSOC-EQ (X ALIST)
599       (IF (ENDP ALIST)
600           'NIL
601           (IF (EQ X (CDR (CAR ALIST)))
602               (CAR ALIST)
603               (RASSOC-EQ X (CDR ALIST)))))
604
605(DEFUN STANDARD-CHAR-P (X)
606       (IF (MEMBER X
607                   '(#\Newline #\Space #\! #\" #\# #\$ #\%
608                               #\& #\' #\( #\) #\* #\+ #\, #\- #\. #\/
609                               #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9
610                               #\: #\; #\< #\= #\> #\? #\@ #\A #\B #\C
611                               #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M
612                               #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W
613                               #\X #\Y #\Z #\[ #\\ #\] #\^ #\_ #\` #\a
614                               #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k
615                               #\l #\m #\n #\o #\p #\q #\r #\s #\t #\u
616                               #\v #\w #\x #\y #\z #\{ #\| #\} #\~))
617           'T
618           'NIL))
619
620(DEFUN STANDARD-CHAR-LISTP (L)
621       (IF (CONSP L)
622           (IF (CHARACTERP (CAR L))
623               (IF (STANDARD-CHAR-P (CAR L))
624                   (STANDARD-CHAR-LISTP (CDR L))
625                   'NIL)
626               'NIL)
627           (EQUAL L 'NIL)))
628
629(DEFUN CHARACTER-LISTP (L)
630       (IF (ATOM L)
631           (EQUAL L 'NIL)
632           (IF (CHARACTERP (CAR L))
633               (CHARACTER-LISTP (CDR L))
634               'NIL)))
635
636(DEFTHM CHARACTER-LISTP-FORWARD-TO-EQLABLE-LISTP
637        (IMPLIES (CHARACTER-LISTP X)
638                 (EQLABLE-LISTP X)))
639
640(DEFTHM STANDARD-CHAR-LISTP-FORWARD-TO-CHARACTER-LISTP
641        (IMPLIES (STANDARD-CHAR-LISTP X)
642                 (CHARACTER-LISTP X)))
643
644(DEFAXIOM COERCE-INVERSE-1
645          (IMPLIES (CHARACTER-LISTP X)
646                   (EQUAL (COERCE (COERCE X 'STRING) 'LIST)
647                          X)))
648
649(DEFAXIOM COERCE-INVERSE-2
650          (IMPLIES (STRINGP X)
651                   (EQUAL (COERCE (COERCE X 'LIST) 'STRING)
652                          X)))
653
654(DEFAXIOM CHARACTER-LISTP-COERCE (CHARACTER-LISTP (COERCE STR 'LIST)))
655
656(DEFUN STRING (X)
657       (IF (STRINGP X)
658           X
659           (IF (SYMBOLP X)
660               (SYMBOL-NAME X)
661               (COERCE (CONS X 'NIL) 'STRING))))
662
663(DEFUN ALPHA-CHAR-P (X)
664       (IF (MEMBER X
665                   '(#\a #\b #\c
666                         #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m
667                         #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w
668                         #\x #\y #\z #\A #\B #\C #\D #\E #\F #\G
669                         #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q
670                         #\R #\S #\T #\U #\V #\W #\X #\Y #\Z))
671           'T
672           'NIL))
673
674(DEFUN UPPER-CASE-P (X)
675       (IF (MEMBER X
676                   '(#\A #\B #\C #\D #\E #\F #\G
677                         #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q
678                         #\R #\S #\T #\U #\V #\W #\X #\Y #\Z))
679           'T
680           'NIL))
681
682(DEFUN LOWER-CASE-P (X)
683       (IF (MEMBER X
684                   '(#\a #\b #\c #\d #\e #\f #\g
685                         #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q
686                         #\r #\s #\t #\u #\v #\w #\x #\y #\z))
687           'T
688           'NIL))
689
690(DEFUN CHAR-UPCASE (X)
691       ((LAMBDA (PAIR X)
692                (IF PAIR (CDR PAIR)
693                    (IF (CHARACTERP X) X (CODE-CHAR '0))))
694        (ASSOC X
695               '((#\a . #\A)
696                 (#\b . #\B)
697                 (#\c . #\C)
698                 (#\d . #\D)
699                 (#\e . #\E)
700                 (#\f . #\F)
701                 (#\g . #\G)
702                 (#\h . #\H)
703                 (#\i . #\I)
704                 (#\j . #\J)
705                 (#\k . #\K)
706                 (#\l . #\L)
707                 (#\m . #\M)
708                 (#\n . #\N)
709                 (#\o . #\O)
710                 (#\p . #\P)
711                 (#\q . #\Q)
712                 (#\r . #\R)
713                 (#\s . #\S)
714                 (#\t . #\T)
715                 (#\u . #\U)
716                 (#\v . #\V)
717                 (#\w . #\W)
718                 (#\x . #\X)
719                 (#\y . #\Y)
720                 (#\z . #\Z)))
721        X))
722
723(DEFUN CHAR-DOWNCASE (X)
724       ((LAMBDA (PAIR X)
725                (IF PAIR (CDR PAIR)
726                    (IF (CHARACTERP X) X (CODE-CHAR '0))))
727        (ASSOC X
728               '((#\A . #\a)
729                 (#\B . #\b)
730                 (#\C . #\c)
731                 (#\D . #\d)
732                 (#\E . #\e)
733                 (#\F . #\f)
734                 (#\G . #\g)
735                 (#\H . #\h)
736                 (#\I . #\i)
737                 (#\J . #\j)
738                 (#\K . #\k)
739                 (#\L . #\l)
740                 (#\M . #\m)
741                 (#\N . #\n)
742                 (#\O . #\o)
743                 (#\P . #\p)
744                 (#\Q . #\q)
745                 (#\R . #\r)
746                 (#\S . #\s)
747                 (#\T . #\t)
748                 (#\U . #\u)
749                 (#\V . #\v)
750                 (#\W . #\w)
751                 (#\X . #\x)
752                 (#\Y . #\y)
753                 (#\Z . #\z)))
754        X))
755
756(DEFTHM LOWER-CASE-P-CHAR-DOWNCASE
757        (IMPLIES (IF (UPPER-CASE-P X)
758                     (CHARACTERP X)
759                     'NIL)
760                 (LOWER-CASE-P (CHAR-DOWNCASE X))))
761
762(DEFTHM UPPER-CASE-P-CHAR-UPCASE
763        (IMPLIES (IF (LOWER-CASE-P X)
764                     (CHARACTERP X)
765                     'NIL)
766                 (UPPER-CASE-P (CHAR-UPCASE X))))
767
768(DEFTHM LOWER-CASE-P-FORWARD-TO-ALPHA-CHAR-P
769        (IMPLIES (IF (LOWER-CASE-P X)
770                     (CHARACTERP X)
771                     'NIL)
772                 (ALPHA-CHAR-P X)))
773
774(DEFTHM UPPER-CASE-P-FORWARD-TO-ALPHA-CHAR-P
775        (IMPLIES (IF (UPPER-CASE-P X)
776                     (CHARACTERP X)
777                     'NIL)
778                 (ALPHA-CHAR-P X)))
779
780(DEFTHM ALPHA-CHAR-P-FORWARD-TO-CHARACTERP
781        (IMPLIES (ALPHA-CHAR-P X)
782                 (CHARACTERP X)))
783
784(DEFTHM CHARACTERP-CHAR-DOWNCASE (CHARACTERP (CHAR-DOWNCASE X)))
785
786(DEFTHM CHARACTERP-CHAR-UPCASE (CHARACTERP (CHAR-UPCASE X)))
787
788(DEFUN STRING-DOWNCASE1 (L)
789       (IF (ATOM L)
790           'NIL
791           (CONS (CHAR-DOWNCASE (CAR L))
792                 (STRING-DOWNCASE1 (CDR L)))))
793
794(DEFTHM CHARACTER-LISTP-STRING-DOWNCASE-1
795        (CHARACTER-LISTP (STRING-DOWNCASE1 X)))
796
797(DEFUN STRING-DOWNCASE (X)
798       (COERCE (STRING-DOWNCASE1 (COERCE X 'LIST))
799               'STRING))
800
801(DEFUN STRING-UPCASE1 (L)
802       (IF (ATOM L)
803           'NIL
804           (CONS (CHAR-UPCASE (CAR L))
805                 (STRING-UPCASE1 (CDR L)))))
806
807(DEFTHM CHARACTER-LISTP-STRING-UPCASE1-1
808        (CHARACTER-LISTP (STRING-UPCASE1 X)))
809
810(DEFUN STRING-UPCASE (X) (COERCE (STRING-UPCASE1 (COERCE X 'LIST)) 'STRING))
811
812(DEFUN OUR-DIGIT-CHAR-P (CH RADIX)
813       ((LAMBDA (L RADIX)
814                (IF (IF L (< (CDR L) RADIX) 'NIL)
815                    (CDR L)
816                    'NIL))
817        (ASSOC CH
818               '((#\0 . 0)
819                 (#\1 . 1)
820                 (#\2 . 2)
821                 (#\3 . 3)
822                 (#\4 . 4)
823                 (#\5 . 5)
824                 (#\6 . 6)
825                 (#\7 . 7)
826                 (#\8 . 8)
827                 (#\9 . 9)
828                 (#\a . 10)
829                 (#\b . 11)
830                 (#\c . 12)
831                 (#\d . 13)
832                 (#\e . 14)
833                 (#\f . 15)
834                 (#\g . 16)
835                 (#\h . 17)
836                 (#\i . 18)
837                 (#\j . 19)
838                 (#\k . 20)
839                 (#\l . 21)
840                 (#\m . 22)
841                 (#\n . 23)
842                 (#\o . 24)
843                 (#\p . 25)
844                 (#\q . 26)
845                 (#\r . 27)
846                 (#\s . 28)
847                 (#\t . 29)
848                 (#\u . 30)
849                 (#\v . 31)
850                 (#\w . 32)
851                 (#\x . 33)
852                 (#\y . 34)
853                 (#\z . 35)
854                 (#\A . 10)
855                 (#\B . 11)
856                 (#\C . 12)
857                 (#\D . 13)
858                 (#\E . 14)
859                 (#\F . 15)
860                 (#\G . 16)
861                 (#\H . 17)
862                 (#\I . 18)
863                 (#\J . 19)
864                 (#\K . 20)
865                 (#\L . 21)
866                 (#\M . 22)
867                 (#\N . 23)
868                 (#\O . 24)
869                 (#\P . 25)
870                 (#\Q . 26)
871                 (#\R . 27)
872                 (#\S . 28)
873                 (#\T . 29)
874                 (#\U . 30)
875                 (#\V . 31)
876                 (#\W . 32)
877                 (#\X . 33)
878                 (#\Y . 34)
879                 (#\Z . 35)))
880        RADIX))
881
882(DEFUN CHAR-EQUAL (X Y) (EQL (CHAR-DOWNCASE X) (CHAR-DOWNCASE Y)))
883
884(DEFUN ATOM-LISTP (LST)
885       (IF (ATOM LST)
886           (EQ LST 'NIL)
887           (IF (ATOM (CAR LST))
888               (ATOM-LISTP (CDR LST))
889               'NIL)))
890
891(DEFTHM ATOM-LISTP-FORWARD-TO-TRUE-LISTP
892        (IMPLIES (ATOM-LISTP X) (TRUE-LISTP X)))
893
894(DEFTHM EQLABLE-LISTP-FORWARD-TO-ATOM-LISTP
895        (IMPLIES (EQLABLE-LISTP X)
896                 (ATOM-LISTP X)))
897
898(DEFTHM CHARACTERP-NTH
899        (IMPLIES (IF (CHARACTER-LISTP X)
900                     (IF (INTEGERP I)
901                         (IF (NOT (< I '0)) (< I (LEN X)) 'NIL)
902                         'NIL)
903                     'NIL)
904                 (CHARACTERP (NTH I X))))
905
906(DEFUN IFIX (X) (IF (INTEGERP X) X '0))
907
908(DEFUN RFIX (X) (IF (RATIONALP X) X '0))
909
910(DEFUN REALFIX (X) (IF (RATIONALP X) X '0))
911
912(DEFUN NFIX (X) (IF (IF (INTEGERP X) (NOT (< X '0)) 'NIL) X '0))
913
914(DEFUN STRING-EQUAL1 (STR1 STR2 I MAXIMUM)
915       ((LAMBDA (I STR2 STR1 MAXIMUM)
916                (IF (NOT (< I (IFIX MAXIMUM)))
917                    'T
918                    (IF (CHAR-EQUAL (CHAR STR1 I) (CHAR STR2 I))
919                        (STRING-EQUAL1 STR1 STR2 (BINARY-+ '1 I)
920                                       MAXIMUM)
921                        'NIL)))
922        (NFIX I)
923        STR2 STR1 MAXIMUM))
924
925(DEFUN STRING-EQUAL (STR1 STR2)
926       ((LAMBDA (LEN1 STR1 STR2)
927                (IF (= LEN1 (LENGTH STR2))
928                    (STRING-EQUAL1 STR1 STR2 '0 LEN1)
929                    'NIL))
930        (LENGTH STR1)
931        STR1 STR2))
932
933(DEFUN STANDARD-STRING-ALISTP (X)
934       (IF (ATOM X)
935           (EQ X 'NIL)
936           (IF (CONSP (CAR X))
937               (IF (STRINGP (CAR (CAR X)))
938                   (IF (STANDARD-CHAR-LISTP (COERCE (CAR (CAR X)) 'LIST))
939                       (STANDARD-STRING-ALISTP (CDR X))
940                       'NIL)
941                   'NIL)
942               'NIL)))
943
944(DEFTHM STANDARD-STRING-ALISTP-FORWARD-TO-ALISTP
945        (IMPLIES (STANDARD-STRING-ALISTP X)
946                 (ALISTP X)))
947
948(DEFUN ASSOC-STRING-EQUAL (STR ALIST)
949       (IF (ENDP ALIST)
950           'NIL
951           (IF (STRING-EQUAL STR (CAR (CAR ALIST)))
952               (CAR ALIST)
953               (ASSOC-STRING-EQUAL STR (CDR ALIST)))))
954
955(DEFUN NATP (X) (IF (INTEGERP X) (NOT (< X '0)) 'NIL))
956
957(DEFTHM NATP-COMPOUND-RECOGNIZER
958        (EQUAL (NATP X)
959               (IF (INTEGERP X) (NOT (< X '0)) 'NIL)))
960
961(DEFUN POSP (X) (IF (INTEGERP X) (< '0 X) 'NIL))
962
963(DEFTHM POSP-COMPOUND-RECOGNIZER
964        (EQUAL (POSP X)
965               (IF (INTEGERP X) (< '0 X) 'NIL)))
966
967(DEFUN O-FINP (X) (ATOM X))
968
969(DEFUN O-FIRST-EXPT (X) (IF (O-FINP X) '0 (CAR (CAR X))))
970
971(DEFUN O-FIRST-COEFF (X) (IF (O-FINP X) X (CDR (CAR X))))
972
973(DEFUN O-RST (X) (CDR X))
974
975(DEFUN O<G (X)
976       (IF (ATOM X)
977           (RATIONALP X)
978           (IF (CONSP (CAR X))
979               (IF (RATIONALP (O-FIRST-COEFF X))
980                   (IF (O<G (O-FIRST-EXPT X))
981                       (O<G (O-RST X))
982                       'NIL)
983                   'NIL)
984               'NIL)))
985
986(DEFUN O< (X Y)
987       (IF (O-FINP X)
988           (IF (NOT (O-FINP Y))
989               (NOT (O-FINP Y))
990               (< X Y))
991           (IF (O-FINP Y)
992               'NIL
993               (IF (NOT (EQUAL (O-FIRST-EXPT X)
994                               (O-FIRST-EXPT Y)))
995                   (O< (O-FIRST-EXPT X) (O-FIRST-EXPT Y))
996                   (IF (NOT (= (O-FIRST-COEFF X) (O-FIRST-COEFF Y)))
997                       (< (O-FIRST-COEFF X) (O-FIRST-COEFF Y))
998                       (O< (O-RST X) (O-RST Y)))))))
999
1000(DEFUN O-P (X)
1001       (IF (O-FINP X)
1002           (NATP X)
1003           (IF (CONSP (CAR X))
1004               (IF (O-P (O-FIRST-EXPT X))
1005                   (IF (NOT (EQL '0 (O-FIRST-EXPT X)))
1006                       (IF (POSP (O-FIRST-COEFF X))
1007                           (IF (O-P (O-RST X))
1008                               (O< (O-FIRST-EXPT (O-RST X))
1009                                   (O-FIRST-EXPT X))
1010                               'NIL)
1011                           'NIL)
1012                       'NIL)
1013                   'NIL)
1014               'NIL)))
1015
1016(DEFTHM O-P-IMPLIES-O<G (IMPLIES (O-P A) (O<G A)))
1017
1018(DEFUN MAKE-ORD (FE FCO RST) (CONS (CONS FE FCO) RST))
1019
1020(DEFUN LIST*-MACRO (LST)
1021       (IF (ENDP (CDR LST))
1022           (CAR LST)
1023           (CONS 'CONS
1024                 (CONS (CAR LST)
1025                       (CONS (LIST*-MACRO (CDR LST)) 'NIL)))))
1026
1027(DEFUN NULL-BODY-ER (FN FORMALS MAYBE-ATTACH)
1028       (IF MAYBE-ATTACH
1029           (CONS 'THROW-OR-ATTACH
1030                 (CONS FN (CONS FORMALS (CONS 'NIL 'NIL))))
1031           (CONS 'THROW-WITHOUT-ATTACH
1032                 (CONS FN (CONS FORMALS 'NIL)))))
1033
1034(DEFAXIOM STRINGP-SYMBOL-PACKAGE-NAME (STRINGP (SYMBOL-PACKAGE-NAME X)))
1035
1036(DEFAXIOM SYMBOLP-INTERN-IN-PACKAGE-OF-SYMBOL
1037          (SYMBOLP (INTERN-IN-PACKAGE-OF-SYMBOL X Y)))
1038
1039(DEFAXIOM SYMBOLP-PKG-WITNESS (SYMBOLP (PKG-WITNESS X)))
1040
1041(DEFUN HARD-ERROR (CTX STR ALIST) 'NIL)
1042
1043(DEFUN ILLEGAL (CTX STR ALIST) (HARD-ERROR CTX STR ALIST))
1044
1045(DEFUN KEYWORDP (X)
1046       (IF (SYMBOLP X)
1047           (EQUAL (SYMBOL-PACKAGE-NAME X)
1048                  '"KEYWORD")
1049           'NIL))
1050
1051(DEFTHM KEYWORDP-FORWARD-TO-SYMBOLP (IMPLIES (KEYWORDP X) (SYMBOLP X)))
1052
1053(DEFAXIOM INTERN-IN-PACKAGE-OF-SYMBOL-SYMBOL-NAME
1054          (IMPLIES (IF (SYMBOLP X)
1055                       (EQUAL (SYMBOL-PACKAGE-NAME X)
1056                              (SYMBOL-PACKAGE-NAME Y))
1057                       'NIL)
1058                   (EQUAL (INTERN-IN-PACKAGE-OF-SYMBOL (SYMBOL-NAME X)
1059                                                       Y)
1060                          X)))
1061
1062(DEFTHM SYMBOL-PACKAGE-NAME-OF-SYMBOL-IS-NOT-EMPTY-STRING
1063        (IMPLIES (SYMBOLP X)
1064                 (NOT (EQUAL (SYMBOL-PACKAGE-NAME X) '""))))
1065
1066(DEFAXIOM SYMBOL-NAME-PKG-WITNESS
1067          (EQUAL (SYMBOL-NAME (PKG-WITNESS PKG-NAME))
1068                 '"ACL2-PKG-WITNESS"))
1069
1070(DEFAXIOM SYMBOL-PACKAGE-NAME-PKG-WITNESS-NAME
1071          (EQUAL (SYMBOL-PACKAGE-NAME (PKG-WITNESS PKG-NAME))
1072                 (IF (IF (STRINGP PKG-NAME)
1073                         (NOT (EQUAL PKG-NAME '""))
1074                         'NIL)
1075                     PKG-NAME '"ACL2")))
1076
1077(DEFUN MEMBER-SYMBOL-NAME (STR L)
1078       (IF (ENDP L)
1079           'NIL
1080           (IF (EQUAL STR (SYMBOL-NAME (CAR L)))
1081               L (MEMBER-SYMBOL-NAME STR (CDR L)))))
1082
1083(DEFTHM SYMBOL-EQUALITY
1084        (IMPLIES (IF (SYMBOLP S1)
1085                     (IF (SYMBOLP S2)
1086                         (IF (EQUAL (SYMBOL-NAME S1)
1087                                    (SYMBOL-NAME S2))
1088                             (EQUAL (SYMBOL-PACKAGE-NAME S1)
1089                                    (SYMBOL-PACKAGE-NAME S2))
1090                             'NIL)
1091                         'NIL)
1092                     'NIL)
1093                 (EQUAL S1 S2)))
1094
1095(DEFAXIOM
1096     SYMBOL-NAME-INTERN-IN-PACKAGE-OF-SYMBOL
1097     (IMPLIES (IF (STRINGP S)
1098                  (SYMBOLP ANY-SYMBOL)
1099                  'NIL)
1100              (EQUAL (SYMBOL-NAME (INTERN-IN-PACKAGE-OF-SYMBOL S ANY-SYMBOL))
1101                     S)))
1102
1103(DEFAXIOM
1104     ACL2-INPUT-CHANNEL-PACKAGE
1105     (IMPLIES (IF (STRINGP X)
1106                  (IF (SYMBOLP Y)
1107                      (EQUAL (SYMBOL-PACKAGE-NAME Y)
1108                             '"ACL2-INPUT-CHANNEL")
1109                      'NIL)
1110                  'NIL)
1111              (EQUAL (SYMBOL-PACKAGE-NAME (INTERN-IN-PACKAGE-OF-SYMBOL X Y))
1112                     '"ACL2-INPUT-CHANNEL")))
1113
1114(DEFAXIOM
1115     ACL2-OUTPUT-CHANNEL-PACKAGE
1116     (IMPLIES (IF (STRINGP X)
1117                  (IF (SYMBOLP Y)
1118                      (EQUAL (SYMBOL-PACKAGE-NAME Y)
1119                             '"ACL2-OUTPUT-CHANNEL")
1120                      'NIL)
1121                  'NIL)
1122              (EQUAL (SYMBOL-PACKAGE-NAME (INTERN-IN-PACKAGE-OF-SYMBOL X Y))
1123                     '"ACL2-OUTPUT-CHANNEL")))
1124
1125(DEFAXIOM
1126 ACL2-PACKAGE
1127 (IMPLIES
1128  (IF
1129   (STRINGP X)
1130   (IF (NOT (MEMBER-SYMBOL-NAME
1131                 X
1132                 '(&ALLOW-OTHER-KEYS *PRINT-MISER-WIDTH*
1133                                     &AUX *PRINT-PPRINT-DISPATCH*
1134                                     &BODY *PRINT-PRETTY*
1135                                     &ENVIRONMENT *PRINT-RADIX*
1136                                     &KEY *PRINT-READABLY* &OPTIONAL
1137                                     *PRINT-RIGHT-MARGIN* &REST *QUERY-IO*
1138                                     &WHOLE *RANDOM-STATE* * *READ-BASE*
1139                                     ** *READ-DEFAULT-FLOAT-FORMAT*
1140                                     *** *READ-EVAL* *BREAK-ON-SIGNALS*
1141                                     *READ-SUPPRESS* *COMPILE-FILE-PATHNAME*
1142                                     *READTABLE* *COMPILE-FILE-TRUENAME*
1143                                     *STANDARD-INPUT* *COMPILE-PRINT*
1144                                     *STANDARD-OUTPUT* *COMPILE-VERBOSE*
1145                                     *TERMINAL-IO* *DEBUG-IO*
1146                                     *TRACE-OUTPUT* *DEBUGGER-HOOK*
1147                                     + *DEFAULT-PATHNAME-DEFAULTS*
1148                                     ++ *ERROR-OUTPUT* +++ *FEATURES*
1149                                     - *GENSYM-COUNTER* / *LOAD-PATHNAME*
1150                                     // *LOAD-PRINT* /// *LOAD-TRUENAME*
1151                                     /= *LOAD-VERBOSE* 1+ *MACROEXPAND-HOOK*
1152                                     1- *MODULES* < *PACKAGE*
1153                                     <= *PRINT-ARRAY* = *PRINT-BASE*
1154                                     > *PRINT-CASE* >= *PRINT-CIRCLE*
1155                                     ABORT *PRINT-ESCAPE* ABS *PRINT-GENSYM*
1156                                     ACONS *PRINT-LENGTH* ACOS *PRINT-LEVEL*
1157                                     ACOSH *PRINT-LINES* ADD-METHOD ADJOIN
1158                                     ATOM BOUNDP ADJUST-ARRAY BASE-CHAR
1159                                     BREAK ADJUSTABLE-ARRAY-P BASE-STRING
1160                                     BROADCAST-STREAM ALLOCATE-INSTANCE
1161                                     BIGNUM BROADCAST-STREAM-STREAMS
1162                                     ALPHA-CHAR-P BIT BUILT-IN-CLASS
1163                                     ALPHANUMERICP BIT-AND BUTLAST
1164                                     AND BIT-ANDC1 BYTE APPEND BIT-ANDC2
1165                                     BYTE-POSITION APPLY BIT-EQV BYTE-SIZE
1166                                     APROPOS BIT-IOR CAAAAR APROPOS-LIST
1167                                     BIT-NAND CAAADR AREF BIT-NOR
1168                                     CAAAR ARITHMETIC-ERROR BIT-NOT CAADAR
1169                                     ARITHMETIC-ERROR-OPERANDS BIT-ORC1
1170                                     CAADDR ARITHMETIC-ERROR-OPERATION
1171                                     BIT-ORC2 CAADR ARRAY BIT-VECTOR
1172                                     CAAR ARRAY-DIMENSION BIT-VECTOR-P
1173                                     CADAAR ARRAY-DIMENSION-LIMIT
1174                                     BIT-XOR CADADR ARRAY-DIMENSIONS
1175                                     BLOCK CADAR ARRAY-DISPLACEMENT
1176                                     BOOLE CADDAR ARRAY-ELEMENT-TYPE
1177                                     BOOLE-1 CADDDR ARRAY-HAS-FILL-POINTER-P
1178                                     BOOLE-2 CADDR ARRAY-IN-BOUNDS-P
1179                                     BOOLE-AND CADR ARRAY-RANK
1180                                     BOOLE-ANDC1 CALL-ARGUMENTS-LIMIT
1181                                     ARRAY-RANK-LIMIT BOOLE-ANDC2 CALL-METHOD
1182                                     ARRAY-ROW-MAJOR-INDEX BOOLE-C1
1183                                     CALL-NEXT-METHOD ARRAY-TOTAL-SIZE
1184                                     BOOLE-C2 CAR ARRAY-TOTAL-SIZE-LIMIT
1185                                     BOOLE-CLR CASE ARRAYP
1186                                     BOOLE-EQV CATCH ASH BOOLE-IOR CCASE
1187                                     ASIN BOOLE-NAND CDAAAR ASINH BOOLE-NOR
1188                                     CDAADR ASSERT BOOLE-ORC1 CDAAR ASSOC
1189                                     BOOLE-ORC2 CDADAR ASSOC-IF BOOLE-SET
1190                                     CDADDR ASSOC-IF-NOT BOOLE-XOR CDADR
1191                                     ATAN BOOLEAN CDAR ATANH BOTH-CASE-P
1192                                     CDDAAR CDDADR CLEAR-INPUT COPY-TREE
1193                                     CDDAR CLEAR-OUTPUT COS CDDDAR CLOSE COSH
1194                                     CDDDDR CLRHASH COUNT CDDDR CODE-CHAR
1195                                     COUNT-IF CDDR COERCE COUNT-IF-NOT
1196                                     CDR COMPILATION-SPEED CTYPECASE
1197                                     CEILING COMPILE DEBUG CELL-ERROR
1198                                     COMPILE-FILE DECF CELL-ERROR-NAME
1199                                     COMPILE-FILE-PATHNAME DECLAIM
1200                                     CERROR COMPILED-FUNCTION DECLARATION
1201                                     CHANGE-CLASS COMPILED-FUNCTION-P
1202                                     DECLARE CHAR COMPILER-MACRO DECODE-FLOAT
1203                                     CHAR-CODE COMPILER-MACRO-FUNCTION
1204                                     DECODE-UNIVERSAL-TIME
1205                                     CHAR-CODE-LIMIT COMPLEMENT DEFCLASS
1206                                     CHAR-DOWNCASE COMPLEX DEFCONSTANT
1207                                     CHAR-EQUAL COMPLEXP DEFGENERIC
1208                                     CHAR-GREATERP COMPUTE-APPLICABLE-METHODS
1209                                     DEFINE-COMPILER-MACRO
1210                                     CHAR-INT COMPUTE-RESTARTS
1211                                     DEFINE-CONDITION CHAR-LESSP
1212                                     CONCATENATE DEFINE-METHOD-COMBINATION
1213                                     CHAR-NAME CONCATENATED-STREAM
1214                                     DEFINE-MODIFY-MACRO CHAR-NOT-EQUAL
1215                                     CONCATENATED-STREAM-STREAMS
1216                                     DEFINE-SETF-EXPANDER CHAR-NOT-GREATERP
1217                                     COND DEFINE-SYMBOL-MACRO CHAR-NOT-LESSP
1218                                     CONDITION DEFMACRO CHAR-UPCASE CONJUGATE
1219                                     DEFMETHOD CHAR/= CONS DEFPACKAGE
1220                                     CHAR< CONSP DEFPARAMETER CHAR<=
1221                                     CONSTANTLY DEFSETF CHAR= CONSTANTP
1222                                     DEFSTRUCT CHAR> CONTINUE DEFTYPE
1223                                     CHAR>= CONTROL-ERROR DEFUN CHARACTER
1224                                     COPY-ALIST DEFVAR CHARACTERP COPY-LIST
1225                                     DELETE CHECK-TYPE COPY-PPRINT-DISPATCH
1226                                     DELETE-DUPLICATES CIS COPY-READTABLE
1227                                     DELETE-FILE CLASS COPY-SEQ DELETE-IF
1228                                     CLASS-NAME COPY-STRUCTURE DELETE-IF-NOT
1229                                     CLASS-OF COPY-SYMBOL DELETE-PACKAGE
1230                                     DENOMINATOR EQ DEPOSIT-FIELD
1231                                     EQL DESCRIBE EQUAL DESCRIBE-OBJECT
1232                                     EQUALP DESTRUCTURING-BIND
1233                                     ERROR DIGIT-CHAR ETYPECASE
1234                                     DIGIT-CHAR-P EVAL DIRECTORY EVAL-WHEN
1235                                     DIRECTORY-NAMESTRING EVENP DISASSEMBLE
1236                                     EVERY DIVISION-BY-ZERO EXP DO EXPORT
1237                                     DO* EXPT DO-ALL-SYMBOLS EXTENDED-CHAR
1238                                     DO-EXTERNAL-SYMBOLS FBOUNDP DO-SYMBOLS
1239                                     FCEILING DOCUMENTATION FDEFINITION
1240                                     DOLIST FFLOOR DOTIMES FIFTH DOUBLE-FLOAT
1241                                     FILE-AUTHOR DOUBLE-FLOAT-EPSILON
1242                                     FILE-ERROR DOUBLE-FLOAT-NEGATIVE-EPSILON
1243                                     FILE-ERROR-PATHNAME DPB FILE-LENGTH
1244                                     DRIBBLE FILE-NAMESTRING DYNAMIC-EXTENT
1245                                     FILE-POSITION ECASE FILE-STREAM
1246                                     ECHO-STREAM FILE-STRING-LENGTH
1247                                     ECHO-STREAM-INPUT-STREAM FILE-WRITE-DATE
1248                                     ECHO-STREAM-OUTPUT-STREAM
1249                                     FILL ED FILL-POINTER
1250                                     EIGHTH FIND ELT FIND-ALL-SYMBOLS
1251                                     ENCODE-UNIVERSAL-TIME FIND-CLASS
1252                                     END-OF-FILE FIND-IF ENDP FIND-IF-NOT
1253                                     ENOUGH-NAMESTRING FIND-METHOD
1254                                     ENSURE-DIRECTORIES-EXIST FIND-PACKAGE
1255                                     ENSURE-GENERIC-FUNCTION FIND-RESTART
1256                                     FIND-SYMBOL GET-INTERNAL-RUN-TIME
1257                                     FINISH-OUTPUT GET-MACRO-CHARACTER
1258                                     FIRST GET-OUTPUT-STREAM-STRING FIXNUM
1259                                     GET-PROPERTIES FLET GET-SETF-EXPANSION
1260                                     FLOAT GET-UNIVERSAL-TIME FLOAT-DIGITS
1261                                     GETF FLOAT-PRECISION GETHASH
1262                                     FLOAT-RADIX GO FLOAT-SIGN GRAPHIC-CHAR-P
1263                                     FLOATING-POINT-INEXACT HANDLER-BIND
1264                                     FLOATING-POINT-INVALID-OPERATION
1265                                     HANDLER-CASE FLOATING-POINT-OVERFLOW
1266                                     HASH-TABLE FLOATING-POINT-UNDERFLOW
1267                                     HASH-TABLE-COUNT FLOATP HASH-TABLE-P
1268                                     FLOOR HASH-TABLE-REHASH-SIZE FMAKUNBOUND
1269                                     HASH-TABLE-REHASH-THRESHOLD FORCE-OUTPUT
1270                                     HASH-TABLE-SIZE FORMAT HASH-TABLE-TEST
1271                                     FORMATTER HOST-NAMESTRING
1272                                     FOURTH IDENTITY FRESH-LINE
1273                                     IF FROUND IGNORABLE FTRUNCATE IGNORE
1274                                     FTYPE IGNORE-ERRORS FUNCALL IMAGPART
1275                                     FUNCTION IMPORT FUNCTION-KEYWORDS
1276                                     IN-PACKAGE FUNCTION-LAMBDA-EXPRESSION
1277                                     INCF FUNCTIONP INITIALIZE-INSTANCE
1278                                     GCD INLINE GENERIC-FUNCTION
1279                                     INPUT-STREAM-P GENSYM INSPECT
1280                                     GENTEMP INTEGER GET INTEGER-DECODE-FLOAT
1281                                     GET-DECODED-TIME INTEGER-LENGTH
1282                                     GET-DISPATCH-MACRO-CHARACTER
1283                                     INTEGERP GET-INTERNAL-REAL-TIME
1284                                     INTERACTIVE-STREAM-P
1285                                     INTERN LISP-IMPLEMENTATION-TYPE
1286                                     INTERNAL-TIME-UNITS-PER-SECOND
1287                                     LISP-IMPLEMENTATION-VERSION
1288                                     INTERSECTION LIST INVALID-METHOD-ERROR
1289                                     LIST* INVOKE-DEBUGGER
1290                                     LIST-ALL-PACKAGES INVOKE-RESTART
1291                                     LIST-LENGTH INVOKE-RESTART-INTERACTIVELY
1292                                     LISTEN ISQRT LISTP KEYWORD LOAD KEYWORDP
1293                                     LOAD-LOGICAL-PATHNAME-TRANSLATIONS
1294                                     LABELS LOAD-TIME-VALUE
1295                                     LAMBDA LOCALLY LAMBDA-LIST-KEYWORDS
1296                                     LOG LAMBDA-PARAMETERS-LIMIT
1297                                     LOGAND LAST LOGANDC1 LCM
1298                                     LOGANDC2 LDB LOGBITP LDB-TEST LOGCOUNT
1299                                     LDIFF LOGEQV LEAST-NEGATIVE-DOUBLE-FLOAT
1300                                     LOGICAL-PATHNAME
1301                                     LEAST-NEGATIVE-LONG-FLOAT
1302                                     LOGICAL-PATHNAME-TRANSLATIONS
1303                                     LEAST-NEGATIVE-NORMALIZED-DOUBLE-FLOAT
1304                                     LOGIOR
1305                                     LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT
1306                                     LOGNAND
1307                                     LEAST-NEGATIVE-NORMALIZED-SHORT-FLOAT
1308                                     LOGNOR
1309                                     LEAST-NEGATIVE-NORMALIZED-SINGLE-FLOAT
1310                                     LOGNOT LEAST-NEGATIVE-SHORT-FLOAT
1311                                     LOGORC1 LEAST-NEGATIVE-SINGLE-FLOAT
1312                                     LOGORC2 LEAST-POSITIVE-DOUBLE-FLOAT
1313                                     LOGTEST LEAST-POSITIVE-LONG-FLOAT LOGXOR
1314                                     LEAST-POSITIVE-NORMALIZED-DOUBLE-FLOAT
1315                                     LONG-FLOAT
1316                                     LEAST-POSITIVE-NORMALIZED-LONG-FLOAT
1317                                     LONG-FLOAT-EPSILON
1318                                     LEAST-POSITIVE-NORMALIZED-SHORT-FLOAT
1319                                     LONG-FLOAT-NEGATIVE-EPSILON
1320                                     LEAST-POSITIVE-NORMALIZED-SINGLE-FLOAT
1321                                     LONG-SITE-NAME
1322                                     LEAST-POSITIVE-SHORT-FLOAT LOOP
1323                                     LEAST-POSITIVE-SINGLE-FLOAT LOOP-FINISH
1324                                     LENGTH LOWER-CASE-P LET MACHINE-INSTANCE
1325                                     LET* MACHINE-TYPE MACHINE-VERSION
1326                                     MASK-FIELD MACRO-FUNCTION
1327                                     MAX MACROEXPAND MEMBER MACROEXPAND-1
1328                                     MEMBER-IF MACROLET MEMBER-IF-NOT
1329                                     MAKE-ARRAY MERGE MAKE-BROADCAST-STREAM
1330                                     MERGE-PATHNAMES MAKE-CONCATENATED-STREAM
1331                                     METHOD MAKE-CONDITION METHOD-COMBINATION
1332                                     MAKE-DISPATCH-MACRO-CHARACTER
1333                                     METHOD-COMBINATION-ERROR
1334                                     MAKE-ECHO-STREAM METHOD-QUALIFIERS
1335                                     MAKE-HASH-TABLE MIN MAKE-INSTANCE
1336                                     MINUSP MAKE-INSTANCES-OBSOLETE
1337                                     MISMATCH MAKE-LIST MOD MAKE-LOAD-FORM
1338                                     MOST-NEGATIVE-DOUBLE-FLOAT
1339                                     MAKE-LOAD-FORM-SAVING-SLOTS
1340                                     MOST-NEGATIVE-FIXNUM
1341                                     MAKE-METHOD MOST-NEGATIVE-LONG-FLOAT
1342                                     MAKE-PACKAGE MOST-NEGATIVE-SHORT-FLOAT
1343                                     MAKE-PATHNAME MOST-NEGATIVE-SINGLE-FLOAT
1344                                     MAKE-RANDOM-STATE
1345                                     MOST-POSITIVE-DOUBLE-FLOAT
1346                                     MAKE-SEQUENCE MOST-POSITIVE-FIXNUM
1347                                     MAKE-STRING MOST-POSITIVE-LONG-FLOAT
1348                                     MAKE-STRING-INPUT-STREAM
1349                                     MOST-POSITIVE-SHORT-FLOAT
1350                                     MAKE-STRING-OUTPUT-STREAM
1351                                     MOST-POSITIVE-SINGLE-FLOAT
1352                                     MAKE-SYMBOL MUFFLE-WARNING
1353                                     MAKE-SYNONYM-STREAM MULTIPLE-VALUE-BIND
1354                                     MAKE-TWO-WAY-STREAM MULTIPLE-VALUE-CALL
1355                                     MAKUNBOUND MULTIPLE-VALUE-LIST
1356                                     MAP MULTIPLE-VALUE-PROG1
1357                                     MAP-INTO MULTIPLE-VALUE-SETQ MAPC
1358                                     MULTIPLE-VALUES-LIMIT MAPCAN NAME-CHAR
1359                                     MAPCAR NAMESTRING MAPCON NBUTLAST
1360                                     MAPHASH NCONC MAPL NEXT-METHOD-P
1361                                     MAPLIST NIL NINTERSECTION PACKAGE-ERROR
1362                                     NINTH PACKAGE-ERROR-PACKAGE
1363                                     NO-APPLICABLE-METHOD PACKAGE-NAME
1364                                     NO-NEXT-METHOD PACKAGE-NICKNAMES
1365                                     NOT PACKAGE-SHADOWING-SYMBOLS
1366                                     NOTANY PACKAGE-USE-LIST NOTEVERY
1367                                     PACKAGE-USED-BY-LIST NOTINLINE PACKAGEP
1368                                     NRECONC PAIRLIS NREVERSE PARSE-ERROR
1369                                     NSET-DIFFERENCE PARSE-INTEGER
1370                                     NSET-EXCLUSIVE-OR PARSE-NAMESTRING
1371                                     NSTRING-CAPITALIZE PATHNAME
1372                                     NSTRING-DOWNCASE PATHNAME-DEVICE
1373                                     NSTRING-UPCASE PATHNAME-DIRECTORY
1374                                     NSUBLIS PATHNAME-HOST NSUBST
1375                                     PATHNAME-MATCH-P NSUBST-IF PATHNAME-NAME
1376                                     NSUBST-IF-NOT PATHNAME-TYPE NSUBSTITUTE
1377                                     PATHNAME-VERSION NSUBSTITUTE-IF
1378                                     PATHNAMEP NSUBSTITUTE-IF-NOT
1379                                     PEEK-CHAR NTH PHASE NTH-VALUE PI NTHCDR
1380                                     PLUSP NULL POP NUMBER POSITION NUMBERP
1381                                     POSITION-IF NUMERATOR POSITION-IF-NOT
1382                                     NUNION PPRINT ODDP PPRINT-DISPATCH
1383                                     OPEN PPRINT-EXIT-IF-LIST-EXHAUSTED
1384                                     OPEN-STREAM-P PPRINT-FILL
1385                                     OPTIMIZE PPRINT-INDENT OR PPRINT-LINEAR
1386                                     OTHERWISE PPRINT-LOGICAL-BLOCK
1387                                     OUTPUT-STREAM-P PPRINT-NEWLINE
1388                                     PACKAGE PPRINT-POP PPRINT-TAB READ-CHAR
1389                                     PPRINT-TABULAR READ-CHAR-NO-HANG
1390                                     PRIN1 READ-DELIMITED-LIST
1391                                     PRIN1-TO-STRING READ-FROM-STRING
1392                                     PRINC READ-LINE PRINC-TO-STRING
1393                                     READ-PRESERVING-WHITESPACE
1394                                     PRINT READ-SEQUENCE PRINT-NOT-READABLE
1395                                     READER-ERROR PRINT-NOT-READABLE-OBJECT
1396                                     READTABLE PRINT-OBJECT
1397                                     READTABLE-CASE PRINT-UNREADABLE-OBJECT
1398                                     READTABLEP PROBE-FILE
1399                                     REAL PROCLAIM REALP PROG REALPART
1400                                     PROG* REDUCE PROG1 REINITIALIZE-INSTANCE
1401                                     PROG2 REM PROGN REMF PROGRAM-ERROR
1402                                     REMHASH PROGV REMOVE PROVIDE
1403                                     REMOVE-DUPLICATES PSETF REMOVE-IF
1404                                     PSETQ REMOVE-IF-NOT PUSH REMOVE-METHOD
1405                                     PUSHNEW REMPROP QUOTE RENAME-FILE
1406                                     RANDOM RENAME-PACKAGE RANDOM-STATE
1407                                     REPLACE RANDOM-STATE-P REQUIRE RASSOC
1408                                     REST RASSOC-IF RESTART RASSOC-IF-NOT
1409                                     RESTART-BIND RATIO RESTART-CASE
1410                                     RATIONAL RESTART-NAME RATIONALIZE RETURN
1411                                     RATIONALP RETURN-FROM READ REVAPPEND
1412                                     READ-BYTE REVERSE ROOM SIMPLE-BIT-VECTOR
1413                                     ROTATEF SIMPLE-BIT-VECTOR-P
1414                                     ROUND SIMPLE-CONDITION ROW-MAJOR-AREF
1415                                     SIMPLE-CONDITION-FORMAT-ARGUMENTS
1416                                     RPLACA SIMPLE-CONDITION-FORMAT-CONTROL
1417                                     RPLACD SIMPLE-ERROR
1418                                     SAFETY SIMPLE-STRING SATISFIES
1419                                     SIMPLE-STRING-P SBIT SIMPLE-TYPE-ERROR
1420                                     SCALE-FLOAT SIMPLE-VECTOR SCHAR
1421                                     SIMPLE-VECTOR-P SEARCH SIMPLE-WARNING
1422                                     SECOND SIN SEQUENCE SINGLE-FLOAT
1423                                     SERIOUS-CONDITION SINGLE-FLOAT-EPSILON
1424                                     SET SINGLE-FLOAT-NEGATIVE-EPSILON
1425                                     SET-DIFFERENCE
1426                                     SINH SET-DISPATCH-MACRO-CHARACTER
1427                                     SIXTH SET-EXCLUSIVE-OR
1428                                     SLEEP SET-MACRO-CHARACTER SLOT-BOUNDP
1429                                     SET-PPRINT-DISPATCH SLOT-EXISTS-P
1430                                     SET-SYNTAX-FROM-CHAR SLOT-MAKUNBOUND
1431                                     SETF SLOT-MISSING SETQ SLOT-UNBOUND
1432                                     SEVENTH SLOT-VALUE SHADOW SOFTWARE-TYPE
1433                                     SHADOWING-IMPORT SOFTWARE-VERSION
1434                                     SHARED-INITIALIZE SOME SHIFTF SORT
1435                                     SHORT-FLOAT SPACE SHORT-FLOAT-EPSILON
1436                                     SPECIAL SHORT-FLOAT-NEGATIVE-EPSILON
1437                                     SPECIAL-OPERATOR-P SHORT-SITE-NAME
1438                                     SPEED SIGNAL SQRT SIGNED-BYTE
1439                                     STABLE-SORT SIGNUM STANDARD SIMPLE-ARRAY
1440                                     STANDARD-CHAR SIMPLE-BASE-STRING
1441                                     STANDARD-CHAR-P STANDARD-CLASS
1442                                     SUBLIS STANDARD-GENERIC-FUNCTION SUBSEQ
1443                                     STANDARD-METHOD SUBSETP STANDARD-OBJECT
1444                                     SUBST STEP SUBST-IF STORAGE-CONDITION
1445                                     SUBST-IF-NOT STORE-VALUE SUBSTITUTE
1446                                     STREAM SUBSTITUTE-IF STREAM-ELEMENT-TYPE
1447                                     SUBSTITUTE-IF-NOT STREAM-ERROR
1448                                     SUBTYPEP STREAM-ERROR-STREAM
1449                                     SVREF STREAM-EXTERNAL-FORMAT
1450                                     SXHASH STREAMP SYMBOL
1451                                     STRING SYMBOL-FUNCTION STRING-CAPITALIZE
1452                                     SYMBOL-MACROLET STRING-DOWNCASE
1453                                     SYMBOL-NAME STRING-EQUAL SYMBOL-PACKAGE
1454                                     STRING-GREATERP SYMBOL-PLIST
1455                                     STRING-LEFT-TRIM SYMBOL-VALUE
1456                                     STRING-LESSP SYMBOLP STRING-NOT-EQUAL
1457                                     SYNONYM-STREAM STRING-NOT-GREATERP
1458                                     SYNONYM-STREAM-SYMBOL STRING-NOT-LESSP T
1459                                     STRING-RIGHT-TRIM TAGBODY STRING-STREAM
1460                                     TAILP STRING-TRIM TAN STRING-UPCASE
1461                                     TANH STRING/= TENTH STRING< TERPRI
1462                                     STRING<= THE STRING= THIRD STRING>
1463                                     THROW STRING>= TIME STRINGP TRACE
1464                                     STRUCTURE TRANSLATE-LOGICAL-PATHNAME
1465                                     STRUCTURE-CLASS
1466                                     TRANSLATE-PATHNAME STRUCTURE-OBJECT
1467                                     TREE-EQUAL STYLE-WARNING TRUENAME
1468                                     TRUNCATE VALUES-LIST TWO-WAY-STREAM
1469                                     VARIABLE TWO-WAY-STREAM-INPUT-STREAM
1470                                     VECTOR TWO-WAY-STREAM-OUTPUT-STREAM
1471                                     VECTOR-POP TYPE VECTOR-PUSH TYPE-ERROR
1472                                     VECTOR-PUSH-EXTEND TYPE-ERROR-DATUM
1473                                     VECTORP TYPE-ERROR-EXPECTED-TYPE
1474                                     WARN TYPE-OF WARNING TYPECASE
1475                                     WHEN TYPEP WILD-PATHNAME-P UNBOUND-SLOT
1476                                     WITH-ACCESSORS UNBOUND-SLOT-INSTANCE
1477                                     WITH-COMPILATION-UNIT
1478                                     UNBOUND-VARIABLE WITH-CONDITION-RESTARTS
1479                                     UNDEFINED-FUNCTION
1480                                     WITH-HASH-TABLE-ITERATOR
1481                                     UNEXPORT WITH-INPUT-FROM-STRING UNINTERN
1482                                     WITH-OPEN-FILE UNION WITH-OPEN-STREAM
1483                                     UNLESS WITH-OUTPUT-TO-STRING UNREAD-CHAR
1484                                     WITH-PACKAGE-ITERATOR UNSIGNED-BYTE
1485                                     WITH-SIMPLE-RESTART UNTRACE WITH-SLOTS
1486                                     UNUSE-PACKAGE WITH-STANDARD-IO-SYNTAX
1487                                     UNWIND-PROTECT WRITE
1488                                     UPDATE-INSTANCE-FOR-DIFFERENT-CLASS
1489                                     WRITE-BYTE
1490                                     UPDATE-INSTANCE-FOR-REDEFINED-CLASS
1491                                     WRITE-CHAR UPGRADED-ARRAY-ELEMENT-TYPE
1492                                     WRITE-LINE UPGRADED-COMPLEX-PART-TYPE
1493                                     WRITE-SEQUENCE UPPER-CASE-P
1494                                     WRITE-STRING USE-PACKAGE WRITE-TO-STRING
1495                                     USE-VALUE Y-OR-N-P USER-HOMEDIR-PATHNAME
1496                                     YES-OR-NO-P VALUES ZEROP)))
1497       (IF (SYMBOLP Y)
1498           (EQUAL (SYMBOL-PACKAGE-NAME Y) '"ACL2")
1499           'NIL)
1500       'NIL)
1501   'NIL)
1502  (EQUAL (SYMBOL-PACKAGE-NAME (INTERN-IN-PACKAGE-OF-SYMBOL X Y))
1503         '"ACL2")))
1504
1505(DEFAXIOM
1506     KEYWORD-PACKAGE
1507     (IMPLIES (IF (STRINGP X)
1508                  (IF (SYMBOLP Y)
1509                      (EQUAL (SYMBOL-PACKAGE-NAME Y)
1510                             '"KEYWORD")
1511                      'NIL)
1512                  'NIL)
1513              (EQUAL (SYMBOL-PACKAGE-NAME (INTERN-IN-PACKAGE-OF-SYMBOL X Y))
1514                     '"KEYWORD")))
1515
1516(DEFAXIOM
1517  STRING-IS-NOT-CIRCULAR
1518  (EQUAL 'STRING
1519         (INTERN-IN-PACKAGE-OF-SYMBOL
1520              (COERCE (CONS '#\S
1521                            (CONS '#\T
1522                                  (CONS '#\R
1523                                        (CONS '#\I
1524                                              (CONS '#\N (CONS '#\G '0))))))
1525                      (CONS '#\S
1526                            (CONS '#\T
1527                                  (CONS '#\R
1528                                        (CONS '#\I
1529                                              (CONS '#\N (CONS '#\G '0)))))))
1530              (INTERN-IN-PACKAGE-OF-SYMBOL '0 '0))))
1531
1532(DEFAXIOM
1533 NIL-IS-NOT-CIRCULAR
1534 (EQUAL
1535  'NIL
1536  (INTERN-IN-PACKAGE-OF-SYMBOL (COERCE (CONS '#\N (CONS '#\I (CONS '#\L '0)))
1537                                       'STRING)
1538                               'STRING)))
1539
1540(DEFUN BINARY-APPEND (X Y)
1541       (IF (ENDP X)
1542           Y
1543           (CONS (CAR X)
1544                 (BINARY-APPEND (CDR X) Y))))
1545
1546(DEFTHM TRUE-LISTP-APPEND
1547        (IMPLIES (TRUE-LISTP B)
1548                 (TRUE-LISTP (BINARY-APPEND A B))))
1549
1550(DEFTHM STANDARD-CHAR-LISTP-APPEND
1551        (IMPLIES (TRUE-LISTP X)
1552                 (EQUAL (STANDARD-CHAR-LISTP (BINARY-APPEND X Y))
1553                        (IF (STANDARD-CHAR-LISTP X)
1554                            (STANDARD-CHAR-LISTP Y)
1555                            'NIL))))
1556
1557(DEFTHM CHARACTER-LISTP-APPEND
1558        (IMPLIES (TRUE-LISTP X)
1559                 (EQUAL (CHARACTER-LISTP (BINARY-APPEND X Y))
1560                        (IF (CHARACTER-LISTP X)
1561                            (CHARACTER-LISTP Y)
1562                            'NIL))))
1563
1564(DEFTHM APPEND-TO-NIL
1565        (IMPLIES (TRUE-LISTP X)
1566                 (EQUAL (BINARY-APPEND X 'NIL) X)))
1567
1568(DEFUN STRING-APPEND (STR1 STR2)
1569       (MUST-BE-EQUAL (COERCE (BINARY-APPEND (COERCE STR1 'LIST)
1570                                             (COERCE STR2 'LIST))
1571                              'STRING)
1572                      (STRING-APPEND STR1 STR2)))
1573
1574(DEFUN STRING-LISTP (X)
1575       (IF (ATOM X)
1576           (EQ X 'NIL)
1577           (IF (STRINGP (CAR X))
1578               (STRING-LISTP (CDR X))
1579               'NIL)))
1580
1581(DEFUN STRING-APPEND-LST (X)
1582       (IF (ENDP X)
1583           '""
1584           (STRING-APPEND (CAR X)
1585                          (STRING-APPEND-LST (CDR X)))))
1586
1587(DEFUN REMOVE (X L)
1588       (IF (ENDP L)
1589           'NIL
1590           (IF (EQL X (CAR L))
1591               (REMOVE X (CDR L))
1592               (CONS (CAR L) (REMOVE X (CDR L))))))
1593
1594(DEFUN REMOVE-EQ (X L)
1595       (IF (ENDP L)
1596           'NIL
1597           (IF (EQ X (CAR L))
1598               (REMOVE-EQ X (CDR L))
1599               (CONS (CAR L) (REMOVE-EQ X (CDR L))))))
1600
1601(DEFUN REMOVE-EQUAL (X L)
1602       (IF (ENDP L)
1603           'NIL
1604           (IF (EQUAL X (CAR L))
1605               (REMOVE-EQUAL X (CDR L))
1606               (CONS (CAR L)
1607                     (REMOVE-EQUAL X (CDR L))))))
1608
1609(DEFUN REMOVE1 (X L)
1610       (IF (ENDP L)
1611           'NIL
1612           (IF (EQL X (CAR L))
1613               (CDR L)
1614               (CONS (CAR L) (REMOVE1 X (CDR L))))))
1615
1616(DEFUN REMOVE1-EQ (X L)
1617       (IF (ENDP L)
1618           'NIL
1619           (IF (EQ X (CAR L))
1620               (CDR L)
1621               (CONS (CAR L) (REMOVE1-EQ X (CDR L))))))
1622
1623(DEFUN REMOVE1-EQUAL (X L)
1624       (IF (ENDP L)
1625           'NIL
1626           (IF (EQUAL X (CAR L))
1627               (CDR L)
1628               (CONS (CAR L)
1629                     (REMOVE1-EQUAL X (CDR L))))))
1630
1631(DEFUN PAIRLIS$ (X Y)
1632       (IF (ENDP X)
1633           'NIL
1634           (CONS (CONS (CAR X) (CAR Y))
1635                 (PAIRLIS$ (CDR X) (CDR Y)))))
1636
1637(DEFUN REMOVE-DUPLICATES-EQL (L)
1638       (IF (ENDP L)
1639           'NIL
1640           (IF (MEMBER (CAR L) (CDR L))
1641               (REMOVE-DUPLICATES-EQL (CDR L))
1642               (CONS (CAR L)
1643                     (REMOVE-DUPLICATES-EQL (CDR L))))))
1644
1645(DEFTHM CHARACTER-LISTP-REMOVE-DUPLICATES-EQL
1646        (IMPLIES (CHARACTER-LISTP X)
1647                 (CHARACTER-LISTP (REMOVE-DUPLICATES-EQL X))))
1648
1649(DEFUN REMOVE-DUPLICATES (L)
1650       (IF (STRINGP L)
1651           (COERCE (REMOVE-DUPLICATES-EQL (COERCE L 'LIST))
1652                   'STRING)
1653           (REMOVE-DUPLICATES-EQL L)))
1654
1655(DEFUN REMOVE-DUPLICATES-EQUAL (L)
1656       (IF (ENDP L)
1657           'NIL
1658           (IF (MEMBER-EQUAL (CAR L) (CDR L))
1659               (REMOVE-DUPLICATES-EQUAL (CDR L))
1660               (CONS (CAR L)
1661                     (REMOVE-DUPLICATES-EQUAL (CDR L))))))
1662
1663(DEFUN IDENTITY (X) X)
1664
1665(DEFUN REVAPPEND (X Y) (IF (ENDP X) Y (REVAPPEND (CDR X) (CONS (CAR X) Y))))
1666
1667(DEFTHM CHARACTER-LISTP-REVAPPEND
1668        (IMPLIES (TRUE-LISTP X)
1669                 (EQUAL (CHARACTER-LISTP (REVAPPEND X Y))
1670                        (IF (CHARACTER-LISTP X)
1671                            (CHARACTER-LISTP Y)
1672                            'NIL))))
1673
1674(DEFUN REVERSE (X)
1675       (IF (STRINGP X)
1676           (COERCE (REVAPPEND (COERCE X 'LIST) 'NIL)
1677                   'STRING)
1678           (REVAPPEND X 'NIL)))
1679
1680(DEFUN SET-DIFFERENCE-EQ (L1 L2)
1681       (IF (ENDP L1)
1682           'NIL
1683           (IF (MEMBER-EQ (CAR L1) L2)
1684               (SET-DIFFERENCE-EQ (CDR L1) L2)
1685               (CONS (CAR L1)
1686                     (SET-DIFFERENCE-EQ (CDR L1) L2)))))
1687
1688(DEFUN LISTP (X) (IF (CONSP X) (CONSP X) (EQUAL X 'NIL)))
1689
1690(DEFUN LAST (L) (IF (ATOM (CDR L)) L (LAST (CDR L))))
1691
1692(DEFUN FIRST-N-AC (I L AC)
1693       (IF (ZP I)
1694           (REVERSE AC)
1695           (FIRST-N-AC (BINARY-+ '-1 I)
1696                       (CDR L)
1697                       (CONS (CAR L) AC))))
1698
1699(DEFUN TAKE (N L) (FIRST-N-AC N L 'NIL))
1700
1701(DEFUN BUTLAST (LST N)
1702       ((LAMBDA (LNG LST N)
1703                (IF (NOT (< N LNG))
1704                    'NIL
1705                    (TAKE (BINARY-+ LNG (UNARY-- N)) LST)))
1706        (LEN LST)
1707        LST N))
1708
1709(DEFUN STRIP-CDRS (X)
1710       (IF (ENDP X)
1711           'NIL
1712           (CONS (CDR (CAR X))
1713                 (STRIP-CDRS (CDR X)))))
1714
1715(DEFUN MUTUAL-RECURSION-GUARDP (RST)
1716       (IF (ATOM RST)
1717           (EQUAL RST 'NIL)
1718           (IF (CONSP (CAR RST))
1719               (IF (TRUE-LISTP (CAR RST))
1720                   (IF (TRUE-LISTP (CAR (CDR (CDR (CAR RST)))))
1721                       (IF (MEMBER-EQ (CAR (CAR RST))
1722                                      '(DEFUN DEFUND DEFUN-NX DEFUND-NX))
1723                           (MUTUAL-RECURSION-GUARDP (CDR RST))
1724                           'NIL)
1725                       'NIL)
1726                   'NIL)
1727               'NIL)))
1728
1729(DEFUN COLLECT-CADRS-WHEN-CAR-EQ (X ALIST)
1730       (IF (ENDP ALIST)
1731           'NIL
1732           (IF (EQ X (CAR (CAR ALIST)))
1733               (CONS (CAR (CDR (CAR ALIST)))
1734                     (COLLECT-CADRS-WHEN-CAR-EQ X (CDR ALIST)))
1735               (COLLECT-CADRS-WHEN-CAR-EQ X (CDR ALIST)))))
1736
1737(DEFUN
1738 VALUE-TRIPLE-FN
1739 (FORM ON-SKIP-PROOFS CHECK)
1740 (CONS
1741  'COND
1742  (CONS
1743   (CONS (CONS 'AND
1744               (CONS (NOT ON-SKIP-PROOFS)
1745                     (CONS (CONS 'F-GET-GLOBAL
1746                                 (CONS (CONS 'QUOTE
1747                                             (CONS 'LD-SKIP-PROOFSP 'NIL))
1748                                       (CONS 'STATE 'NIL)))
1749                           'NIL)))
1750         (CONS (CONS 'VALUE (CONS ':SKIPPED 'NIL))
1751               'NIL))
1752   (CONS
1753    (CONS
1754     'T
1755     (CONS
1756      ((LAMBDA (FORM)
1757               (CONS 'STATE-GLOBAL-LET*
1758                     (CONS (CONS (CONS 'SAFE-MODE (CONS 'T 'NIL))
1759                                 'NIL)
1760                           (CONS (CONS 'VALUE (CONS FORM 'NIL))
1761                                 'NIL))))
1762       (CONS
1763        'LET
1764        (CONS
1765         (CONS (CONS 'CHECK (CONS CHECK 'NIL))
1766               'NIL)
1767         (CONS
1768          (CONS
1769           'COND
1770           (CONS
1771            (CONS
1772             'CHECK
1773             (CONS
1774              (CONS
1775               'COND
1776               (CONS
1777                (CONS (CONS 'CHECK-VARS-NOT-FREE
1778                            (CONS (CONS 'CHECK 'NIL)
1779                                  (CONS FORM 'NIL)))
1780                      (CONS ':PASSED 'NIL))
1781                (CONS
1782                 (CONS
1783                  (CONS 'TILDE-@P (CONS 'CHECK 'NIL))
1784                  (CONS
1785                    (CONS 'ER
1786                          (CONS 'HARD
1787                                (CONS (CONS 'QUOTE (CONS 'VALUE-TRIPLE 'NIL))
1788                                      (CONS '"Assertion failed:~%~@0~|"
1789                                            (CONS 'CHECK 'NIL)))))
1790                    'NIL))
1791                 (CONS
1792                  (CONS
1793                   'T
1794                   (CONS
1795                    (CONS
1796                       'ER
1797                       (CONS 'HARD
1798                             (CONS (CONS 'QUOTE (CONS 'VALUE-TRIPLE 'NIL))
1799                                   (CONS '"Assertion failed on form:~%~x0~|"
1800                                         (CONS (CONS 'QUOTE (CONS FORM 'NIL))
1801                                               'NIL)))))
1802                    'NIL))
1803                  'NIL))))
1804              'NIL))
1805            (CONS (CONS 'T (CONS FORM 'NIL)) 'NIL)))
1806          'NIL))))
1807      'NIL))
1808    'NIL))))
1809
1810(DEFUN XD-NAME (EVENT-TYPE NAME)
1811       (IF (EQ EVENT-TYPE 'DEFUND)
1812           (CONS ':DEFUND (CONS NAME 'NIL))
1813           (IF (EQ EVENT-TYPE 'DEFTHMD)
1814               (CONS ':DEFTHMD (CONS NAME 'NIL))
1815               (ILLEGAL 'XD-NAME
1816                        '"Unexpected event-type for xd-name, ~x0"
1817                        (CONS (CONS '#\0 EVENT-TYPE) 'NIL)))))
1818
1819(DEFUN DEFUND-NAME-LIST (DEFUNS ACC)
1820       (IF (ENDP DEFUNS)
1821           (REVERSE ACC)
1822           (DEFUND-NAME-LIST (CDR DEFUNS)
1823                             (CONS (IF (EQ (CAR (CAR DEFUNS)) 'DEFUND)
1824                                       (XD-NAME 'DEFUND
1825                                                (CAR (CDR (CAR DEFUNS))))
1826                                       (CAR (CDR (CAR DEFUNS))))
1827                                   ACC))))
1828
1829(DEFUN THROW-NONEXEC-ERROR (FN ACTUALS) 'NIL)
1830
1831(DEFUN
1832 DEFUN-NX-FN (FORM DISABLEDP)
1833 ((LAMBDA
1834   (NAME FORMALS REST DEFUNX)
1835   (CONS
1836    DEFUNX
1837    (CONS
1838     NAME
1839     (CONS
1840      FORMALS
1841      (CONS
1842       (CONS 'DECLARE
1843             (CONS (CONS 'XARGS
1844                         (CONS ':NON-EXECUTABLE
1845                               (CONS 'T
1846                                     (CONS ':MODE (CONS ':LOGIC 'NIL)))))
1847                   'NIL))
1848       (BINARY-APPEND
1849        (BUTLAST REST '1)
1850        (CONS
1851            (CONS 'PROG2$
1852                  (CONS (CONS 'THROW-NONEXEC-ERROR
1853                              (CONS (CONS 'QUOTE (CONS NAME 'NIL))
1854                                    (CONS (CONS 'LIST
1855                                                (BINARY-APPEND FORMALS 'NIL))
1856                                          'NIL)))
1857                        (BINARY-APPEND (LAST REST) 'NIL)))
1858            'NIL)))))))
1859  (CAR (CDR FORM))
1860  (CAR (CDR (CDR FORM)))
1861  (CDR (CDR (CDR FORM)))
1862  (IF DISABLEDP 'DEFUND 'DEFUN)))
1863
1864(DEFUN
1865   UPDATE-MUTUAL-RECURSION-FOR-DEFUN-NX-1
1866   (DEFS)
1867   (IF (ENDP DEFS)
1868       'NIL
1869       (IF (EQ (CAR (CAR DEFS)) 'DEFUN-NX)
1870           (CONS (DEFUN-NX-FN (CAR DEFS) 'NIL)
1871                 (UPDATE-MUTUAL-RECURSION-FOR-DEFUN-NX-1 (CDR DEFS)))
1872           (IF (EQ (CAR (CAR DEFS)) 'DEFUND-NX)
1873               (CONS (DEFUN-NX-FN (CAR DEFS) 'T)
1874                     (UPDATE-MUTUAL-RECURSION-FOR-DEFUN-NX-1 (CDR DEFS)))
1875               (CONS (CAR DEFS)
1876                     (UPDATE-MUTUAL-RECURSION-FOR-DEFUN-NX-1 (CDR DEFS)))))))
1877
1878(DEFUN UPDATE-MUTUAL-RECURSION-FOR-DEFUN-NX
1879       (DEFS)
1880       (IF (IF (ASSOC-EQ 'DEFUN-NX DEFS)
1881               (ASSOC-EQ 'DEFUN-NX DEFS)
1882               (ASSOC-EQ 'DEFUND-NX DEFS))
1883           (UPDATE-MUTUAL-RECURSION-FOR-DEFUN-NX-1 DEFS)
1884           DEFS))
1885
1886(MUTUAL-RECURSION
1887 (DEFUN
1888  PSEUDO-TERMP (X)
1889  (IF
1890   (ATOM X)
1891   (SYMBOLP X)
1892   (IF
1893     (EQ (CAR X) 'QUOTE)
1894     (IF (CONSP (CDR X))
1895         (NULL (CDR (CDR X)))
1896         'NIL)
1897     (IF (NOT (TRUE-LISTP X))
1898         'NIL
1899         (IF (NOT (PSEUDO-TERM-LISTP (CDR X)))
1900             'NIL
1901             (IF (SYMBOLP (CAR X))
1902                 (SYMBOLP (CAR X))
1903                 (IF (TRUE-LISTP (CAR X))
1904                     (IF (EQUAL (LENGTH (CAR X)) '3)
1905                         (IF (EQ (CAR (CAR X)) 'LAMBDA)
1906                             (IF (SYMBOL-LISTP (CAR (CDR (CAR X))))
1907                                 (IF (PSEUDO-TERMP (CAR (CDR (CDR (CAR X)))))
1908                                     (EQUAL (LENGTH (CAR (CDR (CAR X))))
1909                                            (LENGTH (CDR X)))
1910                                     'NIL)
1911                                 'NIL)
1912                             'NIL)
1913                         'NIL)
1914                     'NIL)))))))
1915 (DEFUN PSEUDO-TERM-LISTP (LST)
1916        (IF (ATOM LST)
1917            (EQUAL LST 'NIL)
1918            (IF (PSEUDO-TERMP (CAR LST))
1919                (PSEUDO-TERM-LISTP (CDR LST))
1920                'NIL))))
1921
1922(DEFTHM PSEUDO-TERM-LISTP-FORWARD-TO-TRUE-LISTP
1923        (IMPLIES (PSEUDO-TERM-LISTP X)
1924                 (TRUE-LISTP X)))
1925
1926(DEFUN PSEUDO-TERM-LIST-LISTP (L)
1927       (IF (ATOM L)
1928           (EQUAL L 'NIL)
1929           (IF (PSEUDO-TERM-LISTP (CAR L))
1930               (PSEUDO-TERM-LIST-LISTP (CDR L))
1931               'NIL)))
1932
1933(DEFUN ADD-TO-SET-EQ (X LST) (IF (MEMBER-EQ X LST) LST (CONS X LST)))
1934
1935(DEFUN ADD-TO-SET-EQL (X LST) (IF (MEMBER X LST) LST (CONS X LST)))
1936
1937(DEFUN QUOTEP (X) (IF (CONSP X) (EQ (CAR X) 'QUOTE) 'NIL))
1938
1939(DEFUN KWOTE (X) (CONS 'QUOTE (CONS X 'NIL)))
1940
1941(DEFUN KWOTE-LST (LST)
1942       (IF (ENDP LST)
1943           'NIL
1944           (CONS (KWOTE (CAR LST))
1945                 (KWOTE-LST (CDR LST)))))
1946
1947(DEFUN FN-SYMB (X)
1948       (IF (IF (CONSP X)
1949               (NOT (EQ 'QUOTE (CAR X)))
1950               'NIL)
1951           (CAR X)
1952           'NIL))
1953
1954(MUTUAL-RECURSION (DEFUN ALL-VARS1 (TERM ANS)
1955                         (IF (ATOM TERM)
1956                             (ADD-TO-SET-EQ TERM ANS)
1957                             (IF (EQ 'QUOTE (CAR TERM))
1958                                 ANS (ALL-VARS1-LST (CDR TERM) ANS))))
1959                  (DEFUN ALL-VARS1-LST (LST ANS)
1960                         (IF (ENDP LST)
1961                             ANS
1962                             (ALL-VARS1-LST (CDR LST)
1963                                            (ALL-VARS1 (CAR LST) ANS)))))
1964
1965(DEFUN ALL-VARS (TERM) (ALL-VARS1 TERM 'NIL))
1966
1967(DEFUN INTERSECTP-EQ (X Y)
1968       (IF (ENDP X)
1969           'NIL
1970           (IF (MEMBER-EQ (CAR X) Y)
1971               'T
1972               (INTERSECTP-EQ (CDR X) Y))))
1973
1974(DEFUN INTERSECTP (X Y)
1975       (IF (ENDP X)
1976           'NIL
1977           (IF (MEMBER (CAR X) Y)
1978               'T
1979               (INTERSECTP (CDR X) Y))))
1980
1981(DEFUN INTERSECTP-EQUAL (X Y)
1982       (IF (ENDP X)
1983           'NIL
1984           (IF (MEMBER-EQUAL (CAR X) Y)
1985               'T
1986               (INTERSECTP-EQUAL (CDR X) Y))))
1987
1988(DEFUN MAKE-FMT-BINDINGS (CHARS FORMS)
1989       (IF (ENDP FORMS)
1990           'NIL
1991           (CONS 'CONS
1992                 (CONS (CONS 'CONS
1993                             (CONS (CAR CHARS)
1994                                   (CONS (CAR FORMS) 'NIL)))
1995                       (CONS (MAKE-FMT-BINDINGS (CDR CHARS)
1996                                                (CDR FORMS))
1997                             'NIL)))))
1998
1999(DEFUN
2000 ER-PROGN-FN (LST)
2001 (IF
2002  (ENDP LST)
2003  'NIL
2004  (IF
2005   (ENDP (CDR LST))
2006   (CAR LST)
2007   (CONS
2008    'MV-LET
2009    (CONS
2010     '(ER-PROGN-NOT-TO-BE-USED-ELSEWHERE-ERP
2011           ER-PROGN-NOT-TO-BE-USED-ELSEWHERE-VAL
2012           STATE)
2013     (CONS
2014      (CAR LST)
2015      (CONS
2016       '(DECLARE (IGNORABLE ER-PROGN-NOT-TO-BE-USED-ELSEWHERE-VAL))
2017       (CONS
2018        (CONS
2019         'IF
2020         (CONS
2021          'ER-PROGN-NOT-TO-BE-USED-ELSEWHERE-ERP
2022          (CONS
2023               '(MV ER-PROGN-NOT-TO-BE-USED-ELSEWHERE-ERP
2024                    ER-PROGN-NOT-TO-BE-USED-ELSEWHERE-VAL
2025                    STATE)
2026               (CONS (CONS 'CHECK-VARS-NOT-FREE
2027                           (CONS '(ER-PROGN-NOT-TO-BE-USED-ELSEWHERE-ERP
2028                                       ER-PROGN-NOT-TO-BE-USED-ELSEWHERE-VAL)
2029                                 (CONS (ER-PROGN-FN (CDR LST)) 'NIL)))
2030                     'NIL))))
2031        'NIL))))))))
2032
2033(DEFUN LEGAL-CASE-CLAUSESP (TL)
2034       (IF (ATOM TL)
2035           (EQ TL 'NIL)
2036           (IF (IF (CONSP (CAR TL))
2037                   (IF (IF (EQLABLEP (CAR (CAR TL)))
2038                           (EQLABLEP (CAR (CAR TL)))
2039                           (EQLABLE-LISTP (CAR (CAR TL))))
2040                       (IF (CONSP (CDR (CAR TL)))
2041                           (IF (NULL (CDR (CDR (CAR TL))))
2042                               (IF (IF (EQ 'T (CAR (CAR TL)))
2043                                       (EQ 'T (CAR (CAR TL)))
2044                                       (EQ 'OTHERWISE (CAR (CAR TL))))
2045                                   (NULL (CDR TL))
2046                                   'T)
2047                               'NIL)
2048                           'NIL)
2049                       'NIL)
2050                   'NIL)
2051               (LEGAL-CASE-CLAUSESP (CDR TL))
2052               'NIL)))
2053
2054(DEFUN CASE-TEST (X PAT)
2055       (IF (ATOM PAT)
2056           (CONS 'EQL
2057                 (CONS X
2058                       (CONS (CONS 'QUOTE (CONS PAT 'NIL))
2059                             'NIL)))
2060           (CONS 'MEMBER
2061                 (CONS X
2062                       (CONS (CONS 'QUOTE (CONS PAT 'NIL))
2063                             'NIL)))))
2064
2065(DEFUN CASE-LIST (X L)
2066       (IF (ENDP L)
2067           'NIL
2068           (IF (IF (EQ 'T (CAR (CAR L)))
2069                   (EQ 'T (CAR (CAR L)))
2070                   (EQ 'OTHERWISE (CAR (CAR L))))
2071               (CONS (CONS 'T
2072                           (CONS (CAR (CDR (CAR L))) 'NIL))
2073                     'NIL)
2074               (IF (NULL (CAR (CAR L)))
2075                   (CASE-LIST X (CDR L))
2076                   (CONS (CONS (CASE-TEST X (CAR (CAR L)))
2077                               (CONS (CAR (CDR (CAR L))) 'NIL))
2078                         (CASE-LIST X (CDR L)))))))
2079
2080(DEFUN
2081  CASE-LIST-CHECK (L)
2082  (IF (ENDP L)
2083      'NIL
2084      (IF (IF (EQ 'T (CAR (CAR L)))
2085              (EQ 'T (CAR (CAR L)))
2086              (EQ 'OTHERWISE (CAR (CAR L))))
2087          (CONS (CONS 'T
2088                      (CONS (CONS 'CHECK-VARS-NOT-FREE
2089                                  (CONS '(CASE-DO-NOT-USE-ELSEWHERE)
2090                                        (CONS (CAR (CDR (CAR L))) 'NIL)))
2091                            'NIL))
2092                'NIL)
2093          (IF (NULL (CAR (CAR L)))
2094              (CASE-LIST-CHECK (CDR L))
2095              (CONS (CONS (CASE-TEST 'CASE-DO-NOT-USE-ELSEWHERE
2096                                     (CAR (CAR L)))
2097                          (CONS (CONS 'CHECK-VARS-NOT-FREE
2098                                      (CONS '(CASE-DO-NOT-USE-ELSEWHERE)
2099                                            (CONS (CAR (CDR (CAR L))) 'NIL)))
2100                                'NIL))
2101                    (CASE-LIST-CHECK (CDR L)))))))
2102
2103(DEFUN POSITION-EQUAL-AC (ITEM LST ACC)
2104       (IF (ENDP LST)
2105           'NIL
2106           (IF (EQUAL ITEM (CAR LST))
2107               ACC
2108               (POSITION-EQUAL-AC ITEM (CDR LST)
2109                                  (BINARY-+ '1 ACC)))))
2110
2111(DEFUN POSITION-AC (ITEM LST ACC)
2112       (IF (ENDP LST)
2113           'NIL
2114           (IF (EQL ITEM (CAR LST))
2115               ACC
2116               (POSITION-AC ITEM (CDR LST)
2117                            (BINARY-+ '1 ACC)))))
2118
2119(DEFUN POSITION-EQUAL (ITEM LST)
2120       (IF (STRINGP LST)
2121           (POSITION-AC ITEM (COERCE LST 'LIST) '0)
2122           (POSITION-EQUAL-AC ITEM LST '0)))
2123
2124(DEFUN POSITION-EQ-AC (ITEM LST ACC)
2125       (IF (ENDP LST)
2126           'NIL
2127           (IF (EQ ITEM (CAR LST))
2128               ACC
2129               (POSITION-EQ-AC ITEM (CDR LST)
2130                               (BINARY-+ '1 ACC)))))
2131
2132(DEFUN POSITION-EQ (ITEM LST) (POSITION-EQ-AC ITEM LST '0))
2133
2134(DEFUN POSITION (ITEM LST)
2135       (IF (STRINGP LST)
2136           (POSITION-AC ITEM (COERCE LST 'LIST) '0)
2137           (POSITION-AC ITEM LST '0)))
2138
2139(DEFUN NONNEGATIVE-INTEGER-QUOTIENT (I J)
2140       (IF (IF (= (NFIX J) '0)
2141               (= (NFIX J) '0)
2142               (< (IFIX I) J))
2143           '0
2144           (BINARY-+ '1
2145                     (NONNEGATIVE-INTEGER-QUOTIENT (BINARY-+ I (UNARY-- J))
2146                                                   J))))
2147
2148(DEFUN TRUE-LIST-LISTP (X)
2149       (IF (ATOM X)
2150           (EQ X 'NIL)
2151           (IF (TRUE-LISTP (CAR X))
2152               (TRUE-LIST-LISTP (CDR X))
2153               'NIL)))
2154
2155(DEFTHM TRUE-LIST-LISTP-FORWARD-TO-TRUE-LISTP
2156        (IMPLIES (TRUE-LIST-LISTP X)
2157                 (TRUE-LISTP X)))
2158
2159(DEFUN
2160 LEGAL-LET*-P
2161 (BINDINGS IGNORE-VARS IGNORED-SEEN TOP-FORM)
2162 (IF
2163  (ENDP BINDINGS)
2164  (IF
2165   (EQ IGNORE-VARS 'NIL)
2166   (EQ IGNORE-VARS 'NIL)
2167   (HARD-ERROR
2168    'LET*
2169    '"All variables declared IGNOREd or IGNORABLE in a ~
2170                          LET* form must be bound, but ~&0 ~#0~[is~/are~] not ~
2171                          bound in the form ~x1."
2172    (CONS (CONS '#\0 IGNORE-VARS)
2173          (CONS (CONS '#\1 TOP-FORM) 'NIL))))
2174  (IF
2175   (MEMBER-EQ (CAR (CAR BINDINGS))
2176              IGNORED-SEEN)
2177   (HARD-ERROR
2178    'LET*
2179    '"A variable bound more than once in a LET* form may not ~
2180                      be declared IGNOREd or IGNORABLE, but the variable ~x0 ~
2181                      is bound more than once in form ~x1 and yet is so ~
2182                      declared."
2183    (CONS (CONS '#\0 (CAR (CAR BINDINGS)))
2184          (CONS (CONS '#\1 TOP-FORM) 'NIL)))
2185   (IF (MEMBER-EQ (CAR (CAR BINDINGS))
2186                  IGNORE-VARS)
2187       (LEGAL-LET*-P (CDR BINDINGS)
2188                     (REMOVE (CAR (CAR BINDINGS))
2189                             IGNORE-VARS)
2190                     (CONS (CAR (CAR BINDINGS)) IGNORED-SEEN)
2191                     TOP-FORM)
2192       (LEGAL-LET*-P (CDR BINDINGS)
2193                     IGNORE-VARS IGNORED-SEEN TOP-FORM)))))
2194
2195(DEFUN WELL-FORMED-TYPE-DECLS-P (DECLS VARS)
2196       (IF (ENDP DECLS)
2197           'T
2198           (IF (SUBSETP-EQ (CDR (CDR (CAR DECLS)))
2199                           VARS)
2200               (WELL-FORMED-TYPE-DECLS-P (CDR DECLS)
2201                                         VARS)
2202               'NIL)))
2203
2204(DEFUN SYMBOL-LIST-LISTP (X)
2205       (IF (ATOM X)
2206           (EQ X 'NIL)
2207           (IF (SYMBOL-LISTP (CAR X))
2208               (SYMBOL-LIST-LISTP (CDR X))
2209               'NIL)))
2210
2211(DEFUN GET-TYPE-DECLS (VAR TYPE-DECLS)
2212       (IF (ENDP TYPE-DECLS)
2213           'NIL
2214           (IF (MEMBER-EQ VAR (CDR (CAR TYPE-DECLS)))
2215               (CONS (CONS 'TYPE
2216                           (CONS (CAR (CAR TYPE-DECLS))
2217                                 (CONS VAR 'NIL)))
2218                     (GET-TYPE-DECLS VAR (CDR TYPE-DECLS)))
2219               (GET-TYPE-DECLS VAR (CDR TYPE-DECLS)))))
2220
2221(DEFUN
2222 LET*-MACRO
2223 (BINDINGS IGNORE-VARS
2224           IGNORABLE-VARS TYPE-DECLS BODY)
2225 (IF
2226  (ENDP BINDINGS)
2227  (PROG2$
2228   (IF
2229    (NULL IGNORE-VARS)
2230    (NULL IGNORE-VARS)
2231    (HARD-ERROR
2232     'LET*-MACRO
2233     '"Implementation error: Ignored variables ~x0 ~
2234                                  must be bound in superior LET* form!"
2235     IGNORE-VARS))
2236   (PROG2$
2237    (IF
2238     (NULL IGNORABLE-VARS)
2239     (NULL IGNORABLE-VARS)
2240     (HARD-ERROR
2241      'LET*-MACRO
2242      '"Implementation error: Ignorable ~
2243                                          variables ~x0 must be bound in ~
2244                                          superior LET* form!"
2245      IGNORABLE-VARS))
2246    BODY))
2247  (CONS
2248   'LET
2249   (CONS
2250    (CONS (CAR BINDINGS) 'NIL)
2251    ((LAMBDA
2252      (REST TYPE-DECLS
2253            IGNORABLE-VARS IGNORE-VARS BINDINGS)
2254      (BINARY-APPEND
2255        (IF (MEMBER-EQ (CAR (CAR BINDINGS))
2256                       IGNORE-VARS)
2257            (CONS (CONS 'DECLARE
2258                        (CONS (CONS 'IGNORE
2259                                    (CONS (CAR (CAR BINDINGS)) 'NIL))
2260                              'NIL))
2261                  'NIL)
2262            'NIL)
2263        (BINARY-APPEND
2264             (IF (MEMBER-EQ (CAR (CAR BINDINGS))
2265                            IGNORABLE-VARS)
2266                 (CONS (CONS 'DECLARE
2267                             (CONS (CONS 'IGNORABLE
2268                                         (CONS (CAR (CAR BINDINGS)) 'NIL))
2269                                   'NIL))
2270                       'NIL)
2271                 'NIL)
2272             (BINARY-APPEND ((LAMBDA (VAR-TYPE-DECLS)
2273                                     (IF VAR-TYPE-DECLS
2274                                         (CONS (CONS 'DECLARE VAR-TYPE-DECLS)
2275                                               'NIL)
2276                                         'NIL))
2277                             (GET-TYPE-DECLS (CAR (CAR BINDINGS))
2278                                             TYPE-DECLS))
2279                            (CONS REST 'NIL)))))
2280     (LET*-MACRO (CDR BINDINGS)
2281                 (REMOVE (CAR (CAR BINDINGS))
2282                         IGNORE-VARS)
2283                 (REMOVE (CAR (CAR BINDINGS))
2284                         IGNORABLE-VARS)
2285                 TYPE-DECLS BODY)
2286     TYPE-DECLS
2287     IGNORABLE-VARS IGNORE-VARS BINDINGS)))))
2288
2289(DEFUN COLLECT-CDRS-WHEN-CAR-EQ (X ALIST)
2290       (IF (ENDP ALIST)
2291           'NIL
2292           (IF (EQ X (CAR (CAR ALIST)))
2293               (BINARY-APPEND (CDR (CAR ALIST))
2294                              (COLLECT-CDRS-WHEN-CAR-EQ X (CDR ALIST)))
2295               (COLLECT-CDRS-WHEN-CAR-EQ X (CDR ALIST)))))
2296
2297(DEFUN APPEND-LST (LST)
2298       (IF (ENDP LST)
2299           'NIL
2300           (BINARY-APPEND (CAR LST)
2301                          (APPEND-LST (CDR LST)))))
2302
2303(DEFUN RESTRICT-ALIST (KEYS ALIST)
2304       (IF (ENDP ALIST)
2305           'NIL
2306           (IF (MEMBER-EQ (CAR (CAR ALIST)) KEYS)
2307               (CONS (CAR ALIST)
2308                     (RESTRICT-ALIST KEYS (CDR ALIST)))
2309               (RESTRICT-ALIST KEYS (CDR ALIST)))))
2310
2311(DEFUN
2312 FLOOR (I J)
2313 ((LAMBDA
2314   (Q)
2315   ((LAMBDA
2316     (N Q)
2317     ((LAMBDA
2318         (D N)
2319         (IF (= D '1)
2320             N
2321             (IF (NOT (< N '0))
2322                 (NONNEGATIVE-INTEGER-QUOTIENT N D)
2323                 (BINARY-+ (UNARY-- (NONNEGATIVE-INTEGER-QUOTIENT (UNARY-- N)
2324                                                                  D))
2325                           '-1))))
2326      (DENOMINATOR Q)
2327      N))
2328    (NUMERATOR Q)
2329    Q))
2330  (BINARY-* I (UNARY-/ J))))
2331
2332(DEFUN
2333 CEILING (I J)
2334 ((LAMBDA
2335    (Q)
2336    ((LAMBDA
2337          (N Q)
2338          ((LAMBDA (D N)
2339                   (IF (= D '1)
2340                       N
2341                       (IF (NOT (< N '0))
2342                           (BINARY-+ (NONNEGATIVE-INTEGER-QUOTIENT N D)
2343                                     '1)
2344                           (UNARY-- (NONNEGATIVE-INTEGER-QUOTIENT (UNARY-- N)
2345                                                                  D)))))
2346           (DENOMINATOR Q)
2347           N))
2348     (NUMERATOR Q)
2349     Q))
2350  (BINARY-* I (UNARY-/ J))))
2351
2352(DEFUN
2353 TRUNCATE (I J)
2354 ((LAMBDA
2355    (Q)
2356    ((LAMBDA
2357          (N Q)
2358          ((LAMBDA (D N)
2359                   (IF (= D '1)
2360                       N
2361                       (IF (NOT (< N '0))
2362                           (NONNEGATIVE-INTEGER-QUOTIENT N D)
2363                           (UNARY-- (NONNEGATIVE-INTEGER-QUOTIENT (UNARY-- N)
2364                                                                  D)))))
2365           (DENOMINATOR Q)
2366           N))
2367     (NUMERATOR Q)
2368     Q))
2369  (BINARY-* I (UNARY-/ J))))
2370
2371(DEFUN
2372 ROUND (I J)
2373 ((LAMBDA
2374   (Q)
2375   (IF
2376      (INTEGERP Q)
2377      Q
2378      (IF (NOT (< Q '0))
2379          ((LAMBDA (FL Q)
2380                   ((LAMBDA (REMAINDER FL)
2381                            (IF (< '1/2 REMAINDER)
2382                                (BINARY-+ FL '1)
2383                                (IF (< REMAINDER '1/2)
2384                                    FL
2385                                    (IF (INTEGERP (BINARY-* FL (UNARY-/ '2)))
2386                                        FL (BINARY-+ FL '1)))))
2387                    (BINARY-+ Q (UNARY-- FL))
2388                    FL))
2389           (FLOOR Q '1)
2390           Q)
2391          ((LAMBDA (CL Q)
2392                   ((LAMBDA (REMAINDER CL)
2393                            (IF (< '-1/2 REMAINDER)
2394                                CL
2395                                (IF (< REMAINDER '-1/2)
2396                                    (BINARY-+ CL '-1)
2397                                    (IF (INTEGERP (BINARY-* CL (UNARY-/ '2)))
2398                                        CL (BINARY-+ CL '-1)))))
2399                    (BINARY-+ Q (UNARY-- CL))
2400                    CL))
2401           (CEILING Q '1)
2402           Q))))
2403  (BINARY-* I (UNARY-/ J))))
2404
2405(DEFUN MOD (X Y) (BINARY-+ X (UNARY-- (BINARY-* (FLOOR X Y) Y))))
2406
2407(DEFUN REM (X Y) (BINARY-+ X (UNARY-- (BINARY-* (TRUNCATE X Y) Y))))
2408
2409(DEFUN EVENP (X) (INTEGERP (BINARY-* X (UNARY-/ '2))))
2410
2411(DEFUN ODDP (X) (NOT (EVENP X)))
2412
2413(DEFUN ZEROP (X) (EQL X '0))
2414
2415(DEFUN PLUSP (X) (< '0 X))
2416
2417(DEFUN MINUSP (X) (< X '0))
2418
2419(DEFUN MIN (X Y) (IF (< X Y) X Y))
2420
2421(DEFUN MAX (X Y) (IF (< Y X) X Y))
2422
2423(DEFUN ABS (X) (IF (MINUSP X) (UNARY-- X) X))
2424
2425(DEFUN SIGNUM (X) (IF (ZEROP X) '0 (IF (MINUSP X) '-1 '1)))
2426
2427(DEFUN LOGNOT (I) (BINARY-+ (UNARY-- (IFIX I)) '-1))
2428
2429(DEFTHM STANDARD-CHAR-P-NTH
2430        (IMPLIES (IF (STANDARD-CHAR-LISTP CHARS)
2431                     (IF (NOT (< I '0))
2432                         (< I (LEN CHARS))
2433                         'NIL)
2434                     'NIL)
2435                 (STANDARD-CHAR-P (NTH I CHARS))))
2436
2437(DEFUN EXPT (R I)
2438       (IF (ZIP I)
2439           '1
2440           (IF (= (FIX R) '0)
2441               '0
2442               (IF (< '0 I)
2443                   (BINARY-* R (EXPT R (BINARY-+ I '-1)))
2444                   (BINARY-* (UNARY-/ R)
2445                             (EXPT R (BINARY-+ I '1)))))))
2446
2447(DEFUN
2448    LOGCOUNT (X)
2449    (IF (ZIP X)
2450        '0
2451        (IF (< X '0)
2452            (LOGCOUNT (LOGNOT X))
2453            (IF (EVENP X)
2454                (LOGCOUNT (NONNEGATIVE-INTEGER-QUOTIENT X '2))
2455                (BINARY-+ '1
2456                          (LOGCOUNT (NONNEGATIVE-INTEGER-QUOTIENT X '2)))))))
2457
2458(DEFUN NTHCDR (N L) (IF (ZP N) L (NTHCDR (BINARY-+ N '-1) (CDR L))))
2459
2460(DEFUN LOGBITP (I J) (ODDP (FLOOR (IFIX J) (EXPT '2 (NFIX I)))))
2461
2462(DEFUN ASH (I C) (FLOOR (BINARY-* (IFIX I) (EXPT '2 C)) '1))
2463
2464(DEFTHM EXPT-TYPE-PRESCRIPTION-NON-ZERO-BASE
2465        (IMPLIES (IF (ACL2-NUMBERP R)
2466                     (NOT (EQUAL R '0))
2467                     'NIL)
2468                 (NOT (EQUAL (EXPT R I) '0))))
2469
2470(DEFTHM RATIONALP-EXPT-TYPE-PRESCRIPTION
2471        (IMPLIES (RATIONALP R)
2472                 (RATIONALP (EXPT R I))))
2473
2474(DEFAXIOM CHAR-CODE-LINEAR (< (CHAR-CODE X) '256))
2475
2476(DEFAXIOM CODE-CHAR-TYPE (CHARACTERP (CODE-CHAR N)))
2477
2478(DEFAXIOM CODE-CHAR-CHAR-CODE-IS-IDENTITY
2479          (IMPLIES (FORCE (CHARACTERP C))
2480                   (EQUAL (CODE-CHAR (CHAR-CODE C)) C)))
2481
2482(DEFAXIOM CHAR-CODE-CODE-CHAR-IS-IDENTITY
2483          (IMPLIES (IF (FORCE (INTEGERP N))
2484                       (IF (FORCE (NOT (< N '0)))
2485                           (FORCE (< N '256))
2486                           'NIL)
2487                       'NIL)
2488                   (EQUAL (CHAR-CODE (CODE-CHAR N)) N)))
2489
2490(DEFUN CHAR< (X Y) (< (CHAR-CODE X) (CHAR-CODE Y)))
2491
2492(DEFUN CHAR> (X Y) (< (CHAR-CODE Y) (CHAR-CODE X)))
2493
2494(DEFUN CHAR<= (X Y) (NOT (< (CHAR-CODE Y) (CHAR-CODE X))))
2495
2496(DEFUN CHAR>= (X Y) (NOT (< (CHAR-CODE X) (CHAR-CODE Y))))
2497
2498(DEFUN STRING<-L (L1 L2 I)
2499       (IF (ENDP L1)
2500           (IF (ENDP L2) 'NIL I)
2501           (IF (ENDP L2)
2502               'NIL
2503               (IF (EQL (CAR L1) (CAR L2))
2504                   (STRING<-L (CDR L1)
2505                              (CDR L2)
2506                              (BINARY-+ I '1))
2507                   (IF (CHAR< (CAR L1) (CAR L2))
2508                       I 'NIL)))))
2509
2510(DEFUN STRING< (STR1 STR2)
2511       (STRING<-L (COERCE STR1 'LIST)
2512                  (COERCE STR2 'LIST)
2513                  '0))
2514
2515(DEFUN STRING> (STR1 STR2) (STRING< STR2 STR1))
2516
2517(DEFUN STRING<= (STR1 STR2)
2518       (IF (EQUAL STR1 STR2)
2519           (LENGTH STR1)
2520           (STRING< STR1 STR2)))
2521
2522(DEFUN STRING>= (STR1 STR2)
2523       (IF (EQUAL STR1 STR2)
2524           (LENGTH STR1)
2525           (STRING> STR1 STR2)))
2526
2527(DEFUN SYMBOL-< (X Y)
2528       ((LAMBDA (X1 Y1 Y X)
2529                (IF (STRING< X1 Y1)
2530                    (STRING< X1 Y1)
2531                    (IF (EQUAL X1 Y1)
2532                        (STRING< (SYMBOL-PACKAGE-NAME X)
2533                                 (SYMBOL-PACKAGE-NAME Y))
2534                        'NIL)))
2535        (SYMBOL-NAME X)
2536        (SYMBOL-NAME Y)
2537        Y X))
2538
2539(DEFTHM STRING<-L-IRREFLEXIVE (NOT (STRING<-L X X I)))
2540
2541(DEFTHM STRING<-IRREFLEXIVE (NOT (STRING< S S)))
2542
2543(DEFUN SUBSTITUTE-AC (NEW OLD SEQ ACC)
2544       (IF (ENDP SEQ)
2545           (REVERSE ACC)
2546           (IF (EQL OLD (CAR SEQ))
2547               (SUBSTITUTE-AC NEW OLD (CDR SEQ)
2548                              (CONS NEW ACC))
2549               (SUBSTITUTE-AC NEW OLD (CDR SEQ)
2550                              (CONS (CAR SEQ) ACC)))))
2551
2552(DEFUN SUBSTITUTE (NEW OLD SEQ)
2553       (IF (STRINGP SEQ)
2554           (COERCE (SUBSTITUTE-AC NEW OLD (COERCE SEQ 'LIST)
2555                                  'NIL)
2556                   'STRING)
2557           (SUBSTITUTE-AC NEW OLD SEQ 'NIL)))
2558
2559(DEFUN SUBSETP (X Y)
2560       (IF (ENDP X)
2561           'T
2562           (IF (MEMBER (CAR X) Y)
2563               (SUBSETP (CDR X) Y)
2564               'NIL)))
2565
2566(DEFUN SUBLIS (ALIST TREE)
2567       (IF (ATOM TREE)
2568           ((LAMBDA (PAIR TREE)
2569                    (IF PAIR (CDR PAIR) TREE))
2570            (ASSOC TREE ALIST)
2571            TREE)
2572           (CONS (SUBLIS ALIST (CAR TREE))
2573                 (SUBLIS ALIST (CDR TREE)))))
2574
2575(DEFUN SUBST (NEW OLD TREE)
2576       (IF (EQL OLD TREE)
2577           NEW
2578           (IF (ATOM TREE)
2579               TREE
2580               (CONS (SUBST NEW OLD (CAR TREE))
2581                     (SUBST NEW OLD (CDR TREE))))))
2582
2583(DEFUN PLIST-WORLDP (ALIST)
2584       (IF (ATOM ALIST)
2585           (EQ ALIST 'NIL)
2586           (IF (CONSP (CAR ALIST))
2587               (IF (SYMBOLP (CAR (CAR ALIST)))
2588                   (IF (CONSP (CDR (CAR ALIST)))
2589                       (IF (SYMBOLP (CAR (CDR (CAR ALIST))))
2590                           (PLIST-WORLDP (CDR ALIST))
2591                           'NIL)
2592                       'NIL)
2593                   'NIL)
2594               'NIL)))
2595
2596(DEFTHM PLIST-WORLDP-FORWARD-TO-ASSOC-EQ-EQUAL-ALISTP
2597        (IMPLIES (PLIST-WORLDP X)
2598                 (ASSOC-EQ-EQUAL-ALISTP X)))
2599
2600(DEFUN PUTPROP (SYMB KEY VALUE WORLD-ALIST)
2601       (CONS (CONS SYMB (CONS KEY VALUE))
2602             WORLD-ALIST))
2603
2604(DEFUN
2605 GETPROP-DEFAULT (SYMB KEY DEFAULT)
2606 (PROG2$
2607  (IF
2608   (CONSP DEFAULT)
2609   (IF
2610    (EQ (CAR DEFAULT) ':ERROR)
2611    (IF
2612     (CONSP (CDR DEFAULT))
2613     (IF (STRINGP (CAR (CDR DEFAULT)))
2614         (IF (NULL (CDR (CDR DEFAULT)))
2615             (HARD-ERROR
2616                  'GETPROP
2617                  '"No property was found under symbol ~x0 for key ~x1.  ~@2"
2618                  (CONS (CONS '#\0 SYMB)
2619                        (CONS (CONS '#\1 KEY)
2620                              (CONS (CONS '#\2 (CAR (CDR DEFAULT)))
2621                                    'NIL))))
2622             'NIL)
2623         'NIL)
2624     'NIL)
2625    'NIL)
2626   'NIL)
2627  DEFAULT))
2628
2629(DEFUN FGETPROP (SYMB KEY DEFAULT WORLD-ALIST)
2630       (IF (ENDP WORLD-ALIST)
2631           DEFAULT
2632           (IF (IF (EQ SYMB (CAR (CAR WORLD-ALIST)))
2633                   (EQ KEY (CAR (CDR (CAR WORLD-ALIST))))
2634                   'NIL)
2635               ((LAMBDA (ANS DEFAULT)
2636                        (IF (EQ ANS ':ACL2-PROPERTY-UNBOUND)
2637                            DEFAULT ANS))
2638                (CDR (CDR (CAR WORLD-ALIST)))
2639                DEFAULT)
2640               (FGETPROP SYMB KEY DEFAULT (CDR WORLD-ALIST)))))
2641
2642(DEFUN SGETPROP
2643       (SYMB KEY DEFAULT WORLD-NAME WORLD-ALIST)
2644       (IF (ENDP WORLD-ALIST)
2645           DEFAULT
2646           (IF (IF (EQ SYMB (CAR (CAR WORLD-ALIST)))
2647                   (EQ KEY (CAR (CDR (CAR WORLD-ALIST))))
2648                   'NIL)
2649               ((LAMBDA (ANS DEFAULT)
2650                        (IF (EQ ANS ':ACL2-PROPERTY-UNBOUND)
2651                            DEFAULT ANS))
2652                (CDR (CDR (CAR WORLD-ALIST)))
2653                DEFAULT)
2654               (SGETPROP SYMB KEY
2655                         DEFAULT WORLD-NAME (CDR WORLD-ALIST)))))
2656
2657(DEFUN ORDERED-SYMBOL-ALISTP (X)
2658       (IF (ATOM X)
2659           (NULL X)
2660           (IF (ATOM (CAR X))
2661               'NIL
2662               (IF (SYMBOLP (CAR (CAR X)))
2663                   (IF (IF (ATOM (CDR X))
2664                           (ATOM (CDR X))
2665                           (IF (CONSP (CAR (CDR X)))
2666                               (IF (SYMBOLP (CAR (CAR (CDR X))))
2667                                   (SYMBOL-< (CAR (CAR X))
2668                                             (CAR (CAR (CDR X))))
2669                                   'NIL)
2670                               'NIL))
2671                       (ORDERED-SYMBOL-ALISTP (CDR X))
2672                       'NIL)
2673                   'NIL))))
2674
2675(DEFTHM ORDERED-SYMBOL-ALISTP-FORWARD-TO-SYMBOL-ALISTP
2676        (IMPLIES (ORDERED-SYMBOL-ALISTP X)
2677                 (SYMBOL-ALISTP X)))
2678
2679(DEFUN ADD-PAIR (KEY VALUE L)
2680       (IF (ENDP L)
2681           (CONS (CONS KEY VALUE) 'NIL)
2682           (IF (EQ KEY (CAR (CAR L)))
2683               (CONS (CONS KEY VALUE) (CDR L))
2684               (IF (SYMBOL-< KEY (CAR (CAR L)))
2685                   (CONS (CONS KEY VALUE) L)
2686                   (CONS (CAR L)
2687                         (ADD-PAIR KEY VALUE (CDR L)))))))
2688
2689(DEFUN REMOVE-FIRST-PAIR (KEY L)
2690       (IF (ENDP L)
2691           'NIL
2692           (IF (EQ KEY (CAR (CAR L)))
2693               (CDR L)
2694               (CONS (CAR L)
2695                     (REMOVE-FIRST-PAIR KEY (CDR L))))))
2696
2697(DEFUN GETPROPS1 (ALIST)
2698       (IF (ENDP ALIST)
2699           'NIL
2700           (IF (IF (NULL (CDR (CAR ALIST)))
2701                   (NULL (CDR (CAR ALIST)))
2702                   (EQ (CAR (CDR (CAR ALIST)))
2703                       ':ACL2-PROPERTY-UNBOUND))
2704               (GETPROPS1 (CDR ALIST))
2705               (CONS (CONS (CAR (CAR ALIST))
2706                           (CAR (CDR (CAR ALIST))))
2707                     (GETPROPS1 (CDR ALIST))))))
2708
2709(DEFUN
2710    GETPROPS (SYMB WORLD-NAME WORLD-ALIST)
2711    (IF (ENDP WORLD-ALIST)
2712        'NIL
2713        (IF (EQ SYMB (CAR (CAR WORLD-ALIST)))
2714            ((LAMBDA (ALIST WORLD-ALIST)
2715                     (IF (EQ (CDR (CDR (CAR WORLD-ALIST)))
2716                             ':ACL2-PROPERTY-UNBOUND)
2717                         (IF (ASSOC-EQ (CAR (CDR (CAR WORLD-ALIST)))
2718                                       ALIST)
2719                             (REMOVE-FIRST-PAIR (CAR (CDR (CAR WORLD-ALIST)))
2720                                                ALIST)
2721                             ALIST)
2722                         (ADD-PAIR (CAR (CDR (CAR WORLD-ALIST)))
2723                                   (CDR (CDR (CAR WORLD-ALIST)))
2724                                   ALIST)))
2725             (GETPROPS SYMB WORLD-NAME (CDR WORLD-ALIST))
2726             WORLD-ALIST)
2727            (GETPROPS SYMB WORLD-NAME (CDR WORLD-ALIST)))))
2728
2729(DEFTHM EQUAL-CHAR-CODE
2730        (IMPLIES (IF (CHARACTERP X) (CHARACTERP Y) 'NIL)
2731                 (IMPLIES (EQUAL (CHAR-CODE X) (CHAR-CODE Y))
2732                          (EQUAL X Y))))
2733
2734(DEFUN HAS-PROPSP1
2735       (ALIST EXCEPTIONS KNOWN-UNBOUND)
2736       (IF (ENDP ALIST)
2737           'NIL
2738           (IF (IF (NULL (CDR (CAR ALIST)))
2739                   (NULL (CDR (CAR ALIST)))
2740                   (IF (EQ (CAR (CDR (CAR ALIST)))
2741                           ':ACL2-PROPERTY-UNBOUND)
2742                       (EQ (CAR (CDR (CAR ALIST)))
2743                           ':ACL2-PROPERTY-UNBOUND)
2744                       (IF (MEMBER-EQ (CAR (CAR ALIST)) EXCEPTIONS)
2745                           (MEMBER-EQ (CAR (CAR ALIST)) EXCEPTIONS)
2746                           (MEMBER-EQ (CAR (CAR ALIST))
2747                                      KNOWN-UNBOUND))))
2748               (HAS-PROPSP1 (CDR ALIST)
2749                            EXCEPTIONS KNOWN-UNBOUND)
2750               'T)))
2751
2752(DEFUN HAS-PROPSP
2753       (SYMB EXCEPTIONS
2754             WORLD-NAME WORLD-ALIST KNOWN-UNBOUND)
2755       (IF (ENDP WORLD-ALIST)
2756           'NIL
2757           (IF (IF (NOT (EQ SYMB (CAR (CAR WORLD-ALIST))))
2758                   (NOT (EQ SYMB (CAR (CAR WORLD-ALIST))))
2759                   (IF (MEMBER-EQ (CAR (CDR (CAR WORLD-ALIST)))
2760                                  EXCEPTIONS)
2761                       (MEMBER-EQ (CAR (CDR (CAR WORLD-ALIST)))
2762                                  EXCEPTIONS)
2763                       (MEMBER-EQ (CAR (CDR (CAR WORLD-ALIST)))
2764                                  KNOWN-UNBOUND)))
2765               (HAS-PROPSP SYMB
2766                           EXCEPTIONS WORLD-NAME (CDR WORLD-ALIST)
2767                           KNOWN-UNBOUND)
2768               (IF (EQ (CDR (CDR (CAR WORLD-ALIST)))
2769                       ':ACL2-PROPERTY-UNBOUND)
2770                   (HAS-PROPSP SYMB
2771                               EXCEPTIONS WORLD-NAME (CDR WORLD-ALIST)
2772                               (CONS (CAR (CDR (CAR WORLD-ALIST)))
2773                                     KNOWN-UNBOUND))
2774                   'T))))
2775
2776(DEFUN EXTEND-WORLD (NAME WRLD) WRLD)
2777
2778(DEFUN RETRACT-WORLD (NAME WRLD) WRLD)
2779
2780(DEFUN
2781 GLOBAL-VAL (VAR WRLD)
2782 (FGETPROP
2783  VAR 'GLOBAL-VALUE
2784  '(:ERROR
2785    "GLOBAL-VAL didn't find a value.  Initialize this ~
2786                     symbol in PRIMORDIAL-WORLD-GLOBALS.")
2787  WRLD))
2788
2789(DEFUN FUNCTION-SYMBOLP (SYM WRLD)
2790       (NOT (EQ (FGETPROP SYM 'FORMALS 'T WRLD)
2791                'T)))
2792
2793(DEFUN WEAK-SATISFIES-TYPE-SPEC-P (X)
2794       (IF (CONSP X)
2795           (IF (EQ (CAR X) 'SATISFIES)
2796               (IF (TRUE-LISTP X)
2797                   (IF (EQUAL (LENGTH X) '2)
2798                       (SYMBOLP (CAR (CDR X)))
2799                       'NIL)
2800                   'NIL)
2801               'NIL)
2802           'NIL))
2803
2804(DEFUN THE-ERROR (X Y) Y)
2805
2806(DEFUN SET-DIFFERENCE-EQUAL (L1 L2)
2807       (IF (ENDP L1)
2808           'NIL
2809           (IF (MEMBER-EQUAL (CAR L1) L2)
2810               (SET-DIFFERENCE-EQUAL (CDR L1) L2)
2811               (CONS (CAR L1)
2812                     (SET-DIFFERENCE-EQUAL (CDR L1) L2)))))
2813
2814(DEFUN BOUNDED-INTEGER-ALISTP (L N)
2815       (IF (ATOM L)
2816           (NULL L)
2817           (IF (CONSP (CAR L))
2818               ((LAMBDA (KEY L N)
2819                        (IF (IF (EQ KEY ':HEADER)
2820                                (EQ KEY ':HEADER)
2821                                (IF (INTEGERP KEY)
2822                                    (IF (INTEGERP N)
2823                                        (IF (NOT (< KEY '0)) (< KEY N) 'NIL)
2824                                        'NIL)
2825                                    'NIL))
2826                            (BOUNDED-INTEGER-ALISTP (CDR L) N)
2827                            'NIL))
2828                (CAR (CAR L))
2829                L N)
2830               'NIL)))
2831
2832(DEFTHM BOUNDED-INTEGER-ALISTP-FORWARD-TO-EQLABLE-ALISTP
2833        (IMPLIES (BOUNDED-INTEGER-ALISTP X N)
2834                 (EQLABLE-ALISTP X)))
2835
2836(DEFUN KEYWORD-VALUE-LISTP (L)
2837       (IF (ATOM L)
2838           (NULL L)
2839           (IF (KEYWORDP (CAR L))
2840               (IF (CONSP (CDR L))
2841                   (KEYWORD-VALUE-LISTP (CDR (CDR L)))
2842                   'NIL)
2843               'NIL)))
2844
2845(DEFTHM KEYWORD-VALUE-LISTP-FORWARD-TO-TRUE-LISTP
2846        (IMPLIES (KEYWORD-VALUE-LISTP X)
2847                 (TRUE-LISTP X)))
2848
2849(DEFUN ASSOC-KEYWORD (KEY L)
2850       (IF (ENDP L)
2851           'NIL
2852           (IF (EQ KEY (CAR L))
2853               L (ASSOC-KEYWORD KEY (CDR (CDR L))))))
2854
2855(DEFTHM KEYWORD-VALUE-LISTP-ASSOC-KEYWORD
2856        (IMPLIES (KEYWORD-VALUE-LISTP L)
2857                 (KEYWORD-VALUE-LISTP (ASSOC-KEYWORD KEY L))))
2858
2859(DEFTHM CONSP-ASSOC-EQ
2860        (IMPLIES (ALISTP L)
2861                 (IF (CONSP (ASSOC-EQ NAME L))
2862                     (CONSP (ASSOC-EQ NAME L))
2863                     (EQUAL (ASSOC-EQ NAME L) 'NIL))))
2864
2865(DEFUN
2866 ARRAY1P (NAME L)
2867 (IF
2868  (SYMBOLP NAME)
2869  (IF
2870   (ALISTP L)
2871   ((LAMBDA
2872     (HEADER-KEYWORD-LIST L)
2873     (IF
2874      (KEYWORD-VALUE-LISTP HEADER-KEYWORD-LIST)
2875      ((LAMBDA
2876        (DIMENSIONS MAXIMUM-LENGTH L)
2877        (IF
2878          (TRUE-LISTP DIMENSIONS)
2879          (IF (EQUAL (LENGTH DIMENSIONS) '1)
2880              (IF (INTEGERP (CAR DIMENSIONS))
2881                  (IF (INTEGERP MAXIMUM-LENGTH)
2882                      (IF (< '0 (CAR DIMENSIONS))
2883                          (IF (< (CAR DIMENSIONS) MAXIMUM-LENGTH)
2884                              (IF (NOT (< '2147483647 MAXIMUM-LENGTH))
2885                                  (BOUNDED-INTEGER-ALISTP L (CAR DIMENSIONS))
2886                                  'NIL)
2887                              'NIL)
2888                          'NIL)
2889                      'NIL)
2890                  'NIL)
2891              'NIL)
2892          'NIL))
2893       (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
2894                                HEADER-KEYWORD-LIST)))
2895       (CAR (CDR (ASSOC-KEYWORD ':MAXIMUM-LENGTH
2896                                HEADER-KEYWORD-LIST)))
2897       L)
2898      'NIL))
2899    (CDR (ASSOC-EQ ':HEADER L))
2900    L)
2901   'NIL)
2902  'NIL))
2903
2904(DEFTHM
2905 ARRAY1P-FORWARD
2906 (IMPLIES
2907  (ARRAY1P NAME L)
2908  (IF
2909   (SYMBOLP NAME)
2910   (IF
2911    (ALISTP L)
2912    (IF
2913     (KEYWORD-VALUE-LISTP (CDR (ASSOC-EQ ':HEADER L)))
2914     (IF
2915      (TRUE-LISTP (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
2916                                           (CDR (ASSOC-EQ ':HEADER L))))))
2917      (IF
2918       (EQUAL
2919            (LENGTH (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
2920                                             (CDR (ASSOC-EQ ':HEADER L))))))
2921            '1)
2922       (IF
2923        (INTEGERP
2924             (CAR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
2925                                           (CDR (ASSOC-EQ ':HEADER L)))))))
2926        (IF
2927         (INTEGERP (CAR (CDR (ASSOC-KEYWORD ':MAXIMUM-LENGTH
2928                                            (CDR (ASSOC-EQ ':HEADER L))))))
2929         (IF
2930          (< '0
2931             (CAR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
2932                                           (CDR (ASSOC-EQ ':HEADER L)))))))
2933          (IF
2934           (< (CAR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
2935                                            (CDR (ASSOC-EQ ':HEADER L))))))
2936              (CAR (CDR (ASSOC-KEYWORD ':MAXIMUM-LENGTH
2937                                       (CDR (ASSOC-EQ ':HEADER L))))))
2938           (IF
2939            (NOT (< '2147483647
2940                    (CAR (CDR (ASSOC-KEYWORD ':MAXIMUM-LENGTH
2941                                             (CDR (ASSOC-EQ ':HEADER L)))))))
2942            (BOUNDED-INTEGER-ALISTP
2943               L
2944               (CAR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
2945                                             (CDR (ASSOC-EQ ':HEADER L)))))))
2946            'NIL)
2947           'NIL)
2948          'NIL)
2949         'NIL)
2950        'NIL)
2951       'NIL)
2952      'NIL)
2953     'NIL)
2954    'NIL)
2955   'NIL)))
2956
2957(DEFTHM
2958 ARRAY1P-LINEAR
2959 (IMPLIES
2960    (ARRAY1P NAME L)
2961    (IF (< '0
2962           (CAR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
2963                                         (CDR (ASSOC-EQ ':HEADER L)))))))
2964        (IF (< (CAR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
2965                                             (CDR (ASSOC-EQ ':HEADER L))))))
2966               (CAR (CDR (ASSOC-KEYWORD ':MAXIMUM-LENGTH
2967                                        (CDR (ASSOC-EQ ':HEADER L))))))
2968            (NOT (< '2147483647
2969                    (CAR (CDR (ASSOC-KEYWORD ':MAXIMUM-LENGTH
2970                                             (CDR (ASSOC-EQ ':HEADER L)))))))
2971            'NIL)
2972        'NIL)))
2973
2974(DEFUN
2975 BOUNDED-INTEGER-ALISTP2 (L I J)
2976 (IF
2977  (ATOM L)
2978  (NULL L)
2979  (IF
2980   (CONSP (CAR L))
2981   (IF
2982    ((LAMBDA
2983      (KEY I J)
2984      (IF
2985       (EQ KEY ':HEADER)
2986       (EQ KEY ':HEADER)
2987       (IF
2988          (CONSP KEY)
2989          ((LAMBDA (I1 J1 J I)
2990                   (IF (INTEGERP I1)
2991                       (IF (INTEGERP J1)
2992                           (IF (INTEGERP I)
2993                               (IF (INTEGERP J)
2994                                   (IF (NOT (< I1 '0))
2995                                       (IF (< I1 I)
2996                                           (IF (NOT (< J1 '0)) (< J1 J) 'NIL)
2997                                           'NIL)
2998                                       'NIL)
2999                                   'NIL)
3000                               'NIL)
3001                           'NIL)
3002                       'NIL))
3003           (CAR KEY)
3004           (CDR KEY)
3005           J I)
3006          'NIL)))
3007     (CAR (CAR L))
3008     I J)
3009    (BOUNDED-INTEGER-ALISTP2 (CDR L) I J)
3010    'NIL)
3011   'NIL)))
3012
3013(DEFUN ASSOC2 (I J L)
3014       (IF (ATOM L)
3015           'NIL
3016           (IF (IF (CONSP (CAR L))
3017                   (IF (CONSP (CAR (CAR L)))
3018                       (IF (EQL I (CAR (CAR (CAR L))))
3019                           (EQL J (CDR (CAR (CAR L))))
3020                           'NIL)
3021                       'NIL)
3022                   'NIL)
3023               (CAR L)
3024               (ASSOC2 I J (CDR L)))))
3025
3026(DEFUN
3027 ARRAY2P (NAME L)
3028 (IF
3029  (SYMBOLP NAME)
3030  (IF
3031   (ALISTP L)
3032   ((LAMBDA
3033     (HEADER-KEYWORD-LIST L)
3034     (IF
3035      (KEYWORD-VALUE-LISTP HEADER-KEYWORD-LIST)
3036      ((LAMBDA
3037        (DIMENSIONS MAXIMUM-LENGTH L)
3038        (IF
3039         (TRUE-LISTP DIMENSIONS)
3040         (IF
3041          (EQUAL (LENGTH DIMENSIONS) '2)
3042          ((LAMBDA
3043             (D1 D2 L MAXIMUM-LENGTH)
3044             (IF (INTEGERP D1)
3045                 (IF (INTEGERP D2)
3046                     (IF (INTEGERP MAXIMUM-LENGTH)
3047                         (IF (< '0 D1)
3048                             (IF (< '0 D2)
3049                                 (IF (< (BINARY-* D1 D2) MAXIMUM-LENGTH)
3050                                     (IF (NOT (< '2147483647 MAXIMUM-LENGTH))
3051                                         (BOUNDED-INTEGER-ALISTP2 L D1 D2)
3052                                         'NIL)
3053                                     'NIL)
3054                                 'NIL)
3055                             'NIL)
3056                         'NIL)
3057                     'NIL)
3058                 'NIL))
3059           (CAR DIMENSIONS)
3060           (CAR (CDR DIMENSIONS))
3061           L MAXIMUM-LENGTH)
3062          'NIL)
3063         'NIL))
3064       (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3065                                HEADER-KEYWORD-LIST)))
3066       (CAR (CDR (ASSOC-KEYWORD ':MAXIMUM-LENGTH
3067                                HEADER-KEYWORD-LIST)))
3068       L)
3069      'NIL))
3070    (CDR (ASSOC-EQ ':HEADER L))
3071    L)
3072   'NIL)
3073  'NIL))
3074
3075(DEFTHM
3076 ARRAY2P-FORWARD
3077 (IMPLIES
3078  (ARRAY2P NAME L)
3079  (IF
3080   (SYMBOLP NAME)
3081   (IF
3082    (ALISTP L)
3083    (IF
3084     (KEYWORD-VALUE-LISTP (CDR (ASSOC-EQ ':HEADER L)))
3085     (IF
3086      (TRUE-LISTP (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3087                                           (CDR (ASSOC-EQ ':HEADER L))))))
3088      (IF
3089       (EQUAL
3090            (LENGTH (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3091                                             (CDR (ASSOC-EQ ':HEADER L))))))
3092            '2)
3093       (IF
3094        (INTEGERP
3095             (CAR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3096                                           (CDR (ASSOC-EQ ':HEADER L)))))))
3097        (IF
3098         (INTEGERP
3099          (CAR
3100              (CDR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3101                                            (CDR (ASSOC-EQ ':HEADER L))))))))
3102         (IF
3103          (INTEGERP (CAR (CDR (ASSOC-KEYWORD ':MAXIMUM-LENGTH
3104                                             (CDR (ASSOC-EQ ':HEADER L))))))
3105          (IF
3106           (< '0
3107              (CAR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3108                                            (CDR (ASSOC-EQ ':HEADER L)))))))
3109           (IF
3110            (<
3111             '0
3112             (CAR
3113              (CDR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3114                                            (CDR (ASSOC-EQ ':HEADER L))))))))
3115            (IF
3116             (<
3117              (BINARY-*
3118               (CAR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3119                                             (CDR (ASSOC-EQ ':HEADER L))))))
3120               (CAR
3121                (CDR
3122                   (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3123                                            (CDR (ASSOC-EQ ':HEADER L))))))))
3124              (CAR (CDR (ASSOC-KEYWORD ':MAXIMUM-LENGTH
3125                                       (CDR (ASSOC-EQ ':HEADER L))))))
3126             (IF
3127              (NOT
3128                 (< '2147483647
3129                    (CAR (CDR (ASSOC-KEYWORD ':MAXIMUM-LENGTH
3130                                             (CDR (ASSOC-EQ ':HEADER L)))))))
3131              (BOUNDED-INTEGER-ALISTP2
3132               L
3133               (CAR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3134                                             (CDR (ASSOC-EQ ':HEADER L))))))
3135               (CAR
3136                (CDR
3137                   (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3138                                            (CDR (ASSOC-EQ ':HEADER L))))))))
3139              'NIL)
3140             'NIL)
3141            'NIL)
3142           'NIL)
3143          'NIL)
3144         'NIL)
3145        'NIL)
3146       'NIL)
3147      'NIL)
3148     'NIL)
3149    'NIL)
3150   'NIL)))
3151
3152(DEFTHM
3153 ARRAY2P-LINEAR
3154 (IMPLIES
3155  (ARRAY2P NAME L)
3156  (IF
3157   (< '0
3158      (CAR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3159                                    (CDR (ASSOC-EQ ':HEADER L)))))))
3160   (IF
3161    (< '0
3162       (CAR (CDR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3163                                          (CDR (ASSOC-EQ ':HEADER L))))))))
3164    (IF
3165     (<
3166      (BINARY-*
3167         (CAR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3168                                       (CDR (ASSOC-EQ ':HEADER L))))))
3169         (CAR (CDR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3170                                            (CDR (ASSOC-EQ ':HEADER L))))))))
3171      (CAR (CDR (ASSOC-KEYWORD ':MAXIMUM-LENGTH
3172                               (CDR (ASSOC-EQ ':HEADER L))))))
3173     (NOT (< '2147483647
3174             (CAR (CDR (ASSOC-KEYWORD ':MAXIMUM-LENGTH
3175                                      (CDR (ASSOC-EQ ':HEADER L)))))))
3176     'NIL)
3177    'NIL)
3178   'NIL)))
3179
3180(DEFUN HEADER (NAME L) (PROG2$ NAME (ASSOC-EQ ':HEADER L)))
3181
3182(DEFUN DIMENSIONS (NAME L)
3183       (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3184                                (CDR (HEADER NAME L))))))
3185
3186(DEFUN MAXIMUM-LENGTH (NAME L)
3187       (CAR (CDR (ASSOC-KEYWORD ':MAXIMUM-LENGTH
3188                                (CDR (HEADER NAME L))))))
3189
3190(DEFUN DEFAULT (NAME L)
3191       (CAR (CDR (ASSOC-KEYWORD ':DEFAULT
3192                                (CDR (HEADER NAME L))))))
3193
3194(DEFTHM CONSP-ASSOC
3195        (IMPLIES (ALISTP L)
3196                 (IF (CONSP (ASSOC NAME L))
3197                     (CONSP (ASSOC NAME L))
3198                     (EQUAL (ASSOC NAME L) 'NIL))))
3199
3200(DEFUN AREF1 (NAME L N)
3201       ((LAMBDA (X L NAME)
3202                (IF (NULL X) (DEFAULT NAME L) (CDR X)))
3203        (IF (NOT (EQ N ':HEADER))
3204            (ASSOC N L)
3205            'NIL)
3206        L NAME))
3207
3208(DEFUN COMPRESS11 (NAME L I N DEFAULT)
3209       (IF (ZP (BINARY-+ N (UNARY-- I)))
3210           'NIL
3211           ((LAMBDA (PAIR N I L NAME DEFAULT)
3212                    (IF (IF (NULL PAIR)
3213                            (NULL PAIR)
3214                            (EQUAL (CDR PAIR) DEFAULT))
3215                        (COMPRESS11 NAME L (BINARY-+ I '1)
3216                                    N DEFAULT)
3217                        (CONS PAIR
3218                              (COMPRESS11 NAME L (BINARY-+ I '1)
3219                                          N DEFAULT))))
3220            (ASSOC I L)
3221            N I L NAME DEFAULT)))
3222
3223(DEFUN ARRAY-ORDER (HEADER)
3224       ((LAMBDA (ORDERP)
3225                (IF (IF ORDERP
3226                        (IF (EQ (CAR (CDR ORDERP)) 'NIL)
3227                            (EQ (CAR (CDR ORDERP)) 'NIL)
3228                            (EQ (CAR (CDR ORDERP)) ':NONE))
3229                        'NIL)
3230                    'NIL
3231                    (IF (IF ORDERP (EQ (CAR (CDR ORDERP)) '>)
3232                            'NIL)
3233                        '>
3234                        '<)))
3235        (ASSOC-KEYWORD ':ORDER (CDR HEADER))))
3236
3237(DEFUN
3238 COMPRESS1 (NAME L)
3239 ((LAMBDA
3240   (CASE-DO-NOT-USE-ELSEWHERE L NAME)
3241   (IF
3242    (EQL CASE-DO-NOT-USE-ELSEWHERE '<)
3243    (CONS (HEADER NAME L)
3244          (COMPRESS11 NAME L '0
3245                      (CAR (DIMENSIONS NAME L))
3246                      (DEFAULT NAME L)))
3247    (IF
3248     (EQL CASE-DO-NOT-USE-ELSEWHERE '>)
3249     (CONS (HEADER NAME L)
3250           (REVERSE (COMPRESS11 NAME L '0
3251                                (CAR (DIMENSIONS NAME L))
3252                                (DEFAULT NAME L))))
3253     (PROG2$
3254      (IF
3255       (< (MAXIMUM-LENGTH NAME L) (LENGTH L))
3256       (HARD-ERROR
3257        'COMPRESS1
3258        '"Attempted to compress a one-dimensional array named ~
3259                        ~x0 whose header specifies :ORDER ~x1 and whose ~
3260                        length, ~x2, exceeds its maximum-length, ~x3."
3261        (CONS (CONS '#\0 NAME)
3262              (CONS (CONS '#\1 'NIL)
3263                    (CONS (CONS '#\2 (LENGTH L))
3264                          (CONS (CONS '#\3 (MAXIMUM-LENGTH NAME L))
3265                                'NIL)))))
3266       'NIL)
3267      L))))
3268  (ARRAY-ORDER (HEADER NAME L))
3269  L NAME))
3270
3271(DEFTHM
3272   ARRAY1P-CONS
3273   (IMPLIES
3274        (IF (< N
3275               (CAR (CAR (CDR (ASSOC-KEYWORD ':DIMENSIONS
3276                                             (CDR (ASSOC-EQ ':HEADER L)))))))
3277            (IF (NOT (< N '0))
3278                (IF (INTEGERP N) (ARRAY1P NAME L) 'NIL)
3279                'NIL)
3280            'NIL)
3281        (ARRAY1P NAME (CONS (CONS N VAL) L))))
3282
3283(DEFUN ASET1 (NAME L N VAL)
3284       ((LAMBDA (L NAME)
3285                (IF (< (MAXIMUM-LENGTH NAME L) (LENGTH L))
3286                    (COMPRESS1 NAME L)
3287                    L))
3288        (CONS (CONS N VAL) L)
3289        NAME))
3290
3291(DEFUN AREF2 (NAME L I J)
3292       ((LAMBDA (X L NAME)
3293                (IF (NULL X) (DEFAULT NAME L) (CDR X)))
3294        (ASSOC2 I J L)
3295        L NAME))
3296
3297(DEFUN COMPRESS211 (NAME L I X J DEFAULT)
3298       (IF (ZP (BINARY-+ J (UNARY-- X)))
3299           'NIL
3300           ((LAMBDA (PAIR J X I L NAME DEFAULT)
3301                    (IF (IF (NULL PAIR)
3302                            (NULL PAIR)
3303                            (EQUAL (CDR PAIR) DEFAULT))
3304                        (COMPRESS211 NAME L I (BINARY-+ '1 X)
3305                                     J DEFAULT)
3306                        (CONS PAIR
3307                              (COMPRESS211 NAME L I (BINARY-+ '1 X)
3308                                           J DEFAULT))))
3309            (ASSOC2 I X L)
3310            J X I L NAME DEFAULT)))
3311
3312(DEFUN COMPRESS21 (NAME L N I J DEFAULT)
3313       (IF (ZP (BINARY-+ I (UNARY-- N)))
3314           'NIL
3315           (BINARY-APPEND (COMPRESS211 NAME L N '0 J DEFAULT)
3316                          (COMPRESS21 NAME L (BINARY-+ N '1)
3317                                      I J DEFAULT))))
3318
3319(DEFUN COMPRESS2 (NAME L)
3320       (CONS (HEADER NAME L)
3321             (COMPRESS21 NAME L '0
3322                         (CAR (DIMENSIONS NAME L))
3323                         (CAR (CDR (DIMENSIONS NAME L)))
3324                         (DEFAULT NAME L))))
3325
3326(DEFTHM ARRAY2P-CONS
3327        (IMPLIES (IF (< J (CAR (CDR (DIMENSIONS NAME L))))
3328                     (IF (NOT (< J '0))
3329                         (IF (INTEGERP J)
3330                             (IF (< I (CAR (DIMENSIONS NAME L)))
3331                                 (IF (NOT (< I '0))
3332                                     (IF (INTEGERP I) (ARRAY2P NAME L) 'NIL)
3333                                     'NIL)
3334                                 'NIL)
3335                             'NIL)
3336                         'NIL)
3337                     'NIL)
3338                 (ARRAY2P NAME (CONS (CONS (CONS I J) VAL) L))))
3339
3340(DEFUN ASET2 (NAME L I J VAL)
3341       ((LAMBDA (L NAME)
3342                (IF (< (MAXIMUM-LENGTH NAME L) (LENGTH L))
3343                    (COMPRESS2 NAME L)
3344                    L))
3345        (CONS (CONS (CONS I J) VAL) L)
3346        NAME))
3347
3348(DEFUN FLUSH-COMPRESS (NAME) 'NIL)
3349
3350(DEFUN CDRN (X I)
3351       (IF (ZP I)
3352           X
3353           (CDRN (CONS 'CDR (CONS X 'NIL))
3354                 (BINARY-+ '-1 I))))
3355
3356(DEFUN MV-NTH (N L)
3357       (IF (ENDP L)
3358           'NIL
3359           (IF (ZP N)
3360               (CAR L)
3361               (MV-NTH (BINARY-+ '-1 N) (CDR L)))))
3362
3363(DEFUN MAKE-MV-NTHS (ARGS CALL I)
3364       (IF (ENDP ARGS)
3365           'NIL
3366           (CONS (CONS (CAR ARGS)
3367                       (CONS (CONS 'MV-NTH (CONS I (CONS CALL 'NIL)))
3368                             'NIL))
3369                 (MAKE-MV-NTHS (CDR ARGS)
3370                               CALL (BINARY-+ I '1)))))
3371
3372(DEFUN MV-LIST (INPUT-ARITY X) X)
3373
3374(DEFUN UPDATE-NTH (KEY VAL L)
3375       (IF (ZP KEY)
3376           (CONS VAL (CDR L))
3377           (CONS (CAR L)
3378                 (UPDATE-NTH (BINARY-+ '-1 KEY)
3379                             VAL (CDR L)))))
3380
3381(DEFUN UPDATE-NTH-ARRAY (J KEY VAL L)
3382       (UPDATE-NTH J (UPDATE-NTH KEY VAL (NTH J L))
3383                   L))
3384
3385(DEFUN 32-BIT-INTEGERP (X)
3386       (IF (INTEGERP X)
3387           (IF (NOT (< '2147483647 X))
3388               (NOT (< X '-2147483648))
3389               'NIL)
3390           'NIL))
3391
3392(DEFTHM 32-BIT-INTEGERP-FORWARD-TO-INTEGERP
3393        (IMPLIES (32-BIT-INTEGERP X)
3394                 (INTEGERP X)))
3395
3396(DEFUN RATIONAL-LISTP (L)
3397       (IF (ATOM L)
3398           (EQ L 'NIL)
3399           (IF (RATIONALP (CAR L))
3400               (RATIONAL-LISTP (CDR L))
3401               'NIL)))
3402
3403(DEFTHM RATIONAL-LISTP-FORWARD-TO-TRUE-LISTP
3404        (IMPLIES (RATIONAL-LISTP X)
3405                 (TRUE-LISTP X)))
3406
3407(DEFUN INTEGER-LISTP (L)
3408       (IF (ATOM L)
3409           (EQUAL L 'NIL)
3410           (IF (INTEGERP (CAR L))
3411               (INTEGER-LISTP (CDR L))
3412               'NIL)))
3413
3414(DEFTHM INTEGER-LISTP-FORWARD-TO-RATIONAL-LISTP
3415        (IMPLIES (INTEGER-LISTP X)
3416                 (RATIONAL-LISTP X)))
3417
3418(DEFUN 32-BIT-INTEGER-LISTP (L)
3419       (IF (ATOM L)
3420           (EQUAL L 'NIL)
3421           (IF (32-BIT-INTEGERP (CAR L))
3422               (32-BIT-INTEGER-LISTP (CDR L))
3423               'NIL)))
3424
3425(DEFTHM 32-BIT-INTEGER-LISTP-FORWARD-TO-INTEGER-LISTP
3426        (IMPLIES (32-BIT-INTEGER-LISTP X)
3427                 (INTEGER-LISTP X)))
3428
3429(DEFUN OPEN-INPUT-CHANNELS (ST) (NTH '0 ST))
3430
3431(DEFUN UPDATE-OPEN-INPUT-CHANNELS (X ST) (UPDATE-NTH '0 X ST))
3432
3433(DEFUN OPEN-OUTPUT-CHANNELS (ST) (NTH '1 ST))
3434
3435(DEFUN UPDATE-OPEN-OUTPUT-CHANNELS (X ST) (UPDATE-NTH '1 X ST))
3436
3437(DEFUN GLOBAL-TABLE (ST) (NTH '2 ST))
3438
3439(DEFUN UPDATE-GLOBAL-TABLE (X ST) (UPDATE-NTH '2 X ST))
3440
3441(DEFUN T-STACK (ST) (NTH '3 ST))
3442
3443(DEFUN UPDATE-T-STACK (X ST) (UPDATE-NTH '3 X ST))
3444
3445(DEFUN 32-BIT-INTEGER-STACK (ST) (NTH '4 ST))
3446
3447(DEFUN UPDATE-32-BIT-INTEGER-STACK (X ST) (UPDATE-NTH '4 X ST))
3448
3449(DEFUN BIG-CLOCK-ENTRY (ST) (NTH '5 ST))
3450
3451(DEFUN UPDATE-BIG-CLOCK-ENTRY (X ST) (UPDATE-NTH '5 X ST))
3452
3453(DEFUN IDATES (ST) (NTH '6 ST))
3454
3455(DEFUN UPDATE-IDATES (X ST) (UPDATE-NTH '6 X ST))
3456
3457(DEFUN ACL2-ORACLE (ST) (NTH '7 ST))
3458
3459(DEFUN UPDATE-ACL2-ORACLE (X ST) (UPDATE-NTH '7 X ST))
3460
3461(DEFUN FILE-CLOCK (ST) (NTH '8 ST))
3462
3463(DEFUN UPDATE-FILE-CLOCK (X ST) (UPDATE-NTH '8 X ST))
3464
3465(DEFUN READABLE-FILES (ST) (NTH '9 ST))
3466
3467(DEFUN WRITTEN-FILES (ST) (NTH '10 ST))
3468
3469(DEFUN UPDATE-WRITTEN-FILES (X ST) (UPDATE-NTH '10 X ST))
3470
3471(DEFUN READ-FILES (ST) (NTH '11 ST))
3472
3473(DEFUN UPDATE-READ-FILES (X ST) (UPDATE-NTH '11 X ST))
3474
3475(DEFUN WRITEABLE-FILES (ST) (NTH '12 ST))
3476
3477(DEFUN LIST-ALL-PACKAGE-NAMES-LST (ST) (NTH '13 ST))
3478
3479(DEFUN UPDATE-LIST-ALL-PACKAGE-NAMES-LST (X ST) (UPDATE-NTH '13 X ST))
3480
3481(DEFUN USER-STOBJ-ALIST1 (ST) (NTH '14 ST))
3482
3483(DEFUN UPDATE-USER-STOBJ-ALIST1 (X ST) (UPDATE-NTH '14 X ST))
3484
3485(DEFUN
3486 INIT-IPRINT-AR (HARD-BOUND ENABLEDP)
3487 ((LAMBDA
3488   (DIM ENABLEDP)
3489   (CONS
3490    (CONS
3491     ':HEADER
3492     (CONS
3493      ':DIMENSIONS
3494      (CONS
3495       (CONS DIM 'NIL)
3496       (CONS ':MAXIMUM-LENGTH
3497             (CONS (BINARY-* '4 DIM)
3498                   (CONS ':DEFAULT
3499                         (CONS 'NIL
3500                               (CONS ':NAME
3501                                     (CONS 'IPRINT-AR
3502                                           (CONS ':ORDER
3503                                                 (CONS ':NONE 'NIL)))))))))))
3504    (CONS (CONS '0
3505                (IF ENABLEDP '0 (CONS '0 'NIL)))
3506          'NIL)))
3507  (BINARY-+ '1 HARD-BOUND)
3508  ENABLEDP))
3509
3510(DEFUN ALL-BOUNDP (ALIST1 ALIST2)
3511       (IF (ENDP ALIST1)
3512           'T
3513           (IF (ASSOC (CAR (CAR ALIST1)) ALIST2)
3514               (ALL-BOUNDP (CDR ALIST1) ALIST2)
3515               'NIL)))
3516
3517(DEFUN KNOWN-PACKAGE-ALISTP (X)
3518       (IF (ATOM X)
3519           (NULL X)
3520           (IF (TRUE-LISTP (CAR X))
3521               (IF (STRINGP (CAR (CAR X)))
3522                   (IF (SYMBOL-LISTP (CAR (CDR (CAR X))))
3523                       (KNOWN-PACKAGE-ALISTP (CDR X))
3524                       'NIL)
3525                   'NIL)
3526               'NIL)))
3527
3528(DEFTHM KNOWN-PACKAGE-ALISTP-FORWARD-TO-TRUE-LIST-LISTP-AND-ALISTP
3529        (IMPLIES (KNOWN-PACKAGE-ALISTP X)
3530                 (IF (TRUE-LIST-LISTP X)
3531                     (ALISTP X)
3532                     'NIL)))
3533
3534(DEFUN TIMER-ALISTP (X)
3535       (IF (ATOM X)
3536           (EQUAL X 'NIL)
3537           (IF (IF (CONSP (CAR X))
3538                   (IF (SYMBOLP (CAR (CAR X)))
3539                       (RATIONAL-LISTP (CDR (CAR X)))
3540                       'NIL)
3541                   'NIL)
3542               (TIMER-ALISTP (CDR X))
3543               'NIL)))
3544
3545(DEFTHM TIMER-ALISTP-FORWARD-TO-TRUE-LIST-LISTP-AND-SYMBOL-ALISTP
3546        (IMPLIES (TIMER-ALISTP X)
3547                 (IF (TRUE-LIST-LISTP X)
3548                     (SYMBOL-ALISTP X)
3549                     'NIL)))
3550
3551(DEFUN TYPED-IO-LISTP (L TYP)
3552       (IF (ATOM L)
3553           (EQUAL L 'NIL)
3554           (IF (IF (EQL TYP ':CHARACTER)
3555                   (CHARACTERP (CAR L))
3556                   (IF (EQL TYP ':BYTE)
3557                       (IF (INTEGERP (CAR L))
3558                           (IF (NOT (< (CAR L) '0))
3559                               (< (CAR L) '256)
3560                               'NIL)
3561                           'NIL)
3562                       (IF (EQL TYP ':OBJECT) 'T 'NIL)))
3563               (TYPED-IO-LISTP (CDR L) TYP)
3564               'NIL)))
3565
3566(DEFTHM TYPED-IO-LISTP-FORWARD-TO-TRUE-LISTP
3567        (IMPLIES (TYPED-IO-LISTP X TYP)
3568                 (TRUE-LISTP X)))
3569
3570(DEFUN
3571 OPEN-CHANNEL1 (L)
3572 (IF
3573  (TRUE-LISTP L)
3574  (IF
3575   (CONSP L)
3576   ((LAMBDA (HEADER L)
3577            (IF (TRUE-LISTP HEADER)
3578                (IF (EQUAL (LENGTH HEADER) '4)
3579                    (IF (EQ (CAR HEADER) ':HEADER)
3580                        (IF (MEMBER-EQ (CAR (CDR HEADER))
3581                                       '(:CHARACTER :BYTE :OBJECT))
3582                            (IF (STRINGP (CAR (CDR (CDR HEADER))))
3583                                (IF (INTEGERP (CAR (CDR (CDR (CDR HEADER)))))
3584                                    (TYPED-IO-LISTP (CDR L)
3585                                                    (CAR (CDR HEADER)))
3586                                    'NIL)
3587                                'NIL)
3588                            'NIL)
3589                        'NIL)
3590                    'NIL)
3591                'NIL))
3592    (CAR L)
3593    L)
3594   'NIL)
3595  'NIL))
3596
3597(DEFTHM OPEN-CHANNEL1-FORWARD-TO-TRUE-LISTP-AND-CONSP
3598        (IMPLIES (OPEN-CHANNEL1 X)
3599                 (IF (TRUE-LISTP X) (CONSP X) 'NIL)))
3600
3601(DEFUN OPEN-CHANNEL-LISTP (L)
3602       (IF (ENDP L)
3603           'T
3604           (IF (OPEN-CHANNEL1 (CDR (CAR L)))
3605               (OPEN-CHANNEL-LISTP (CDR L))
3606               'NIL)))
3607
3608(DEFUN OPEN-CHANNELS-P (X)
3609       (IF (ORDERED-SYMBOL-ALISTP X)
3610           (OPEN-CHANNEL-LISTP X)
3611           'NIL))
3612
3613(DEFTHM OPEN-CHANNELS-P-FORWARD
3614        (IMPLIES (OPEN-CHANNELS-P X)
3615                 (IF (ORDERED-SYMBOL-ALISTP X)
3616                     (TRUE-LIST-LISTP X)
3617                     'NIL)))
3618
3619(DEFUN FILE-CLOCK-P (X) (NATP X))
3620
3621(DEFTHM FILE-CLOCK-P-FORWARD-TO-INTEGERP
3622        (IMPLIES (FILE-CLOCK-P X) (NATP X)))
3623
3624(DEFUN
3625 READABLE-FILE (X)
3626 (IF
3627    (TRUE-LISTP X)
3628    (IF (CONSP X)
3629        ((LAMBDA (KEY X)
3630                 (IF (TRUE-LISTP KEY)
3631                     (IF (EQUAL (LENGTH KEY) '3)
3632                         (IF (STRINGP (CAR KEY))
3633                             (IF (MEMBER (CAR (CDR KEY))
3634                                         '(:CHARACTER :BYTE :OBJECT))
3635                                 (IF (INTEGERP (CAR (CDR (CDR KEY))))
3636                                     (TYPED-IO-LISTP (CDR X) (CAR (CDR KEY)))
3637                                     'NIL)
3638                                 'NIL)
3639                             'NIL)
3640                         'NIL)
3641                     'NIL))
3642         (CAR X)
3643         X)
3644        'NIL)
3645    'NIL))
3646
3647(DEFTHM READABLE-FILE-FORWARD-TO-TRUE-LISTP-AND-CONSP
3648        (IMPLIES (READABLE-FILE X)
3649                 (IF (TRUE-LISTP X) (CONSP X) 'NIL)))
3650
3651(DEFUN READABLE-FILES-LISTP (X)
3652       (IF (ATOM X)
3653           (EQUAL X 'NIL)
3654           (IF (READABLE-FILE (CAR X))
3655               (READABLE-FILES-LISTP (CDR X))
3656               'NIL)))
3657
3658(DEFTHM READABLE-FILES-LISTP-FORWARD-TO-TRUE-LIST-LISTP-AND-ALISTP
3659        (IMPLIES (READABLE-FILES-LISTP X)
3660                 (IF (TRUE-LIST-LISTP X)
3661                     (ALISTP X)
3662                     'NIL)))
3663
3664(DEFUN READABLE-FILES-P (X) (READABLE-FILES-LISTP X))
3665
3666(DEFTHM READABLE-FILES-P-FORWARD-TO-READABLE-FILES-LISTP
3667        (IMPLIES (READABLE-FILES-P X)
3668                 (READABLE-FILES-LISTP X)))
3669
3670(DEFUN
3671 WRITTEN-FILE (X)
3672 (IF
3673  (TRUE-LISTP X)
3674  (IF
3675    (CONSP X)
3676    ((LAMBDA (KEY X)
3677             (IF (TRUE-LISTP KEY)
3678                 (IF (EQUAL (LENGTH KEY) '4)
3679                     (IF (STRINGP (CAR KEY))
3680                         (IF (INTEGERP (CAR (CDR (CDR KEY))))
3681                             (IF (INTEGERP (CAR (CDR (CDR (CDR KEY)))))
3682                                 (IF (MEMBER (CAR (CDR KEY))
3683                                             '(:CHARACTER :BYTE :OBJECT))
3684                                     (TYPED-IO-LISTP (CDR X) (CAR (CDR KEY)))
3685                                     'NIL)
3686                                 'NIL)
3687                             'NIL)
3688                         'NIL)
3689                     'NIL)
3690                 'NIL))
3691     (CAR X)
3692     X)
3693    'NIL)
3694  'NIL))
3695
3696(DEFTHM WRITTEN-FILE-FORWARD-TO-TRUE-LISTP-AND-CONSP
3697        (IMPLIES (WRITTEN-FILE X)
3698                 (IF (TRUE-LISTP X) (CONSP X) 'NIL)))
3699
3700(DEFUN WRITTEN-FILE-LISTP (X)
3701       (IF (ATOM X)
3702           (EQUAL X 'NIL)
3703           (IF (WRITTEN-FILE (CAR X))
3704               (WRITTEN-FILE-LISTP (CDR X))
3705               'NIL)))
3706
3707(DEFTHM WRITTEN-FILE-LISTP-FORWARD-TO-TRUE-LIST-LISTP-AND-ALISTP
3708        (IMPLIES (WRITTEN-FILE-LISTP X)
3709                 (IF (TRUE-LIST-LISTP X)
3710                     (ALISTP X)
3711                     'NIL)))
3712
3713(DEFUN WRITTEN-FILES-P (X) (WRITTEN-FILE-LISTP X))
3714
3715(DEFTHM WRITTEN-FILES-P-FORWARD-TO-WRITTEN-FILE-LISTP
3716        (IMPLIES (WRITTEN-FILES-P X)
3717                 (WRITTEN-FILE-LISTP X)))
3718
3719(DEFUN READ-FILE-LISTP1 (X)
3720       (IF (TRUE-LISTP X)
3721           (IF (EQUAL (LENGTH X) '4)
3722               (IF (STRINGP (CAR X))
3723                   (IF (MEMBER (CAR (CDR X))
3724                               '(:CHARACTER :BYTE :OBJECT))
3725                       (IF (INTEGERP (CAR (CDR (CDR X))))
3726                           (INTEGERP (CAR (CDR (CDR (CDR X)))))
3727                           'NIL)
3728                       'NIL)
3729                   'NIL)
3730               'NIL)
3731           'NIL))
3732
3733(DEFTHM READ-FILE-LISTP1-FORWARD-TO-TRUE-LISTP-AND-CONSP
3734        (IMPLIES (READ-FILE-LISTP1 X)
3735                 (IF (TRUE-LISTP X) (CONSP X) 'NIL)))
3736
3737(DEFUN READ-FILE-LISTP (X)
3738       (IF (ATOM X)
3739           (EQUAL X 'NIL)
3740           (IF (READ-FILE-LISTP1 (CAR X))
3741               (READ-FILE-LISTP (CDR X))
3742               'NIL)))
3743
3744(DEFTHM READ-FILE-LISTP-FORWARD-TO-TRUE-LIST-LISTP
3745        (IMPLIES (READ-FILE-LISTP X)
3746                 (TRUE-LIST-LISTP X)))
3747
3748(DEFUN READ-FILES-P (X) (READ-FILE-LISTP X))
3749
3750(DEFTHM READ-FILES-P-FORWARD-TO-READ-FILE-LISTP
3751        (IMPLIES (READ-FILES-P X)
3752                 (READ-FILE-LISTP X)))
3753
3754(DEFUN WRITABLE-FILE-LISTP1 (X)
3755       (IF (TRUE-LISTP X)
3756           (IF (EQUAL (LENGTH X) '3)
3757               (IF (STRINGP (CAR X))
3758                   (IF (MEMBER (CAR (CDR X))
3759                               '(:CHARACTER :BYTE :OBJECT))
3760                       (INTEGERP (CAR (CDR (CDR X))))
3761                       'NIL)
3762                   'NIL)
3763               'NIL)
3764           'NIL))
3765
3766(DEFTHM WRITABLE-FILE-LISTP1-FORWARD-TO-TRUE-LISTP-AND-CONSP
3767        (IMPLIES (WRITABLE-FILE-LISTP1 X)
3768                 (IF (TRUE-LISTP X) (CONSP X) 'NIL)))
3769
3770(DEFUN WRITABLE-FILE-LISTP (X)
3771       (IF (ATOM X)
3772           (EQUAL X 'NIL)
3773           (IF (WRITABLE-FILE-LISTP1 (CAR X))
3774               (WRITABLE-FILE-LISTP (CDR X))
3775               'NIL)))
3776
3777(DEFTHM WRITABLE-FILE-LISTP-FORWARD-TO-TRUE-LIST-LISTP
3778        (IMPLIES (WRITABLE-FILE-LISTP X)
3779                 (TRUE-LIST-LISTP X)))
3780
3781(DEFUN WRITEABLE-FILES-P (X) (WRITABLE-FILE-LISTP X))
3782
3783(DEFTHM WRITEABLE-FILES-P-FORWARD-TO-WRITABLE-FILE-LISTP
3784        (IMPLIES (WRITEABLE-FILES-P X)
3785                 (WRITABLE-FILE-LISTP X)))
3786
3787(DEFUN
3788 STATE-P1 (X)
3789 (IF
3790  (TRUE-LISTP X)
3791  (IF
3792   (EQUAL (LENGTH X) '15)
3793   (IF
3794    (OPEN-CHANNELS-P (OPEN-INPUT-CHANNELS X))
3795    (IF
3796     (OPEN-CHANNELS-P (OPEN-OUTPUT-CHANNELS X))
3797     (IF
3798      (ORDERED-SYMBOL-ALISTP (GLOBAL-TABLE X))
3799      (IF
3800       (ALL-BOUNDP
3801          '((ABBREV-EVISC-TUPLE . :DEFAULT)
3802            (ACCUMULATED-TTREE)
3803            (ACCUMULATED-WARNINGS)
3804            (ACL2-RAW-MODE-P)
3805            (ACL2-VERSION . "ACL2 Version 4.0")
3806            (AXIOMSP)
3807            (BDDNOTES)
3808            (CERTIFY-BOOK-INFO)
3809            (CHECKPOINT-FORCED-GOALS)
3810            (CHECKPOINT-PROCESSORS ELIMINATE-DESTRUCTORS-CLAUSE
3811                                   FERTILIZE-CLAUSE GENERALIZE-CLAUSE
3812                                   ELIMINATE-IRRELEVANCE-CLAUSE
3813                                   PUSH-CLAUSE :INDUCT)
3814            (CHECKPOINT-SUMMARY-LIMIT NIL . 3)
3815            (COMPILER-ENABLED)
3816            (CONNECTED-BOOK-DIRECTORY)
3817            (CURRENT-ACL2-WORLD)
3818            (CURRENT-PACKAGE . "ACL2")
3819            (DEBUGGER-ENABLE)
3820            (DEFAXIOMS-OKP-CERT . T)
3821            (DEFERRED-TTAG-NOTES . :NOT-DEFERRED)
3822            (DEFERRED-TTAG-NOTES-SAVED)
3823            (DISTRIBUTED-BOOKS-DIR)
3824            (DMRP)
3825            (EVISC-HITP-WITHOUT-IPRINT)
3826            (EVISCERATE-HIDE-TERMS)
3827            (FMT-HARD-RIGHT-MARGIN . 77)
3828            (FMT-SOFT-RIGHT-MARGIN . 65)
3829            (GAG-MODE)
3830            (GAG-STATE)
3831            (GAG-STATE-SAVED)
3832            (GLOBAL-ENABLED-STRUCTURE)
3833            (GSTACKP)
3834            (GUARD-CHECKING-ON . T)
3835            (HONS-ENABLED)
3836            (HONS-READ-P . T)
3837            (HOST-LISP . :CCL)
3838            (IN-LOCAL-FLG)
3839            (IN-PROVE-FLG)
3840            (IN-VERIFY-FLG)
3841            (INFIXP)
3842            (INHIBIT-OUTPUT-LST SUMMARY)
3843            (INHIBIT-OUTPUT-LST-STACK)
3844            (INHIBITED-SUMMARY-TYPES)
3845            (IPRINT-AR (:HEADER :DIMENSIONS (10001)
3846                                :MAXIMUM-LENGTH 40004
3847                                :DEFAULT NIL
3848                                :NAME IPRINT-AR
3849                                :ORDER :NONE)
3850                       (0 0))
3851            (IPRINT-HARD-BOUND . 10000)
3852            (IPRINT-SOFT-BOUND . 1000)
3853            (KEEP-TMP-FILES)
3854            (LAST-MAKE-EVENT-EXPANSION)
3855            (LD-LEVEL . 0)
3856            (LD-REDEFINITION-ACTION)
3857            (LD-SKIP-PROOFSP)
3858            (LOGIC-FNS-WITH-RAW-CODE MOD-EXPT HEADER SEARCH-FN
3859                                     STATE-P1 AREF2 AREF1 MFC-ANCESTORS
3860                                     FGETPROP GETENV$ WORMHOLE-EVAL
3861                                     WORMHOLE1 GET-WORMHOLE-STATUS
3862                                     ASET2 SGETPROP SETENV$
3863                                     GETPROPS COMPRESS1 TIME-LIMIT4-REACHED-P
3864                                     FMT-TO-COMMENT-WINDOW
3865                                     LEN MFC-CLAUSE CPU-CORE-COUNT
3866                                     NONNEGATIVE-INTEGER-QUOTIENT
3867                                     CHECK-PRINT-BASE
3868                                     RETRACT-WORLD ASET1 ARRAY1P
3869                                     BOOLE$ ARRAY2P STRIP-CDRS COMPRESS2
3870                                     STRIP-CARS PLIST-WORLDP WORMHOLE-P
3871                                     MFC-TYPE-ALIST MAY-NEED-SLASHES-FN
3872                                     FMT-TO-COMMENT-WINDOW!
3873                                     HAS-PROPSP HARD-ERROR
3874                                     ABORT! P! MFC-RDEPTH FLUSH-COMPRESS
3875                                     ALPHORDER EXTEND-WORLD USER-STOBJ-ALIST
3876                                     READ-ACL2-ORACLE UPDATE-USER-STOBJ-ALIST
3877                                     DECREMENT-BIG-CLOCK
3878                                     PUT-GLOBAL CLOSE-INPUT-CHANNEL
3879                                     MAKUNBOUND-GLOBAL OPEN-INPUT-CHANNEL-P1
3880                                     BOUNDP-GLOBAL1 GLOBAL-TABLE-CARS1
3881                                     EXTEND-T-STACK LIST-ALL-PACKAGE-NAMES
3882                                     CLOSE-OUTPUT-CHANNEL WRITE-BYTE$
3883                                     SHRINK-T-STACK ASET-32-BIT-INTEGER-STACK
3884                                     GET-GLOBAL 32-BIT-INTEGER-STACK-LENGTH1
3885                                     EXTEND-32-BIT-INTEGER-STACK
3886                                     ASET-T-STACK AREF-T-STACK
3887                                     READ-CHAR$ AREF-32-BIT-INTEGER-STACK
3888                                     OPEN-OUTPUT-CHANNEL-P1
3889                                     READ-OBJECT BIG-CLOCK-NEGATIVE-P
3890                                     PEEK-CHAR$ SHRINK-32-BIT-INTEGER-STACK
3891                                     READ-RUN-TIME
3892                                     READ-BYTE$ READ-IDATE T-STACK-LENGTH1
3893                                     PRINT-OBJECT$ EC-CALL PROG2$ MV-LIST
3894                                     MUST-BE-EQUAL WITH-PROVER-TIME-LIMIT
3895                                     WITH-GUARD-CHECKING ZPF
3896                                     IDENTITY ENDP NTHCDR LAST REVAPPEND NULL
3897                                     BUTLAST STRING MEMBER NOT MOD PLUSP ATOM
3898                                     LISTP ZP FLOOR CEILING TRUNCATE ROUND
3899                                     REM REMOVE REMOVE-DUPLICATES LOGBITP
3900                                     ASH LOGCOUNT SIGNUM INTEGER-LENGTH
3901                                     EXPT SUBSETP SUBSTITUTE ZEROP
3902                                     MINUSP ODDP EVENP = /= MAX MIN CONJUGATE
3903                                     LOGANDC1 LOGANDC2 LOGNAND LOGNOR LOGNOT
3904                                     LOGORC1 LOGORC2 LOGTEST POSITION ABS
3905                                     STRING-EQUAL STRING< STRING> STRING<=
3906                                     STRING>= STRING-UPCASE STRING-DOWNCASE
3907                                     KEYWORDP EQ EQL CHAR SUBST
3908                                     SUBLIS ACONS ASSOC RASSOC NTH SUBSEQ
3909                                     LENGTH REVERSE ZIP STANDARD-CHAR-P
3910                                     ALPHA-CHAR-P UPPER-CASE-P LOWER-CASE-P
3911                                     CHAR< CHAR> CHAR<= CHAR>= CHAR-EQUAL
3912                                     CHAR-UPCASE CHAR-DOWNCASE AND-LIST
3913                                     OR-LIST RANDOM$ THROW-NONEXEC-ERROR
3914                                     GC$-FN SET-COMPILER-ENABLED GOOD-BYE-FN
3915                                     ASSOC-EQ ASSOC-EQUAL MEMBER-EQ
3916                                     MEMBER-EQUAL SUBSETP-EQ SUBSETP-EQUAL
3917                                     REMOVE-EQ REMOVE-EQUAL POSITION-EQ
3918                                     POSITION-EQUAL TAKE CANONICAL-PATHNAME)
3919            (MACROS-WITH-RAW-CODE MBE
3920                                  THEORY-INVARIANT SET-LET*-ABSTRACTIONP
3921                                  DEFAXIOM SET-BOGUS-MUTUAL-RECURSION-OK
3922                                  SET-RULER-EXTENDERS
3923                                  DELETE-INCLUDE-BOOK-DIR CERTIFY-BOOK
3924                                  PROGN! F-PUT-GLOBAL PUSH-UNTOUCHABLE
3925                                  SET-BACKCHAIN-LIMIT SET-DEFAULT-HINTS!
3926                                  SET-OVERRIDE-HINTS-MACRO
3927                                  DEFTHEORY PSTK VERIFY-GUARDS
3928                                  DEFCHOOSE SET-DEFAULT-BACKCHAIN-LIMIT
3929                                  SET-STATE-OK SET-IGNORE-OK
3930                                  SET-NON-LINEARP WITH-OUTPUT
3931                                  SET-COMPILE-FNS ADD-INCLUDE-BOOK-DIR
3932                                  CLEAR-PSTK ADD-CUSTOM-KEYWORD-HINT
3933                                  INITIAL-GSTACK ACL2-UNWIND-PROTECT
3934                                  SET-WELL-FOUNDED-RELATION
3935                                  CATCH-TIME-LIMIT4 DEFUNS
3936                                  ADD-DEFAULT-HINTS! LOCAL ENCAPSULATE
3937                                  REMOVE-DEFAULT-HINTS! INCLUDE-BOOK
3938                                  PPROGN SET-ENFORCE-REDUNDANCY
3939                                  SET-IGNORE-DOC-STRING-ERROR LOGIC
3940                                  ER DEFLABEL MV-LET PROGRAM VALUE-TRIPLE
3941                                  SET-BODY COMP SET-BOGUS-DEFUN-HINTS-OK
3942                                  DMR-STOP DEFPKG SET-MEASURE-FUNCTION
3943                                  SET-INHIBIT-WARNINGS DEFTHM MV
3944                                  F-BIG-CLOCK-NEGATIVE-P RESET-PREHISTORY
3945                                  MUTUAL-RECURSION SET-REWRITE-STACK-LIMIT
3946                                  ADD-MATCH-FREE-OVERRIDE
3947                                  SET-MATCH-FREE-DEFAULT
3948                                  THE-MV TABLE IN-ARITHMETIC-THEORY
3949                                  SET-CASE-SPLIT-LIMITATIONS
3950                                  SET-IRRELEVANT-FORMALS-OK
3951                                  REMOVE-UNTOUCHABLE
3952                                  IN-THEORY WITH-OUTPUT-FORCED
3953                                  DMR-START REWRITE-ENTRY
3954                                  SKIP-PROOFS F-BOUNDP-GLOBAL
3955                                  MAKE-EVENT SET-VERIFY-GUARDS-EAGERNESS
3956                                  WORMHOLE VERIFY-TERMINATION-BOOT-STRAP
3957                                  START-PROOF-TREE F-DECREMENT-BIG-CLOCK
3958                                  DEFSTOBJ DEFUND DEFTTAG
3959                                  DEFDOC PUSH-GFRAME DEFTHMD F-GET-GLOBAL
3960                                  SET-NU-REWRITER-MODE CAAR CADR
3961                                  CDAR CDDR CAAAR CAADR CADAR CADDR CDAAR
3962                                  CDADR CDDAR CDDDR CAAAAR CAAADR CAADAR
3963                                  CAADDR CADAAR CADADR CADDAR CADDDR
3964                                  CDAAAR CDAADR CDADAR CDADDR CDDAAR
3965                                  CDDADR CDDDAR CDDDDR REST MAKE-LIST LIST
3966                                  OR AND * LOGIOR LOGXOR LOGAND SEARCH
3967                                  LOGEQV CONCATENATE LET* DEFUN THE > <=
3968                                  >= + - / 1+ 1- PROGN DEFMACRO COND CASE
3969                                  LIST* APPEND DEFCONST IN-PACKAGE INTERN
3970                                  FIRST SECOND THIRD FOURTH FIFTH SIXTH
3971                                  SEVENTH EIGHTH NINTH TENTH DIGIT-CHAR-P
3972                                  UNMEMOIZE HONS-LET MEMOIZE-LET MEMOIZE
3973                                  DEFUNS-STD DEFTHM-STD DEFUN-STD POR
3974                                  PAND PLET PARGS TRACE! WITH-LIVE-STATE
3975                                  WITH-OUTPUT-OBJECT-CHANNEL-SHARING
3976                                  TIME$ WITH-HCOMP-BINDINGS
3977                                  WITH-HCOMP-HT-BINDINGS REDEF+
3978                                  REDEF- BIND-ACL2-TIME-LIMIT DEFATTACH)
3979            (MAIN-TIMER . 0)
3980            (MAKE-EVENT-DEBUG)
3981            (MAKE-EVENT-DEBUG-DEPTH . 0)
3982            (MATCH-FREE-ERROR)
3983            (MODIFYING-INCLUDE-BOOK-DIR-ALIST)
3984            (MORE-DOC-MAX-LINES . 45)
3985            (MORE-DOC-MIN-LINES . 35)
3986            (MORE-DOC-STATE)
3987            (MSWINDOWS-DRIVE)
3988            (PARALLEL-EVALUATION-ENABLED)
3989            (PC-OUTPUT)
3990            (PPR-FLAT-RIGHT-MARGIN . 40)
3991            (PRINT-BASE . 10)
3992            (PRINT-CASE . :UPCASE)
3993            (PRINT-CIRCLE)
3994            (PRINT-CIRCLE-FILES . T)
3995            (PRINT-CLAUSE-IDS)
3996            (PRINT-DOC-START-COLUMN . 15)
3997            (PRINT-ESCAPE . T)
3998            (PRINT-LENGTH)
3999            (PRINT-LEVEL)
4000            (PRINT-LINES)
4001            (PRINT-PRETTY)
4002            (PRINT-RADIX)
4003            (PRINT-READABLY)
4004            (PRINT-RIGHT-MARGIN)
4005            (PROGRAM-FNS-WITH-RAW-CODE
4006                 RELIEVE-HYP-SYNP
4007                 APPLY-ABBREVS-TO-LAMBDA-STACK1
4008                 NTH-UPDATE-REWRITER
4009                 EV-W-LST SIMPLIFY-CLAUSE1
4010                 EV-REC-ACL2-UNWIND-PROTECT
4011                 ALLOCATE-FIXNUM-RANGE TRACE$-FN-GENERAL
4012                 EV-FNCALL! OPEN-TRACE-FILE-FN
4013                 SET-TRACE-EVISC-TUPLE EV-FNCALL-W
4014                 EV-REC SETUP-SIMPLIFY-CLAUSE-POT-LST1
4015                 SAVE-EXEC CW-GSTACK-FN
4016                 RECOMPRESS-GLOBAL-ENABLED-STRUCTURE EV-W
4017                 VERBOSE-PSTACK USER-STOBJ-ALIST-SAFE
4018                 COMP-FN FMT-PPR GET-MEMO
4019                 ACL2-RAW-EVAL PSTACK-FN DMR-START-FN
4020                 MEMO-EXIT MEMO-KEY1 SYS-CALL-STATUS
4021                 EV-FNCALL-META SET-DEBUGGER-ENABLE-FN
4022                 LD-LOOP PRINT-SUMMARY
4023                 EV EV-LST ALLEGRO-ALLOCATE-SLOWLY-FN
4024                 CERTIFY-BOOK-FN
4025                 TRANSLATE11-FLET-ALIST1 INCLUDE-BOOK-FN1
4026                 INCLUDE-BOOK-FN FMT1 FLSZ SET-W
4027                 PROVE-LOOP CHK-VIRGIN W-OF-ANY-STATE
4028                 LAMBDA-ABSTRACT LD-FN-BODY UNTRANSLATE
4029                 LONGEST-COMMON-TAIL-LENGTH-REC
4030                 COMPILE-FUNCTION UNTRANSLATE-LST EV-SYNP
4031                 ADD-POLYS DMR-STOP-FN LD-PRINT-RESULTS
4032                 APPLY-ABBREVS-TO-LAMBDA-STACK
4033                 BREAK$ FLPR CLOSE-TRACE-FILE-FN
4034                 EV-FNCALL-REC SYS-CALL EV-FNCALL LD-FN0
4035                 LD-FN WRITE-EXPANSION-FILE LATCH-STOBJS1
4036                 CHK-PACKAGE-REINCARNATION-IMPORT-RESTRICTIONS
4037                 UNTRACE$-FN1
4038                 BDD-TOP DEFSTOBJ-FIELD-FNS-RAW-DEFS
4039                 EXPANSION-ALIST-PKG-NAMES TIMES-MOD-M31
4040                 PRINT-CALL-HISTORY IPRINT-AR-AREF1
4041                 PROVE MAKE-EVENT-FN OOPS-WARNING
4042                 CHECKPOINT-WORLD UBT-PREHISTORY-FN
4043                 GET-DECLAIM-LIST PATHNAME-UNIX-TO-OS
4044                 HCOMP-BUILD-FROM-PORTCULLIS
4045                 DEFCONST-VAL)
4046            (PROMPT-FUNCTION . DEFAULT-PRINT-PROMPT)
4047            (PROMPT-MEMO)
4048            (PROOF-TREE)
4049            (PROOF-TREE-BUFFER-WIDTH . 65)
4050            (PROOF-TREE-CTX)
4051            (PROOF-TREE-INDENT . "|  ")
4052            (PROOF-TREE-START-PRINTED)
4053            (PROOFS-CO .
4054                       ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
4055            (RAW-ARITY-ALIST)
4056            (RAW-INCLUDE-BOOK-DIR-ALIST . :IGNORE)
4057            (RAW-PROOF-FORMAT)
4058            (REDO-FLAT-FAIL)
4059            (REDO-FLAT-SUCC)
4060            (REDUNDANT-WITH-RAW-CODE-OKP)
4061            (RETRACE-P)
4062            (SAFE-MODE)
4063            (SAVE-EXPANSION-FILE)
4064            (SAVED-OUTPUT-P)
4065            (SAVED-OUTPUT-REVERSED)
4066            (SAVED-OUTPUT-TOKEN-LST)
4067            (SHOW-CUSTOM-KEYWORD-HINT-EXPANSION)
4068            (SKIP-NOTIFY-ON-DEFTTAG)
4069            (SKIP-PROOFS-BY-SYSTEM)
4070            (SKIP-PROOFS-OKP-CERT . T)
4071            (SLOW-ARRAY-ACTION . :BREAK)
4072            (STANDARD-CO .
4073                         ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
4074            (STANDARD-OI .
4075                         ACL2-OUTPUT-CHANNEL::STANDARD-OBJECT-INPUT-0)
4076            (TAINTED-OKP)
4077            (TEMP-TOUCHABLE-FNS)
4078            (TEMP-TOUCHABLE-VARS)
4079            (TERM-EVISC-TUPLE . :DEFAULT)
4080            (TIMER-ALIST)
4081            (TMP-DIR)
4082            (TRACE-CO .
4083                      ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
4084            (TRACE-LEVEL . 0)
4085            (TRACE-SPECS)
4086            (TRANSLATE-ERROR-DEPTH . -1)
4087            (TRIPLE-PRINT-PREFIX . " ")
4088            (TTAGS-ALLOWED . :ALL)
4089            (UNDONE-WORLDS-KILL-RING NIL NIL NIL)
4090            (USER-HOME-DIR)
4091            (VERBOSE-THEORY-WARNING . T)
4092            (WINDOW-INTERFACE-POSTLUDE
4093                 .
4094                 "#>\\>#<\\(acl2-window-postlude ?~sw ~xt ~xp)#>\\>")
4095            (WINDOW-INTERFACE-PRELUDE
4096                 .
4097                 "~%#<\\(acl2-window-prelude ?~sw ~xc)#>\\>#<\\<~sw")
4098            (WINDOW-INTERFACEP)
4099            (WORMHOLE-NAME)
4100            (WORMHOLE-STATUS)
4101            (WRITES-OKP . T))
4102          (GLOBAL-TABLE X))
4103       (IF
4104        (PLIST-WORLDP (CDR (ASSOC 'CURRENT-ACL2-WORLD
4105                                  (GLOBAL-TABLE X))))
4106        (IF
4107         (SYMBOL-ALISTP (FGETPROP 'ACL2-DEFAULTS-TABLE
4108                                  'TABLE-ALIST
4109                                  'NIL
4110                                  (CDR (ASSOC 'CURRENT-ACL2-WORLD
4111                                              (GLOBAL-TABLE X)))))
4112         (IF
4113          (TIMER-ALISTP (CDR (ASSOC 'TIMER-ALIST (GLOBAL-TABLE X))))
4114          (IF
4115           (KNOWN-PACKAGE-ALISTP (FGETPROP 'KNOWN-PACKAGE-ALIST
4116                                           'GLOBAL-VALUE
4117                                           'NIL
4118                                           (CDR (ASSOC 'CURRENT-ACL2-WORLD
4119                                                       (GLOBAL-TABLE X)))))
4120           (IF
4121            (TRUE-LISTP (T-STACK X))
4122            (IF
4123             (32-BIT-INTEGER-LISTP (32-BIT-INTEGER-STACK X))
4124             (IF
4125              (INTEGERP (BIG-CLOCK-ENTRY X))
4126              (IF
4127               (INTEGER-LISTP (IDATES X))
4128               (IF
4129                (TRUE-LISTP (ACL2-ORACLE X))
4130                (IF
4131                 (FILE-CLOCK-P (FILE-CLOCK X))
4132                 (IF
4133                  (READABLE-FILES-P (READABLE-FILES X))
4134                  (IF
4135                   (WRITTEN-FILES-P (WRITTEN-FILES X))
4136                   (IF
4137                     (READ-FILES-P (READ-FILES X))
4138                     (IF (WRITEABLE-FILES-P (WRITEABLE-FILES X))
4139                         (IF (TRUE-LIST-LISTP (LIST-ALL-PACKAGE-NAMES-LST X))
4140                             (SYMBOL-ALISTP (USER-STOBJ-ALIST1 X))
4141                             'NIL)
4142                         'NIL)
4143                     'NIL)
4144                   'NIL)
4145                  'NIL)
4146                 'NIL)
4147                'NIL)
4148               'NIL)
4149              'NIL)
4150             'NIL)
4151            'NIL)
4152           'NIL)
4153          'NIL)
4154         'NIL)
4155        'NIL)
4156       'NIL)
4157      'NIL)
4158     'NIL)
4159    'NIL)
4160   'NIL)
4161  'NIL))
4162
4163(DEFTHM
4164 STATE-P1-FORWARD
4165 (IMPLIES
4166  (STATE-P1 X)
4167  (IF
4168   (TRUE-LISTP X)
4169   (IF
4170    (EQUAL (LENGTH X) '15)
4171    (IF
4172     (OPEN-CHANNELS-P (NTH '0 X))
4173     (IF
4174      (OPEN-CHANNELS-P (NTH '1 X))
4175      (IF
4176       (ORDERED-SYMBOL-ALISTP (NTH '2 X))
4177       (IF
4178        (ALL-BOUNDP
4179          '((ABBREV-EVISC-TUPLE . :DEFAULT)
4180            (ACCUMULATED-TTREE)
4181            (ACCUMULATED-WARNINGS)
4182            (ACL2-RAW-MODE-P)
4183            (ACL2-VERSION . "ACL2 Version 4.0")
4184            (AXIOMSP)
4185            (BDDNOTES)
4186            (CERTIFY-BOOK-INFO)
4187            (CHECKPOINT-FORCED-GOALS)
4188            (CHECKPOINT-PROCESSORS ELIMINATE-DESTRUCTORS-CLAUSE
4189                                   FERTILIZE-CLAUSE GENERALIZE-CLAUSE
4190                                   ELIMINATE-IRRELEVANCE-CLAUSE
4191                                   PUSH-CLAUSE :INDUCT)
4192            (CHECKPOINT-SUMMARY-LIMIT NIL . 3)
4193            (COMPILER-ENABLED)
4194            (CONNECTED-BOOK-DIRECTORY)
4195            (CURRENT-ACL2-WORLD)
4196            (CURRENT-PACKAGE . "ACL2")
4197            (DEBUGGER-ENABLE)
4198            (DEFAXIOMS-OKP-CERT . T)
4199            (DEFERRED-TTAG-NOTES . :NOT-DEFERRED)
4200            (DEFERRED-TTAG-NOTES-SAVED)
4201            (DISTRIBUTED-BOOKS-DIR)
4202            (DMRP)
4203            (EVISC-HITP-WITHOUT-IPRINT)
4204            (EVISCERATE-HIDE-TERMS)
4205            (FMT-HARD-RIGHT-MARGIN . 77)
4206            (FMT-SOFT-RIGHT-MARGIN . 65)
4207            (GAG-MODE)
4208            (GAG-STATE)
4209            (GAG-STATE-SAVED)
4210            (GLOBAL-ENABLED-STRUCTURE)
4211            (GSTACKP)
4212            (GUARD-CHECKING-ON . T)
4213            (HONS-ENABLED)
4214            (HONS-READ-P . T)
4215            (HOST-LISP . :CCL)
4216            (IN-LOCAL-FLG)
4217            (IN-PROVE-FLG)
4218            (IN-VERIFY-FLG)
4219            (INFIXP)
4220            (INHIBIT-OUTPUT-LST SUMMARY)
4221            (INHIBIT-OUTPUT-LST-STACK)
4222            (INHIBITED-SUMMARY-TYPES)
4223            (IPRINT-AR (:HEADER :DIMENSIONS (10001)
4224                                :MAXIMUM-LENGTH 40004
4225                                :DEFAULT NIL
4226                                :NAME IPRINT-AR
4227                                :ORDER :NONE)
4228                       (0 0))
4229            (IPRINT-HARD-BOUND . 10000)
4230            (IPRINT-SOFT-BOUND . 1000)
4231            (KEEP-TMP-FILES)
4232            (LAST-MAKE-EVENT-EXPANSION)
4233            (LD-LEVEL . 0)
4234            (LD-REDEFINITION-ACTION)
4235            (LD-SKIP-PROOFSP)
4236            (LOGIC-FNS-WITH-RAW-CODE MOD-EXPT HEADER SEARCH-FN
4237                                     STATE-P1 AREF2 AREF1 MFC-ANCESTORS
4238                                     FGETPROP GETENV$ WORMHOLE-EVAL
4239                                     WORMHOLE1 GET-WORMHOLE-STATUS
4240                                     ASET2 SGETPROP SETENV$
4241                                     GETPROPS COMPRESS1 TIME-LIMIT4-REACHED-P
4242                                     FMT-TO-COMMENT-WINDOW
4243                                     LEN MFC-CLAUSE CPU-CORE-COUNT
4244                                     NONNEGATIVE-INTEGER-QUOTIENT
4245                                     CHECK-PRINT-BASE
4246                                     RETRACT-WORLD ASET1 ARRAY1P
4247                                     BOOLE$ ARRAY2P STRIP-CDRS COMPRESS2
4248                                     STRIP-CARS PLIST-WORLDP WORMHOLE-P
4249                                     MFC-TYPE-ALIST MAY-NEED-SLASHES-FN
4250                                     FMT-TO-COMMENT-WINDOW!
4251                                     HAS-PROPSP HARD-ERROR
4252                                     ABORT! P! MFC-RDEPTH FLUSH-COMPRESS
4253                                     ALPHORDER EXTEND-WORLD USER-STOBJ-ALIST
4254                                     READ-ACL2-ORACLE UPDATE-USER-STOBJ-ALIST
4255                                     DECREMENT-BIG-CLOCK
4256                                     PUT-GLOBAL CLOSE-INPUT-CHANNEL
4257                                     MAKUNBOUND-GLOBAL OPEN-INPUT-CHANNEL-P1
4258                                     BOUNDP-GLOBAL1 GLOBAL-TABLE-CARS1
4259                                     EXTEND-T-STACK LIST-ALL-PACKAGE-NAMES
4260                                     CLOSE-OUTPUT-CHANNEL WRITE-BYTE$
4261                                     SHRINK-T-STACK ASET-32-BIT-INTEGER-STACK
4262                                     GET-GLOBAL 32-BIT-INTEGER-STACK-LENGTH1
4263                                     EXTEND-32-BIT-INTEGER-STACK
4264                                     ASET-T-STACK AREF-T-STACK
4265                                     READ-CHAR$ AREF-32-BIT-INTEGER-STACK
4266                                     OPEN-OUTPUT-CHANNEL-P1
4267                                     READ-OBJECT BIG-CLOCK-NEGATIVE-P
4268                                     PEEK-CHAR$ SHRINK-32-BIT-INTEGER-STACK
4269                                     READ-RUN-TIME
4270                                     READ-BYTE$ READ-IDATE T-STACK-LENGTH1
4271                                     PRINT-OBJECT$ EC-CALL PROG2$ MV-LIST
4272                                     MUST-BE-EQUAL WITH-PROVER-TIME-LIMIT
4273                                     WITH-GUARD-CHECKING ZPF
4274                                     IDENTITY ENDP NTHCDR LAST REVAPPEND NULL
4275                                     BUTLAST STRING MEMBER NOT MOD PLUSP ATOM
4276                                     LISTP ZP FLOOR CEILING TRUNCATE ROUND
4277                                     REM REMOVE REMOVE-DUPLICATES LOGBITP
4278                                     ASH LOGCOUNT SIGNUM INTEGER-LENGTH
4279                                     EXPT SUBSETP SUBSTITUTE ZEROP
4280                                     MINUSP ODDP EVENP = /= MAX MIN CONJUGATE
4281                                     LOGANDC1 LOGANDC2 LOGNAND LOGNOR LOGNOT
4282                                     LOGORC1 LOGORC2 LOGTEST POSITION ABS
4283                                     STRING-EQUAL STRING< STRING> STRING<=
4284                                     STRING>= STRING-UPCASE STRING-DOWNCASE
4285                                     KEYWORDP EQ EQL CHAR SUBST
4286                                     SUBLIS ACONS ASSOC RASSOC NTH SUBSEQ
4287                                     LENGTH REVERSE ZIP STANDARD-CHAR-P
4288                                     ALPHA-CHAR-P UPPER-CASE-P LOWER-CASE-P
4289                                     CHAR< CHAR> CHAR<= CHAR>= CHAR-EQUAL
4290                                     CHAR-UPCASE CHAR-DOWNCASE AND-LIST
4291                                     OR-LIST RANDOM$ THROW-NONEXEC-ERROR
4292                                     GC$-FN SET-COMPILER-ENABLED GOOD-BYE-FN
4293                                     ASSOC-EQ ASSOC-EQUAL MEMBER-EQ
4294                                     MEMBER-EQUAL SUBSETP-EQ SUBSETP-EQUAL
4295                                     REMOVE-EQ REMOVE-EQUAL POSITION-EQ
4296                                     POSITION-EQUAL TAKE CANONICAL-PATHNAME)
4297            (MACROS-WITH-RAW-CODE MBE
4298                                  THEORY-INVARIANT SET-LET*-ABSTRACTIONP
4299                                  DEFAXIOM SET-BOGUS-MUTUAL-RECURSION-OK
4300                                  SET-RULER-EXTENDERS
4301                                  DELETE-INCLUDE-BOOK-DIR CERTIFY-BOOK
4302                                  PROGN! F-PUT-GLOBAL PUSH-UNTOUCHABLE
4303                                  SET-BACKCHAIN-LIMIT SET-DEFAULT-HINTS!
4304                                  SET-OVERRIDE-HINTS-MACRO
4305                                  DEFTHEORY PSTK VERIFY-GUARDS
4306                                  DEFCHOOSE SET-DEFAULT-BACKCHAIN-LIMIT
4307                                  SET-STATE-OK SET-IGNORE-OK
4308                                  SET-NON-LINEARP WITH-OUTPUT
4309                                  SET-COMPILE-FNS ADD-INCLUDE-BOOK-DIR
4310                                  CLEAR-PSTK ADD-CUSTOM-KEYWORD-HINT
4311                                  INITIAL-GSTACK ACL2-UNWIND-PROTECT
4312                                  SET-WELL-FOUNDED-RELATION
4313                                  CATCH-TIME-LIMIT4 DEFUNS
4314                                  ADD-DEFAULT-HINTS! LOCAL ENCAPSULATE
4315                                  REMOVE-DEFAULT-HINTS! INCLUDE-BOOK
4316                                  PPROGN SET-ENFORCE-REDUNDANCY
4317                                  SET-IGNORE-DOC-STRING-ERROR LOGIC
4318                                  ER DEFLABEL MV-LET PROGRAM VALUE-TRIPLE
4319                                  SET-BODY COMP SET-BOGUS-DEFUN-HINTS-OK
4320                                  DMR-STOP DEFPKG SET-MEASURE-FUNCTION
4321                                  SET-INHIBIT-WARNINGS DEFTHM MV
4322                                  F-BIG-CLOCK-NEGATIVE-P RESET-PREHISTORY
4323                                  MUTUAL-RECURSION SET-REWRITE-STACK-LIMIT
4324                                  ADD-MATCH-FREE-OVERRIDE
4325                                  SET-MATCH-FREE-DEFAULT
4326                                  THE-MV TABLE IN-ARITHMETIC-THEORY
4327                                  SET-CASE-SPLIT-LIMITATIONS
4328                                  SET-IRRELEVANT-FORMALS-OK
4329                                  REMOVE-UNTOUCHABLE
4330                                  IN-THEORY WITH-OUTPUT-FORCED
4331                                  DMR-START REWRITE-ENTRY
4332                                  SKIP-PROOFS F-BOUNDP-GLOBAL
4333                                  MAKE-EVENT SET-VERIFY-GUARDS-EAGERNESS
4334                                  WORMHOLE VERIFY-TERMINATION-BOOT-STRAP
4335                                  START-PROOF-TREE F-DECREMENT-BIG-CLOCK
4336                                  DEFSTOBJ DEFUND DEFTTAG
4337                                  DEFDOC PUSH-GFRAME DEFTHMD F-GET-GLOBAL
4338                                  SET-NU-REWRITER-MODE CAAR CADR
4339                                  CDAR CDDR CAAAR CAADR CADAR CADDR CDAAR
4340                                  CDADR CDDAR CDDDR CAAAAR CAAADR CAADAR
4341                                  CAADDR CADAAR CADADR CADDAR CADDDR
4342                                  CDAAAR CDAADR CDADAR CDADDR CDDAAR
4343                                  CDDADR CDDDAR CDDDDR REST MAKE-LIST LIST
4344                                  OR AND * LOGIOR LOGXOR LOGAND SEARCH
4345                                  LOGEQV CONCATENATE LET* DEFUN THE > <=
4346                                  >= + - / 1+ 1- PROGN DEFMACRO COND CASE
4347                                  LIST* APPEND DEFCONST IN-PACKAGE INTERN
4348                                  FIRST SECOND THIRD FOURTH FIFTH SIXTH
4349                                  SEVENTH EIGHTH NINTH TENTH DIGIT-CHAR-P
4350                                  UNMEMOIZE HONS-LET MEMOIZE-LET MEMOIZE
4351                                  DEFUNS-STD DEFTHM-STD DEFUN-STD POR
4352                                  PAND PLET PARGS TRACE! WITH-LIVE-STATE
4353                                  WITH-OUTPUT-OBJECT-CHANNEL-SHARING
4354                                  TIME$ WITH-HCOMP-BINDINGS
4355                                  WITH-HCOMP-HT-BINDINGS REDEF+
4356                                  REDEF- BIND-ACL2-TIME-LIMIT DEFATTACH)
4357            (MAIN-TIMER . 0)
4358            (MAKE-EVENT-DEBUG)
4359            (MAKE-EVENT-DEBUG-DEPTH . 0)
4360            (MATCH-FREE-ERROR)
4361            (MODIFYING-INCLUDE-BOOK-DIR-ALIST)
4362            (MORE-DOC-MAX-LINES . 45)
4363            (MORE-DOC-MIN-LINES . 35)
4364            (MORE-DOC-STATE)
4365            (MSWINDOWS-DRIVE)
4366            (PARALLEL-EVALUATION-ENABLED)
4367            (PC-OUTPUT)
4368            (PPR-FLAT-RIGHT-MARGIN . 40)
4369            (PRINT-BASE . 10)
4370            (PRINT-CASE . :UPCASE)
4371            (PRINT-CIRCLE)
4372            (PRINT-CIRCLE-FILES . T)
4373            (PRINT-CLAUSE-IDS)
4374            (PRINT-DOC-START-COLUMN . 15)
4375            (PRINT-ESCAPE . T)
4376            (PRINT-LENGTH)
4377            (PRINT-LEVEL)
4378            (PRINT-LINES)
4379            (PRINT-PRETTY)
4380            (PRINT-RADIX)
4381            (PRINT-READABLY)
4382            (PRINT-RIGHT-MARGIN)
4383            (PROGRAM-FNS-WITH-RAW-CODE
4384                 RELIEVE-HYP-SYNP
4385                 APPLY-ABBREVS-TO-LAMBDA-STACK1
4386                 NTH-UPDATE-REWRITER
4387                 EV-W-LST SIMPLIFY-CLAUSE1
4388                 EV-REC-ACL2-UNWIND-PROTECT
4389                 ALLOCATE-FIXNUM-RANGE TRACE$-FN-GENERAL
4390                 EV-FNCALL! OPEN-TRACE-FILE-FN
4391                 SET-TRACE-EVISC-TUPLE EV-FNCALL-W
4392                 EV-REC SETUP-SIMPLIFY-CLAUSE-POT-LST1
4393                 SAVE-EXEC CW-GSTACK-FN
4394                 RECOMPRESS-GLOBAL-ENABLED-STRUCTURE EV-W
4395                 VERBOSE-PSTACK USER-STOBJ-ALIST-SAFE
4396                 COMP-FN FMT-PPR GET-MEMO
4397                 ACL2-RAW-EVAL PSTACK-FN DMR-START-FN
4398                 MEMO-EXIT MEMO-KEY1 SYS-CALL-STATUS
4399                 EV-FNCALL-META SET-DEBUGGER-ENABLE-FN
4400                 LD-LOOP PRINT-SUMMARY
4401                 EV EV-LST ALLEGRO-ALLOCATE-SLOWLY-FN
4402                 CERTIFY-BOOK-FN
4403                 TRANSLATE11-FLET-ALIST1 INCLUDE-BOOK-FN1
4404                 INCLUDE-BOOK-FN FMT1 FLSZ SET-W
4405                 PROVE-LOOP CHK-VIRGIN W-OF-ANY-STATE
4406                 LAMBDA-ABSTRACT LD-FN-BODY UNTRANSLATE
4407                 LONGEST-COMMON-TAIL-LENGTH-REC
4408                 COMPILE-FUNCTION UNTRANSLATE-LST EV-SYNP
4409                 ADD-POLYS DMR-STOP-FN LD-PRINT-RESULTS
4410                 APPLY-ABBREVS-TO-LAMBDA-STACK
4411                 BREAK$ FLPR CLOSE-TRACE-FILE-FN
4412                 EV-FNCALL-REC SYS-CALL EV-FNCALL LD-FN0
4413                 LD-FN WRITE-EXPANSION-FILE LATCH-STOBJS1
4414                 CHK-PACKAGE-REINCARNATION-IMPORT-RESTRICTIONS
4415                 UNTRACE$-FN1
4416                 BDD-TOP DEFSTOBJ-FIELD-FNS-RAW-DEFS
4417                 EXPANSION-ALIST-PKG-NAMES TIMES-MOD-M31
4418                 PRINT-CALL-HISTORY IPRINT-AR-AREF1
4419                 PROVE MAKE-EVENT-FN OOPS-WARNING
4420                 CHECKPOINT-WORLD UBT-PREHISTORY-FN
4421                 GET-DECLAIM-LIST PATHNAME-UNIX-TO-OS
4422                 HCOMP-BUILD-FROM-PORTCULLIS
4423                 DEFCONST-VAL)
4424            (PROMPT-FUNCTION . DEFAULT-PRINT-PROMPT)
4425            (PROMPT-MEMO)
4426            (PROOF-TREE)
4427            (PROOF-TREE-BUFFER-WIDTH . 65)
4428            (PROOF-TREE-CTX)
4429            (PROOF-TREE-INDENT . "|  ")
4430            (PROOF-TREE-START-PRINTED)
4431            (PROOFS-CO .
4432                       ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
4433            (RAW-ARITY-ALIST)
4434            (RAW-INCLUDE-BOOK-DIR-ALIST . :IGNORE)
4435            (RAW-PROOF-FORMAT)
4436            (REDO-FLAT-FAIL)
4437            (REDO-FLAT-SUCC)
4438            (REDUNDANT-WITH-RAW-CODE-OKP)
4439            (RETRACE-P)
4440            (SAFE-MODE)
4441            (SAVE-EXPANSION-FILE)
4442            (SAVED-OUTPUT-P)
4443            (SAVED-OUTPUT-REVERSED)
4444            (SAVED-OUTPUT-TOKEN-LST)
4445            (SHOW-CUSTOM-KEYWORD-HINT-EXPANSION)
4446            (SKIP-NOTIFY-ON-DEFTTAG)
4447            (SKIP-PROOFS-BY-SYSTEM)
4448            (SKIP-PROOFS-OKP-CERT . T)
4449            (SLOW-ARRAY-ACTION . :BREAK)
4450            (STANDARD-CO .
4451                         ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
4452            (STANDARD-OI .
4453                         ACL2-OUTPUT-CHANNEL::STANDARD-OBJECT-INPUT-0)
4454            (TAINTED-OKP)
4455            (TEMP-TOUCHABLE-FNS)
4456            (TEMP-TOUCHABLE-VARS)
4457            (TERM-EVISC-TUPLE . :DEFAULT)
4458            (TIMER-ALIST)
4459            (TMP-DIR)
4460            (TRACE-CO .
4461                      ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
4462            (TRACE-LEVEL . 0)
4463            (TRACE-SPECS)
4464            (TRANSLATE-ERROR-DEPTH . -1)
4465            (TRIPLE-PRINT-PREFIX . " ")
4466            (TTAGS-ALLOWED . :ALL)
4467            (UNDONE-WORLDS-KILL-RING NIL NIL NIL)
4468            (USER-HOME-DIR)
4469            (VERBOSE-THEORY-WARNING . T)
4470            (WINDOW-INTERFACE-POSTLUDE
4471                 .
4472                 "#>\\>#<\\(acl2-window-postlude ?~sw ~xt ~xp)#>\\>")
4473            (WINDOW-INTERFACE-PRELUDE
4474                 .
4475                 "~%#<\\(acl2-window-prelude ?~sw ~xc)#>\\>#<\\<~sw")
4476            (WINDOW-INTERFACEP)
4477            (WORMHOLE-NAME)
4478            (WORMHOLE-STATUS)
4479            (WRITES-OKP . T))
4480          (NTH '2 X))
4481        (IF
4482         (PLIST-WORLDP (CDR (ASSOC 'CURRENT-ACL2-WORLD (NTH '2 X))))
4483         (IF
4484          (SYMBOL-ALISTP (FGETPROP 'ACL2-DEFAULTS-TABLE
4485                                   'TABLE-ALIST
4486                                   'NIL
4487                                   (CDR (ASSOC 'CURRENT-ACL2-WORLD
4488                                               (NTH '2 X)))))
4489          (IF
4490           (TIMER-ALISTP (CDR (ASSOC 'TIMER-ALIST (NTH '2 X))))
4491           (IF
4492            (KNOWN-PACKAGE-ALISTP (FGETPROP 'KNOWN-PACKAGE-ALIST
4493                                            'GLOBAL-VALUE
4494                                            'NIL
4495                                            (CDR (ASSOC 'CURRENT-ACL2-WORLD
4496                                                        (NTH '2 X)))))
4497            (IF
4498             (TRUE-LISTP (NTH '3 X))
4499             (IF
4500              (32-BIT-INTEGER-LISTP (NTH '4 X))
4501              (IF
4502                (INTEGERP (NTH '5 X))
4503                (IF (INTEGER-LISTP (NTH '6 X))
4504                    (IF (TRUE-LISTP (NTH '7 X))
4505                        (IF (FILE-CLOCK-P (NTH '8 X))
4506                            (IF (READABLE-FILES-P (NTH '9 X))
4507                                (IF (WRITTEN-FILES-P (NTH '10 X))
4508                                    (IF (READ-FILES-P (NTH '11 X))
4509                                        (IF (WRITEABLE-FILES-P (NTH '12 X))
4510                                            (IF (TRUE-LIST-LISTP (NTH '13 X))
4511                                                (SYMBOL-ALISTP (NTH '14 X))
4512                                                'NIL)
4513                                            'NIL)
4514                                        'NIL)
4515                                    'NIL)
4516                                'NIL)
4517                            'NIL)
4518                        'NIL)
4519                    'NIL)
4520                'NIL)
4521              'NIL)
4522             'NIL)
4523            'NIL)
4524           'NIL)
4525          'NIL)
4526         'NIL)
4527        'NIL)
4528       'NIL)
4529      'NIL)
4530     'NIL)
4531    'NIL)
4532   'NIL)))
4533
4534(DEFUN STATE-P (STATE-STATE) (STATE-P1 STATE-STATE))
4535
4536(DEFTHM STATE-P-IMPLIES-AND-FORWARD-TO-STATE-P1
4537        (IMPLIES (STATE-P STATE-STATE)
4538                 (STATE-P1 STATE-STATE)))
4539
4540(DEFUN
4541 BUILD-STATE1
4542 (OPEN-INPUT-CHANNELS OPEN-OUTPUT-CHANNELS
4543                      GLOBAL-TABLE T-STACK
4544                      32-BIT-INTEGER-STACK BIG-CLOCK IDATES
4545                      ACL2-ORACLE FILE-CLOCK READABLE-FILES
4546                      WRITTEN-FILES READ-FILES WRITEABLE-FILES
4547                      LIST-ALL-PACKAGE-NAMES-LST
4548                      USER-STOBJ-ALIST)
4549 ((LAMBDA
4550   (S)
4551   (IF
4552     (STATE-P1 S)
4553     S
4554     '(NIL NIL
4555           ((ABBREV-EVISC-TUPLE . :DEFAULT)
4556            (ACCUMULATED-TTREE)
4557            (ACCUMULATED-WARNINGS)
4558            (ACL2-RAW-MODE-P)
4559            (ACL2-VERSION . "ACL2 Version 4.0")
4560            (AXIOMSP)
4561            (BDDNOTES)
4562            (CERTIFY-BOOK-INFO)
4563            (CHECKPOINT-FORCED-GOALS)
4564            (CHECKPOINT-PROCESSORS ELIMINATE-DESTRUCTORS-CLAUSE
4565                                   FERTILIZE-CLAUSE GENERALIZE-CLAUSE
4566                                   ELIMINATE-IRRELEVANCE-CLAUSE
4567                                   PUSH-CLAUSE :INDUCT)
4568            (CHECKPOINT-SUMMARY-LIMIT NIL . 3)
4569            (COMPILER-ENABLED)
4570            (CONNECTED-BOOK-DIRECTORY)
4571            (CURRENT-ACL2-WORLD)
4572            (CURRENT-PACKAGE . "ACL2")
4573            (DEBUGGER-ENABLE)
4574            (DEFAXIOMS-OKP-CERT . T)
4575            (DEFERRED-TTAG-NOTES . :NOT-DEFERRED)
4576            (DEFERRED-TTAG-NOTES-SAVED)
4577            (DISTRIBUTED-BOOKS-DIR)
4578            (DMRP)
4579            (EVISC-HITP-WITHOUT-IPRINT)
4580            (EVISCERATE-HIDE-TERMS)
4581            (FMT-HARD-RIGHT-MARGIN . 77)
4582            (FMT-SOFT-RIGHT-MARGIN . 65)
4583            (GAG-MODE)
4584            (GAG-STATE)
4585            (GAG-STATE-SAVED)
4586            (GLOBAL-ENABLED-STRUCTURE)
4587            (GSTACKP)
4588            (GUARD-CHECKING-ON . T)
4589            (HONS-ENABLED)
4590            (HONS-READ-P . T)
4591            (HOST-LISP . :CCL)
4592            (IN-LOCAL-FLG)
4593            (IN-PROVE-FLG)
4594            (IN-VERIFY-FLG)
4595            (INFIXP)
4596            (INHIBIT-OUTPUT-LST SUMMARY)
4597            (INHIBIT-OUTPUT-LST-STACK)
4598            (INHIBITED-SUMMARY-TYPES)
4599            (IPRINT-AR (:HEADER :DIMENSIONS (10001)
4600                                :MAXIMUM-LENGTH 40004
4601                                :DEFAULT NIL
4602                                :NAME IPRINT-AR
4603                                :ORDER :NONE)
4604                       (0 0))
4605            (IPRINT-HARD-BOUND . 10000)
4606            (IPRINT-SOFT-BOUND . 1000)
4607            (KEEP-TMP-FILES)
4608            (LAST-MAKE-EVENT-EXPANSION)
4609            (LD-LEVEL . 0)
4610            (LD-REDEFINITION-ACTION)
4611            (LD-SKIP-PROOFSP)
4612            (LOGIC-FNS-WITH-RAW-CODE MOD-EXPT HEADER SEARCH-FN
4613                                     STATE-P1 AREF2 AREF1 MFC-ANCESTORS
4614                                     FGETPROP GETENV$ WORMHOLE-EVAL
4615                                     WORMHOLE1 GET-WORMHOLE-STATUS
4616                                     ASET2 SGETPROP SETENV$
4617                                     GETPROPS COMPRESS1 TIME-LIMIT4-REACHED-P
4618                                     FMT-TO-COMMENT-WINDOW
4619                                     LEN MFC-CLAUSE CPU-CORE-COUNT
4620                                     NONNEGATIVE-INTEGER-QUOTIENT
4621                                     CHECK-PRINT-BASE
4622                                     RETRACT-WORLD ASET1 ARRAY1P
4623                                     BOOLE$ ARRAY2P STRIP-CDRS COMPRESS2
4624                                     STRIP-CARS PLIST-WORLDP WORMHOLE-P
4625                                     MFC-TYPE-ALIST MAY-NEED-SLASHES-FN
4626                                     FMT-TO-COMMENT-WINDOW!
4627                                     HAS-PROPSP HARD-ERROR
4628                                     ABORT! P! MFC-RDEPTH FLUSH-COMPRESS
4629                                     ALPHORDER EXTEND-WORLD USER-STOBJ-ALIST
4630                                     READ-ACL2-ORACLE UPDATE-USER-STOBJ-ALIST
4631                                     DECREMENT-BIG-CLOCK
4632                                     PUT-GLOBAL CLOSE-INPUT-CHANNEL
4633                                     MAKUNBOUND-GLOBAL OPEN-INPUT-CHANNEL-P1
4634                                     BOUNDP-GLOBAL1 GLOBAL-TABLE-CARS1
4635                                     EXTEND-T-STACK LIST-ALL-PACKAGE-NAMES
4636                                     CLOSE-OUTPUT-CHANNEL WRITE-BYTE$
4637                                     SHRINK-T-STACK ASET-32-BIT-INTEGER-STACK
4638                                     GET-GLOBAL 32-BIT-INTEGER-STACK-LENGTH1
4639                                     EXTEND-32-BIT-INTEGER-STACK
4640                                     ASET-T-STACK AREF-T-STACK
4641                                     READ-CHAR$ AREF-32-BIT-INTEGER-STACK
4642                                     OPEN-OUTPUT-CHANNEL-P1
4643                                     READ-OBJECT BIG-CLOCK-NEGATIVE-P
4644                                     PEEK-CHAR$ SHRINK-32-BIT-INTEGER-STACK
4645                                     READ-RUN-TIME
4646                                     READ-BYTE$ READ-IDATE T-STACK-LENGTH1
4647                                     PRINT-OBJECT$ EC-CALL PROG2$ MV-LIST
4648                                     MUST-BE-EQUAL WITH-PROVER-TIME-LIMIT
4649                                     WITH-GUARD-CHECKING ZPF
4650                                     IDENTITY ENDP NTHCDR LAST REVAPPEND NULL
4651                                     BUTLAST STRING MEMBER NOT MOD PLUSP ATOM
4652                                     LISTP ZP FLOOR CEILING TRUNCATE ROUND
4653                                     REM REMOVE REMOVE-DUPLICATES LOGBITP
4654                                     ASH LOGCOUNT SIGNUM INTEGER-LENGTH
4655                                     EXPT SUBSETP SUBSTITUTE ZEROP
4656                                     MINUSP ODDP EVENP = /= MAX MIN CONJUGATE
4657                                     LOGANDC1 LOGANDC2 LOGNAND LOGNOR LOGNOT
4658                                     LOGORC1 LOGORC2 LOGTEST POSITION ABS
4659                                     STRING-EQUAL STRING< STRING> STRING<=
4660                                     STRING>= STRING-UPCASE STRING-DOWNCASE
4661                                     KEYWORDP EQ EQL CHAR SUBST
4662                                     SUBLIS ACONS ASSOC RASSOC NTH SUBSEQ
4663                                     LENGTH REVERSE ZIP STANDARD-CHAR-P
4664                                     ALPHA-CHAR-P UPPER-CASE-P LOWER-CASE-P
4665                                     CHAR< CHAR> CHAR<= CHAR>= CHAR-EQUAL
4666                                     CHAR-UPCASE CHAR-DOWNCASE AND-LIST
4667                                     OR-LIST RANDOM$ THROW-NONEXEC-ERROR
4668                                     GC$-FN SET-COMPILER-ENABLED GOOD-BYE-FN
4669                                     ASSOC-EQ ASSOC-EQUAL MEMBER-EQ
4670                                     MEMBER-EQUAL SUBSETP-EQ SUBSETP-EQUAL
4671                                     REMOVE-EQ REMOVE-EQUAL POSITION-EQ
4672                                     POSITION-EQUAL TAKE CANONICAL-PATHNAME)
4673            (MACROS-WITH-RAW-CODE MBE
4674                                  THEORY-INVARIANT SET-LET*-ABSTRACTIONP
4675                                  DEFAXIOM SET-BOGUS-MUTUAL-RECURSION-OK
4676                                  SET-RULER-EXTENDERS
4677                                  DELETE-INCLUDE-BOOK-DIR CERTIFY-BOOK
4678                                  PROGN! F-PUT-GLOBAL PUSH-UNTOUCHABLE
4679                                  SET-BACKCHAIN-LIMIT SET-DEFAULT-HINTS!
4680                                  SET-OVERRIDE-HINTS-MACRO
4681                                  DEFTHEORY PSTK VERIFY-GUARDS
4682                                  DEFCHOOSE SET-DEFAULT-BACKCHAIN-LIMIT
4683                                  SET-STATE-OK SET-IGNORE-OK
4684                                  SET-NON-LINEARP WITH-OUTPUT
4685                                  SET-COMPILE-FNS ADD-INCLUDE-BOOK-DIR
4686                                  CLEAR-PSTK ADD-CUSTOM-KEYWORD-HINT
4687                                  INITIAL-GSTACK ACL2-UNWIND-PROTECT
4688                                  SET-WELL-FOUNDED-RELATION
4689                                  CATCH-TIME-LIMIT4 DEFUNS
4690                                  ADD-DEFAULT-HINTS! LOCAL ENCAPSULATE
4691                                  REMOVE-DEFAULT-HINTS! INCLUDE-BOOK
4692                                  PPROGN SET-ENFORCE-REDUNDANCY
4693                                  SET-IGNORE-DOC-STRING-ERROR LOGIC
4694                                  ER DEFLABEL MV-LET PROGRAM VALUE-TRIPLE
4695                                  SET-BODY COMP SET-BOGUS-DEFUN-HINTS-OK
4696                                  DMR-STOP DEFPKG SET-MEASURE-FUNCTION
4697                                  SET-INHIBIT-WARNINGS DEFTHM MV
4698                                  F-BIG-CLOCK-NEGATIVE-P RESET-PREHISTORY
4699                                  MUTUAL-RECURSION SET-REWRITE-STACK-LIMIT
4700                                  ADD-MATCH-FREE-OVERRIDE
4701                                  SET-MATCH-FREE-DEFAULT
4702                                  THE-MV TABLE IN-ARITHMETIC-THEORY
4703                                  SET-CASE-SPLIT-LIMITATIONS
4704                                  SET-IRRELEVANT-FORMALS-OK
4705                                  REMOVE-UNTOUCHABLE
4706                                  IN-THEORY WITH-OUTPUT-FORCED
4707                                  DMR-START REWRITE-ENTRY
4708                                  SKIP-PROOFS F-BOUNDP-GLOBAL
4709                                  MAKE-EVENT SET-VERIFY-GUARDS-EAGERNESS
4710                                  WORMHOLE VERIFY-TERMINATION-BOOT-STRAP
4711                                  START-PROOF-TREE F-DECREMENT-BIG-CLOCK
4712                                  DEFSTOBJ DEFUND DEFTTAG
4713                                  DEFDOC PUSH-GFRAME DEFTHMD F-GET-GLOBAL
4714                                  SET-NU-REWRITER-MODE CAAR CADR
4715                                  CDAR CDDR CAAAR CAADR CADAR CADDR CDAAR
4716                                  CDADR CDDAR CDDDR CAAAAR CAAADR CAADAR
4717                                  CAADDR CADAAR CADADR CADDAR CADDDR
4718                                  CDAAAR CDAADR CDADAR CDADDR CDDAAR
4719                                  CDDADR CDDDAR CDDDDR REST MAKE-LIST LIST
4720                                  OR AND * LOGIOR LOGXOR LOGAND SEARCH
4721                                  LOGEQV CONCATENATE LET* DEFUN THE > <=
4722                                  >= + - / 1+ 1- PROGN DEFMACRO COND CASE
4723                                  LIST* APPEND DEFCONST IN-PACKAGE INTERN
4724                                  FIRST SECOND THIRD FOURTH FIFTH SIXTH
4725                                  SEVENTH EIGHTH NINTH TENTH DIGIT-CHAR-P
4726                                  UNMEMOIZE HONS-LET MEMOIZE-LET MEMOIZE
4727                                  DEFUNS-STD DEFTHM-STD DEFUN-STD POR
4728                                  PAND PLET PARGS TRACE! WITH-LIVE-STATE
4729                                  WITH-OUTPUT-OBJECT-CHANNEL-SHARING
4730                                  TIME$ WITH-HCOMP-BINDINGS
4731                                  WITH-HCOMP-HT-BINDINGS REDEF+
4732                                  REDEF- BIND-ACL2-TIME-LIMIT DEFATTACH)
4733            (MAIN-TIMER . 0)
4734            (MAKE-EVENT-DEBUG)
4735            (MAKE-EVENT-DEBUG-DEPTH . 0)
4736            (MATCH-FREE-ERROR)
4737            (MODIFYING-INCLUDE-BOOK-DIR-ALIST)
4738            (MORE-DOC-MAX-LINES . 45)
4739            (MORE-DOC-MIN-LINES . 35)
4740            (MORE-DOC-STATE)
4741            (MSWINDOWS-DRIVE)
4742            (PARALLEL-EVALUATION-ENABLED)
4743            (PC-OUTPUT)
4744            (PPR-FLAT-RIGHT-MARGIN . 40)
4745            (PRINT-BASE . 10)
4746            (PRINT-CASE . :UPCASE)
4747            (PRINT-CIRCLE)
4748            (PRINT-CIRCLE-FILES . T)
4749            (PRINT-CLAUSE-IDS)
4750            (PRINT-DOC-START-COLUMN . 15)
4751            (PRINT-ESCAPE . T)
4752            (PRINT-LENGTH)
4753            (PRINT-LEVEL)
4754            (PRINT-LINES)
4755            (PRINT-PRETTY)
4756            (PRINT-RADIX)
4757            (PRINT-READABLY)
4758            (PRINT-RIGHT-MARGIN)
4759            (PROGRAM-FNS-WITH-RAW-CODE
4760                 RELIEVE-HYP-SYNP
4761                 APPLY-ABBREVS-TO-LAMBDA-STACK1
4762                 NTH-UPDATE-REWRITER
4763                 EV-W-LST SIMPLIFY-CLAUSE1
4764                 EV-REC-ACL2-UNWIND-PROTECT
4765                 ALLOCATE-FIXNUM-RANGE TRACE$-FN-GENERAL
4766                 EV-FNCALL! OPEN-TRACE-FILE-FN
4767                 SET-TRACE-EVISC-TUPLE EV-FNCALL-W
4768                 EV-REC SETUP-SIMPLIFY-CLAUSE-POT-LST1
4769                 SAVE-EXEC CW-GSTACK-FN
4770                 RECOMPRESS-GLOBAL-ENABLED-STRUCTURE EV-W
4771                 VERBOSE-PSTACK USER-STOBJ-ALIST-SAFE
4772                 COMP-FN FMT-PPR GET-MEMO
4773                 ACL2-RAW-EVAL PSTACK-FN DMR-START-FN
4774                 MEMO-EXIT MEMO-KEY1 SYS-CALL-STATUS
4775                 EV-FNCALL-META SET-DEBUGGER-ENABLE-FN
4776                 LD-LOOP PRINT-SUMMARY
4777                 EV EV-LST ALLEGRO-ALLOCATE-SLOWLY-FN
4778                 CERTIFY-BOOK-FN
4779                 TRANSLATE11-FLET-ALIST1 INCLUDE-BOOK-FN1
4780                 INCLUDE-BOOK-FN FMT1 FLSZ SET-W
4781                 PROVE-LOOP CHK-VIRGIN W-OF-ANY-STATE
4782                 LAMBDA-ABSTRACT LD-FN-BODY UNTRANSLATE
4783                 LONGEST-COMMON-TAIL-LENGTH-REC
4784                 COMPILE-FUNCTION UNTRANSLATE-LST EV-SYNP
4785                 ADD-POLYS DMR-STOP-FN LD-PRINT-RESULTS
4786                 APPLY-ABBREVS-TO-LAMBDA-STACK
4787                 BREAK$ FLPR CLOSE-TRACE-FILE-FN
4788                 EV-FNCALL-REC SYS-CALL EV-FNCALL LD-FN0
4789                 LD-FN WRITE-EXPANSION-FILE LATCH-STOBJS1
4790                 CHK-PACKAGE-REINCARNATION-IMPORT-RESTRICTIONS
4791                 UNTRACE$-FN1
4792                 BDD-TOP DEFSTOBJ-FIELD-FNS-RAW-DEFS
4793                 EXPANSION-ALIST-PKG-NAMES TIMES-MOD-M31
4794                 PRINT-CALL-HISTORY IPRINT-AR-AREF1
4795                 PROVE MAKE-EVENT-FN OOPS-WARNING
4796                 CHECKPOINT-WORLD UBT-PREHISTORY-FN
4797                 GET-DECLAIM-LIST PATHNAME-UNIX-TO-OS
4798                 HCOMP-BUILD-FROM-PORTCULLIS
4799                 DEFCONST-VAL)
4800            (PROMPT-FUNCTION . DEFAULT-PRINT-PROMPT)
4801            (PROMPT-MEMO)
4802            (PROOF-TREE)
4803            (PROOF-TREE-BUFFER-WIDTH . 65)
4804            (PROOF-TREE-CTX)
4805            (PROOF-TREE-INDENT . "|  ")
4806            (PROOF-TREE-START-PRINTED)
4807            (PROOFS-CO .
4808                       ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
4809            (RAW-ARITY-ALIST)
4810            (RAW-INCLUDE-BOOK-DIR-ALIST . :IGNORE)
4811            (RAW-PROOF-FORMAT)
4812            (REDO-FLAT-FAIL)
4813            (REDO-FLAT-SUCC)
4814            (REDUNDANT-WITH-RAW-CODE-OKP)
4815            (RETRACE-P)
4816            (SAFE-MODE)
4817            (SAVE-EXPANSION-FILE)
4818            (SAVED-OUTPUT-P)
4819            (SAVED-OUTPUT-REVERSED)
4820            (SAVED-OUTPUT-TOKEN-LST)
4821            (SHOW-CUSTOM-KEYWORD-HINT-EXPANSION)
4822            (SKIP-NOTIFY-ON-DEFTTAG)
4823            (SKIP-PROOFS-BY-SYSTEM)
4824            (SKIP-PROOFS-OKP-CERT . T)
4825            (SLOW-ARRAY-ACTION . :BREAK)
4826            (STANDARD-CO .
4827                         ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
4828            (STANDARD-OI .
4829                         ACL2-OUTPUT-CHANNEL::STANDARD-OBJECT-INPUT-0)
4830            (TAINTED-OKP)
4831            (TEMP-TOUCHABLE-FNS)
4832            (TEMP-TOUCHABLE-VARS)
4833            (TERM-EVISC-TUPLE . :DEFAULT)
4834            (TIMER-ALIST)
4835            (TMP-DIR)
4836            (TRACE-CO .
4837                      ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
4838            (TRACE-LEVEL . 0)
4839            (TRACE-SPECS)
4840            (TRANSLATE-ERROR-DEPTH . -1)
4841            (TRIPLE-PRINT-PREFIX . " ")
4842            (TTAGS-ALLOWED . :ALL)
4843            (UNDONE-WORLDS-KILL-RING NIL NIL NIL)
4844            (USER-HOME-DIR)
4845            (VERBOSE-THEORY-WARNING . T)
4846            (WINDOW-INTERFACE-POSTLUDE
4847                 .
4848                 "#>\\>#<\\(acl2-window-postlude ?~sw ~xt ~xp)#>\\>")
4849            (WINDOW-INTERFACE-PRELUDE
4850                 .
4851                 "~%#<\\(acl2-window-prelude ?~sw ~xc)#>\\>#<\\<~sw")
4852            (WINDOW-INTERFACEP)
4853            (WORMHOLE-NAME)
4854            (WORMHOLE-STATUS)
4855            (WRITES-OKP . T))
4856           NIL NIL 4000000
4857           NIL NIL 1 NIL NIL NIL NIL NIL NIL)))
4858  (CONS
4859   OPEN-INPUT-CHANNELS
4860   (CONS
4861    OPEN-OUTPUT-CHANNELS
4862    (CONS
4863     GLOBAL-TABLE
4864     (CONS
4865      T-STACK
4866      (CONS
4867       32-BIT-INTEGER-STACK
4868       (CONS
4869        BIG-CLOCK
4870        (CONS
4871         IDATES
4872         (CONS
4873          ACL2-ORACLE
4874          (CONS
4875           FILE-CLOCK
4876           (CONS
4877            READABLE-FILES
4878            (CONS
4879               WRITTEN-FILES
4880               (CONS READ-FILES
4881                     (CONS WRITEABLE-FILES
4882                           (CONS LIST-ALL-PACKAGE-NAMES-LST
4883                                 (CONS USER-STOBJ-ALIST 'NIL)))))))))))))))))
4884
4885(DEFUN COERCE-STATE-TO-OBJECT (X) X)
4886
4887(DEFUN COERCE-OBJECT-TO-STATE (X) X)
4888
4889(DEFUN GLOBAL-TABLE-CARS1 (STATE-STATE)
4890       (STRIP-CARS (GLOBAL-TABLE STATE-STATE)))
4891
4892(DEFUN GLOBAL-TABLE-CARS (STATE-STATE) (GLOBAL-TABLE-CARS1 STATE-STATE))
4893
4894(DEFUN BOUNDP-GLOBAL1 (X STATE-STATE)
4895       (IF (ASSOC X (GLOBAL-TABLE STATE-STATE))
4896           'T
4897           'NIL))
4898
4899(DEFUN BOUNDP-GLOBAL (X STATE-STATE) (BOUNDP-GLOBAL1 X STATE-STATE))
4900
4901(DEFUN DELETE-PAIR (X L)
4902       (IF (ENDP L)
4903           'NIL
4904           (IF (EQ X (CAR (CAR L)))
4905               (CDR L)
4906               (CONS (CAR L)
4907                     (DELETE-PAIR X (CDR L))))))
4908
4909(DEFUN MAKUNBOUND-GLOBAL (X STATE-STATE)
4910       (UPDATE-GLOBAL-TABLE (DELETE-PAIR X (GLOBAL-TABLE STATE-STATE))
4911                            STATE-STATE))
4912
4913(DEFUN GET-GLOBAL (X STATE-STATE)
4914       (CDR (ASSOC X (GLOBAL-TABLE STATE-STATE))))
4915
4916(DEFUN PUT-GLOBAL (KEY VALUE STATE-STATE)
4917       (UPDATE-GLOBAL-TABLE (ADD-PAIR KEY VALUE (GLOBAL-TABLE STATE-STATE))
4918                            STATE-STATE))
4919
4920(DEFUN SYMBOL-DOUBLET-LISTP (LST)
4921       (IF (ATOM LST)
4922           (EQ LST 'NIL)
4923           (IF (CONSP (CAR LST))
4924               (IF (SYMBOLP (CAR (CAR LST)))
4925                   (IF (CONSP (CDR (CAR LST)))
4926                       (IF (NULL (CDR (CDR (CAR LST))))
4927                           (SYMBOL-DOUBLET-LISTP (CDR LST))
4928                           'NIL)
4929                       'NIL)
4930                   'NIL)
4931               'NIL)))
4932
4933(DEFUN
4934 ALWAYS-BOUNDP-GLOBAL (X)
4935 (IF
4936  (ASSOC-EQ
4937   X
4938   '((ABBREV-EVISC-TUPLE . :DEFAULT)
4939     (ACCUMULATED-TTREE)
4940     (ACCUMULATED-WARNINGS)
4941     (ACL2-RAW-MODE-P)
4942     (ACL2-VERSION . "ACL2 Version 4.0")
4943     (AXIOMSP)
4944     (BDDNOTES)
4945     (CERTIFY-BOOK-INFO)
4946     (CHECKPOINT-FORCED-GOALS)
4947     (CHECKPOINT-PROCESSORS ELIMINATE-DESTRUCTORS-CLAUSE
4948                            FERTILIZE-CLAUSE GENERALIZE-CLAUSE
4949                            ELIMINATE-IRRELEVANCE-CLAUSE
4950                            PUSH-CLAUSE :INDUCT)
4951     (CHECKPOINT-SUMMARY-LIMIT NIL . 3)
4952     (COMPILER-ENABLED)
4953     (CONNECTED-BOOK-DIRECTORY)
4954     (CURRENT-ACL2-WORLD)
4955     (CURRENT-PACKAGE . "ACL2")
4956     (DEBUGGER-ENABLE)
4957     (DEFAXIOMS-OKP-CERT . T)
4958     (DEFERRED-TTAG-NOTES . :NOT-DEFERRED)
4959     (DEFERRED-TTAG-NOTES-SAVED)
4960     (DISTRIBUTED-BOOKS-DIR)
4961     (DMRP)
4962     (EVISC-HITP-WITHOUT-IPRINT)
4963     (EVISCERATE-HIDE-TERMS)
4964     (FMT-HARD-RIGHT-MARGIN . 77)
4965     (FMT-SOFT-RIGHT-MARGIN . 65)
4966     (GAG-MODE)
4967     (GAG-STATE)
4968     (GAG-STATE-SAVED)
4969     (GLOBAL-ENABLED-STRUCTURE)
4970     (GSTACKP)
4971     (GUARD-CHECKING-ON . T)
4972     (HONS-ENABLED)
4973     (HONS-READ-P . T)
4974     (HOST-LISP . :CCL)
4975     (IN-LOCAL-FLG)
4976     (IN-PROVE-FLG)
4977     (IN-VERIFY-FLG)
4978     (INFIXP)
4979     (INHIBIT-OUTPUT-LST SUMMARY)
4980     (INHIBIT-OUTPUT-LST-STACK)
4981     (INHIBITED-SUMMARY-TYPES)
4982     (IPRINT-AR (:HEADER :DIMENSIONS (10001)
4983                         :MAXIMUM-LENGTH 40004
4984                         :DEFAULT NIL
4985                         :NAME IPRINT-AR
4986                         :ORDER :NONE)
4987                (0 0))
4988     (IPRINT-HARD-BOUND . 10000)
4989     (IPRINT-SOFT-BOUND . 1000)
4990     (KEEP-TMP-FILES)
4991     (LAST-MAKE-EVENT-EXPANSION)
4992     (LD-LEVEL . 0)
4993     (LD-REDEFINITION-ACTION)
4994     (LD-SKIP-PROOFSP)
4995     (LOGIC-FNS-WITH-RAW-CODE MOD-EXPT HEADER SEARCH-FN
4996                              STATE-P1 AREF2 AREF1 MFC-ANCESTORS
4997                              FGETPROP GETENV$ WORMHOLE-EVAL
4998                              WORMHOLE1 GET-WORMHOLE-STATUS
4999                              ASET2 SGETPROP SETENV$
5000                              GETPROPS COMPRESS1 TIME-LIMIT4-REACHED-P
5001                              FMT-TO-COMMENT-WINDOW
5002                              LEN MFC-CLAUSE CPU-CORE-COUNT
5003                              NONNEGATIVE-INTEGER-QUOTIENT
5004                              CHECK-PRINT-BASE
5005                              RETRACT-WORLD ASET1 ARRAY1P
5006                              BOOLE$ ARRAY2P STRIP-CDRS COMPRESS2
5007                              STRIP-CARS PLIST-WORLDP WORMHOLE-P
5008                              MFC-TYPE-ALIST MAY-NEED-SLASHES-FN
5009                              FMT-TO-COMMENT-WINDOW!
5010                              HAS-PROPSP HARD-ERROR
5011                              ABORT! P! MFC-RDEPTH FLUSH-COMPRESS
5012                              ALPHORDER EXTEND-WORLD USER-STOBJ-ALIST
5013                              READ-ACL2-ORACLE UPDATE-USER-STOBJ-ALIST
5014                              DECREMENT-BIG-CLOCK
5015                              PUT-GLOBAL CLOSE-INPUT-CHANNEL
5016                              MAKUNBOUND-GLOBAL OPEN-INPUT-CHANNEL-P1
5017                              BOUNDP-GLOBAL1 GLOBAL-TABLE-CARS1
5018                              EXTEND-T-STACK LIST-ALL-PACKAGE-NAMES
5019                              CLOSE-OUTPUT-CHANNEL WRITE-BYTE$
5020                              SHRINK-T-STACK ASET-32-BIT-INTEGER-STACK
5021                              GET-GLOBAL 32-BIT-INTEGER-STACK-LENGTH1
5022                              EXTEND-32-BIT-INTEGER-STACK
5023                              ASET-T-STACK AREF-T-STACK
5024                              READ-CHAR$ AREF-32-BIT-INTEGER-STACK
5025                              OPEN-OUTPUT-CHANNEL-P1
5026                              READ-OBJECT BIG-CLOCK-NEGATIVE-P
5027                              PEEK-CHAR$ SHRINK-32-BIT-INTEGER-STACK
5028                              READ-RUN-TIME
5029                              READ-BYTE$ READ-IDATE T-STACK-LENGTH1
5030                              PRINT-OBJECT$ EC-CALL PROG2$ MV-LIST
5031                              MUST-BE-EQUAL WITH-PROVER-TIME-LIMIT
5032                              WITH-GUARD-CHECKING ZPF
5033                              IDENTITY ENDP NTHCDR LAST REVAPPEND NULL
5034                              BUTLAST STRING MEMBER NOT MOD PLUSP ATOM
5035                              LISTP ZP FLOOR CEILING TRUNCATE ROUND
5036                              REM REMOVE REMOVE-DUPLICATES LOGBITP
5037                              ASH LOGCOUNT SIGNUM INTEGER-LENGTH
5038                              EXPT SUBSETP SUBSTITUTE ZEROP
5039                              MINUSP ODDP EVENP = /= MAX MIN CONJUGATE
5040                              LOGANDC1 LOGANDC2 LOGNAND LOGNOR LOGNOT
5041                              LOGORC1 LOGORC2 LOGTEST POSITION ABS
5042                              STRING-EQUAL STRING< STRING> STRING<=
5043                              STRING>= STRING-UPCASE STRING-DOWNCASE
5044                              KEYWORDP EQ EQL CHAR SUBST
5045                              SUBLIS ACONS ASSOC RASSOC NTH SUBSEQ
5046                              LENGTH REVERSE ZIP STANDARD-CHAR-P
5047                              ALPHA-CHAR-P UPPER-CASE-P LOWER-CASE-P
5048                              CHAR< CHAR> CHAR<= CHAR>= CHAR-EQUAL
5049                              CHAR-UPCASE CHAR-DOWNCASE AND-LIST
5050                              OR-LIST RANDOM$ THROW-NONEXEC-ERROR
5051                              GC$-FN SET-COMPILER-ENABLED GOOD-BYE-FN
5052                              ASSOC-EQ ASSOC-EQUAL MEMBER-EQ
5053                              MEMBER-EQUAL SUBSETP-EQ SUBSETP-EQUAL
5054                              REMOVE-EQ REMOVE-EQUAL POSITION-EQ
5055                              POSITION-EQUAL TAKE CANONICAL-PATHNAME)
5056     (MACROS-WITH-RAW-CODE MBE
5057                           THEORY-INVARIANT SET-LET*-ABSTRACTIONP
5058                           DEFAXIOM SET-BOGUS-MUTUAL-RECURSION-OK
5059                           SET-RULER-EXTENDERS
5060                           DELETE-INCLUDE-BOOK-DIR CERTIFY-BOOK
5061                           PROGN! F-PUT-GLOBAL PUSH-UNTOUCHABLE
5062                           SET-BACKCHAIN-LIMIT SET-DEFAULT-HINTS!
5063                           SET-OVERRIDE-HINTS-MACRO
5064                           DEFTHEORY PSTK VERIFY-GUARDS
5065                           DEFCHOOSE SET-DEFAULT-BACKCHAIN-LIMIT
5066                           SET-STATE-OK SET-IGNORE-OK
5067                           SET-NON-LINEARP WITH-OUTPUT
5068                           SET-COMPILE-FNS ADD-INCLUDE-BOOK-DIR
5069                           CLEAR-PSTK ADD-CUSTOM-KEYWORD-HINT
5070                           INITIAL-GSTACK ACL2-UNWIND-PROTECT
5071                           SET-WELL-FOUNDED-RELATION
5072                           CATCH-TIME-LIMIT4 DEFUNS
5073                           ADD-DEFAULT-HINTS! LOCAL ENCAPSULATE
5074                           REMOVE-DEFAULT-HINTS! INCLUDE-BOOK
5075                           PPROGN SET-ENFORCE-REDUNDANCY
5076                           SET-IGNORE-DOC-STRING-ERROR LOGIC
5077                           ER DEFLABEL MV-LET PROGRAM VALUE-TRIPLE
5078                           SET-BODY COMP SET-BOGUS-DEFUN-HINTS-OK
5079                           DMR-STOP DEFPKG SET-MEASURE-FUNCTION
5080                           SET-INHIBIT-WARNINGS DEFTHM MV
5081                           F-BIG-CLOCK-NEGATIVE-P RESET-PREHISTORY
5082                           MUTUAL-RECURSION SET-REWRITE-STACK-LIMIT
5083                           ADD-MATCH-FREE-OVERRIDE
5084                           SET-MATCH-FREE-DEFAULT
5085                           THE-MV TABLE IN-ARITHMETIC-THEORY
5086                           SET-CASE-SPLIT-LIMITATIONS
5087                           SET-IRRELEVANT-FORMALS-OK
5088                           REMOVE-UNTOUCHABLE
5089                           IN-THEORY WITH-OUTPUT-FORCED
5090                           DMR-START REWRITE-ENTRY
5091                           SKIP-PROOFS F-BOUNDP-GLOBAL
5092                           MAKE-EVENT SET-VERIFY-GUARDS-EAGERNESS
5093                           WORMHOLE VERIFY-TERMINATION-BOOT-STRAP
5094                           START-PROOF-TREE F-DECREMENT-BIG-CLOCK
5095                           DEFSTOBJ DEFUND DEFTTAG
5096                           DEFDOC PUSH-GFRAME DEFTHMD F-GET-GLOBAL
5097                           SET-NU-REWRITER-MODE CAAR CADR
5098                           CDAR CDDR CAAAR CAADR CADAR CADDR CDAAR
5099                           CDADR CDDAR CDDDR CAAAAR CAAADR CAADAR
5100                           CAADDR CADAAR CADADR CADDAR CADDDR
5101                           CDAAAR CDAADR CDADAR CDADDR CDDAAR
5102                           CDDADR CDDDAR CDDDDR REST MAKE-LIST LIST
5103                           OR AND * LOGIOR LOGXOR LOGAND SEARCH
5104                           LOGEQV CONCATENATE LET* DEFUN THE > <=
5105                           >= + - / 1+ 1- PROGN DEFMACRO COND CASE
5106                           LIST* APPEND DEFCONST IN-PACKAGE INTERN
5107                           FIRST SECOND THIRD FOURTH FIFTH SIXTH
5108                           SEVENTH EIGHTH NINTH TENTH DIGIT-CHAR-P
5109                           UNMEMOIZE HONS-LET MEMOIZE-LET MEMOIZE
5110                           DEFUNS-STD DEFTHM-STD DEFUN-STD POR
5111                           PAND PLET PARGS TRACE! WITH-LIVE-STATE
5112                           WITH-OUTPUT-OBJECT-CHANNEL-SHARING
5113                           TIME$ WITH-HCOMP-BINDINGS
5114                           WITH-HCOMP-HT-BINDINGS REDEF+
5115                           REDEF- BIND-ACL2-TIME-LIMIT DEFATTACH)
5116     (MAIN-TIMER . 0)
5117     (MAKE-EVENT-DEBUG)
5118     (MAKE-EVENT-DEBUG-DEPTH . 0)
5119     (MATCH-FREE-ERROR)
5120     (MODIFYING-INCLUDE-BOOK-DIR-ALIST)
5121     (MORE-DOC-MAX-LINES . 45)
5122     (MORE-DOC-MIN-LINES . 35)
5123     (MORE-DOC-STATE)
5124     (MSWINDOWS-DRIVE)
5125     (PARALLEL-EVALUATION-ENABLED)
5126     (PC-OUTPUT)
5127     (PPR-FLAT-RIGHT-MARGIN . 40)
5128     (PRINT-BASE . 10)
5129     (PRINT-CASE . :UPCASE)
5130     (PRINT-CIRCLE)
5131     (PRINT-CIRCLE-FILES . T)
5132     (PRINT-CLAUSE-IDS)
5133     (PRINT-DOC-START-COLUMN . 15)
5134     (PRINT-ESCAPE . T)
5135     (PRINT-LENGTH)
5136     (PRINT-LEVEL)
5137     (PRINT-LINES)
5138     (PRINT-PRETTY)
5139     (PRINT-RADIX)
5140     (PRINT-READABLY)
5141     (PRINT-RIGHT-MARGIN)
5142     (PROGRAM-FNS-WITH-RAW-CODE RELIEVE-HYP-SYNP
5143                                APPLY-ABBREVS-TO-LAMBDA-STACK1
5144                                NTH-UPDATE-REWRITER
5145                                EV-W-LST SIMPLIFY-CLAUSE1
5146                                EV-REC-ACL2-UNWIND-PROTECT
5147                                ALLOCATE-FIXNUM-RANGE TRACE$-FN-GENERAL
5148                                EV-FNCALL! OPEN-TRACE-FILE-FN
5149                                SET-TRACE-EVISC-TUPLE EV-FNCALL-W
5150                                EV-REC SETUP-SIMPLIFY-CLAUSE-POT-LST1
5151                                SAVE-EXEC CW-GSTACK-FN
5152                                RECOMPRESS-GLOBAL-ENABLED-STRUCTURE EV-W
5153                                VERBOSE-PSTACK USER-STOBJ-ALIST-SAFE
5154                                COMP-FN FMT-PPR GET-MEMO
5155                                ACL2-RAW-EVAL PSTACK-FN DMR-START-FN
5156                                MEMO-EXIT MEMO-KEY1 SYS-CALL-STATUS
5157                                EV-FNCALL-META SET-DEBUGGER-ENABLE-FN
5158                                LD-LOOP PRINT-SUMMARY
5159                                EV EV-LST ALLEGRO-ALLOCATE-SLOWLY-FN
5160                                CERTIFY-BOOK-FN
5161                                TRANSLATE11-FLET-ALIST1 INCLUDE-BOOK-FN1
5162                                INCLUDE-BOOK-FN FMT1 FLSZ SET-W
5163                                PROVE-LOOP CHK-VIRGIN W-OF-ANY-STATE
5164                                LAMBDA-ABSTRACT LD-FN-BODY UNTRANSLATE
5165                                LONGEST-COMMON-TAIL-LENGTH-REC
5166                                COMPILE-FUNCTION UNTRANSLATE-LST EV-SYNP
5167                                ADD-POLYS DMR-STOP-FN LD-PRINT-RESULTS
5168                                APPLY-ABBREVS-TO-LAMBDA-STACK
5169                                BREAK$ FLPR CLOSE-TRACE-FILE-FN
5170                                EV-FNCALL-REC SYS-CALL EV-FNCALL LD-FN0
5171                                LD-FN WRITE-EXPANSION-FILE LATCH-STOBJS1
5172                                CHK-PACKAGE-REINCARNATION-IMPORT-RESTRICTIONS
5173                                UNTRACE$-FN1
5174                                BDD-TOP DEFSTOBJ-FIELD-FNS-RAW-DEFS
5175                                EXPANSION-ALIST-PKG-NAMES TIMES-MOD-M31
5176                                PRINT-CALL-HISTORY IPRINT-AR-AREF1
5177                                PROVE MAKE-EVENT-FN OOPS-WARNING
5178                                CHECKPOINT-WORLD UBT-PREHISTORY-FN
5179                                GET-DECLAIM-LIST PATHNAME-UNIX-TO-OS
5180                                HCOMP-BUILD-FROM-PORTCULLIS
5181                                DEFCONST-VAL)
5182     (PROMPT-FUNCTION . DEFAULT-PRINT-PROMPT)
5183     (PROMPT-MEMO)
5184     (PROOF-TREE)
5185     (PROOF-TREE-BUFFER-WIDTH . 65)
5186     (PROOF-TREE-CTX)
5187     (PROOF-TREE-INDENT . "|  ")
5188     (PROOF-TREE-START-PRINTED)
5189     (PROOFS-CO .
5190                ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
5191     (RAW-ARITY-ALIST)
5192     (RAW-INCLUDE-BOOK-DIR-ALIST . :IGNORE)
5193     (RAW-PROOF-FORMAT)
5194     (REDO-FLAT-FAIL)
5195     (REDO-FLAT-SUCC)
5196     (REDUNDANT-WITH-RAW-CODE-OKP)
5197     (RETRACE-P)
5198     (SAFE-MODE)
5199     (SAVE-EXPANSION-FILE)
5200     (SAVED-OUTPUT-P)
5201     (SAVED-OUTPUT-REVERSED)
5202     (SAVED-OUTPUT-TOKEN-LST)
5203     (SHOW-CUSTOM-KEYWORD-HINT-EXPANSION)
5204     (SKIP-NOTIFY-ON-DEFTTAG)
5205     (SKIP-PROOFS-BY-SYSTEM)
5206     (SKIP-PROOFS-OKP-CERT . T)
5207     (SLOW-ARRAY-ACTION . :BREAK)
5208     (STANDARD-CO .
5209                  ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
5210     (STANDARD-OI .
5211                  ACL2-OUTPUT-CHANNEL::STANDARD-OBJECT-INPUT-0)
5212     (TAINTED-OKP)
5213     (TEMP-TOUCHABLE-FNS)
5214     (TEMP-TOUCHABLE-VARS)
5215     (TERM-EVISC-TUPLE . :DEFAULT)
5216     (TIMER-ALIST)
5217     (TMP-DIR)
5218     (TRACE-CO .
5219               ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
5220     (TRACE-LEVEL . 0)
5221     (TRACE-SPECS)
5222     (TRANSLATE-ERROR-DEPTH . -1)
5223     (TRIPLE-PRINT-PREFIX . " ")
5224     (TTAGS-ALLOWED . :ALL)
5225     (UNDONE-WORLDS-KILL-RING NIL NIL NIL)
5226     (USER-HOME-DIR)
5227     (VERBOSE-THEORY-WARNING . T)
5228     (WINDOW-INTERFACE-POSTLUDE
5229          .
5230          "#>\\>#<\\(acl2-window-postlude ?~sw ~xt ~xp)#>\\>")
5231     (WINDOW-INTERFACE-PRELUDE
5232          .
5233          "~%#<\\(acl2-window-prelude ?~sw ~xc)#>\\>#<\\<~sw")
5234     (WINDOW-INTERFACEP)
5235     (WORMHOLE-NAME)
5236     (WORMHOLE-STATUS)
5237     (WRITES-OKP . T)))
5238  (ASSOC-EQ
5239   X
5240   '((ABBREV-EVISC-TUPLE . :DEFAULT)
5241     (ACCUMULATED-TTREE)
5242     (ACCUMULATED-WARNINGS)
5243     (ACL2-RAW-MODE-P)
5244     (ACL2-VERSION . "ACL2 Version 4.0")
5245     (AXIOMSP)
5246     (BDDNOTES)
5247     (CERTIFY-BOOK-INFO)
5248     (CHECKPOINT-FORCED-GOALS)
5249     (CHECKPOINT-PROCESSORS ELIMINATE-DESTRUCTORS-CLAUSE
5250                            FERTILIZE-CLAUSE GENERALIZE-CLAUSE
5251                            ELIMINATE-IRRELEVANCE-CLAUSE
5252                            PUSH-CLAUSE :INDUCT)
5253     (CHECKPOINT-SUMMARY-LIMIT NIL . 3)
5254     (COMPILER-ENABLED)
5255     (CONNECTED-BOOK-DIRECTORY)
5256     (CURRENT-ACL2-WORLD)
5257     (CURRENT-PACKAGE . "ACL2")
5258     (DEBUGGER-ENABLE)
5259     (DEFAXIOMS-OKP-CERT . T)
5260     (DEFERRED-TTAG-NOTES . :NOT-DEFERRED)
5261     (DEFERRED-TTAG-NOTES-SAVED)
5262     (DISTRIBUTED-BOOKS-DIR)
5263     (DMRP)
5264     (EVISC-HITP-WITHOUT-IPRINT)
5265     (EVISCERATE-HIDE-TERMS)
5266     (FMT-HARD-RIGHT-MARGIN . 77)
5267     (FMT-SOFT-RIGHT-MARGIN . 65)
5268     (GAG-MODE)
5269     (GAG-STATE)
5270     (GAG-STATE-SAVED)
5271     (GLOBAL-ENABLED-STRUCTURE)
5272     (GSTACKP)
5273     (GUARD-CHECKING-ON . T)
5274     (HONS-ENABLED)
5275     (HONS-READ-P . T)
5276     (HOST-LISP . :CCL)
5277     (IN-LOCAL-FLG)
5278     (IN-PROVE-FLG)
5279     (IN-VERIFY-FLG)
5280     (INFIXP)
5281     (INHIBIT-OUTPUT-LST SUMMARY)
5282     (INHIBIT-OUTPUT-LST-STACK)
5283     (INHIBITED-SUMMARY-TYPES)
5284     (IPRINT-AR (:HEADER :DIMENSIONS (10001)
5285                         :MAXIMUM-LENGTH 40004
5286                         :DEFAULT NIL
5287                         :NAME IPRINT-AR
5288                         :ORDER :NONE)
5289                (0 0))
5290     (IPRINT-HARD-BOUND . 10000)
5291     (IPRINT-SOFT-BOUND . 1000)
5292     (KEEP-TMP-FILES)
5293     (LAST-MAKE-EVENT-EXPANSION)
5294     (LD-LEVEL . 0)
5295     (LD-REDEFINITION-ACTION)
5296     (LD-SKIP-PROOFSP)
5297     (LOGIC-FNS-WITH-RAW-CODE MOD-EXPT HEADER SEARCH-FN
5298                              STATE-P1 AREF2 AREF1 MFC-ANCESTORS
5299                              FGETPROP GETENV$ WORMHOLE-EVAL
5300                              WORMHOLE1 GET-WORMHOLE-STATUS
5301                              ASET2 SGETPROP SETENV$
5302                              GETPROPS COMPRESS1 TIME-LIMIT4-REACHED-P
5303                              FMT-TO-COMMENT-WINDOW
5304                              LEN MFC-CLAUSE CPU-CORE-COUNT
5305                              NONNEGATIVE-INTEGER-QUOTIENT
5306                              CHECK-PRINT-BASE
5307                              RETRACT-WORLD ASET1 ARRAY1P
5308                              BOOLE$ ARRAY2P STRIP-CDRS COMPRESS2
5309                              STRIP-CARS PLIST-WORLDP WORMHOLE-P
5310                              MFC-TYPE-ALIST MAY-NEED-SLASHES-FN
5311                              FMT-TO-COMMENT-WINDOW!
5312                              HAS-PROPSP HARD-ERROR
5313                              ABORT! P! MFC-RDEPTH FLUSH-COMPRESS
5314                              ALPHORDER EXTEND-WORLD USER-STOBJ-ALIST
5315                              READ-ACL2-ORACLE UPDATE-USER-STOBJ-ALIST
5316                              DECREMENT-BIG-CLOCK
5317                              PUT-GLOBAL CLOSE-INPUT-CHANNEL
5318                              MAKUNBOUND-GLOBAL OPEN-INPUT-CHANNEL-P1
5319                              BOUNDP-GLOBAL1 GLOBAL-TABLE-CARS1
5320                              EXTEND-T-STACK LIST-ALL-PACKAGE-NAMES
5321                              CLOSE-OUTPUT-CHANNEL WRITE-BYTE$
5322                              SHRINK-T-STACK ASET-32-BIT-INTEGER-STACK
5323                              GET-GLOBAL 32-BIT-INTEGER-STACK-LENGTH1
5324                              EXTEND-32-BIT-INTEGER-STACK
5325                              ASET-T-STACK AREF-T-STACK
5326                              READ-CHAR$ AREF-32-BIT-INTEGER-STACK
5327                              OPEN-OUTPUT-CHANNEL-P1
5328                              READ-OBJECT BIG-CLOCK-NEGATIVE-P
5329                              PEEK-CHAR$ SHRINK-32-BIT-INTEGER-STACK
5330                              READ-RUN-TIME
5331                              READ-BYTE$ READ-IDATE T-STACK-LENGTH1
5332                              PRINT-OBJECT$ EC-CALL PROG2$ MV-LIST
5333                              MUST-BE-EQUAL WITH-PROVER-TIME-LIMIT
5334                              WITH-GUARD-CHECKING ZPF
5335                              IDENTITY ENDP NTHCDR LAST REVAPPEND NULL
5336                              BUTLAST STRING MEMBER NOT MOD PLUSP ATOM
5337                              LISTP ZP FLOOR CEILING TRUNCATE ROUND
5338                              REM REMOVE REMOVE-DUPLICATES LOGBITP
5339                              ASH LOGCOUNT SIGNUM INTEGER-LENGTH
5340                              EXPT SUBSETP SUBSTITUTE ZEROP
5341                              MINUSP ODDP EVENP = /= MAX MIN CONJUGATE
5342                              LOGANDC1 LOGANDC2 LOGNAND LOGNOR LOGNOT
5343                              LOGORC1 LOGORC2 LOGTEST POSITION ABS
5344                              STRING-EQUAL STRING< STRING> STRING<=
5345                              STRING>= STRING-UPCASE STRING-DOWNCASE
5346                              KEYWORDP EQ EQL CHAR SUBST
5347                              SUBLIS ACONS ASSOC RASSOC NTH SUBSEQ
5348                              LENGTH REVERSE ZIP STANDARD-CHAR-P
5349                              ALPHA-CHAR-P UPPER-CASE-P LOWER-CASE-P
5350                              CHAR< CHAR> CHAR<= CHAR>= CHAR-EQUAL
5351                              CHAR-UPCASE CHAR-DOWNCASE AND-LIST
5352                              OR-LIST RANDOM$ THROW-NONEXEC-ERROR
5353                              GC$-FN SET-COMPILER-ENABLED GOOD-BYE-FN
5354                              ASSOC-EQ ASSOC-EQUAL MEMBER-EQ
5355                              MEMBER-EQUAL SUBSETP-EQ SUBSETP-EQUAL
5356                              REMOVE-EQ REMOVE-EQUAL POSITION-EQ
5357                              POSITION-EQUAL TAKE CANONICAL-PATHNAME)
5358     (MACROS-WITH-RAW-CODE MBE
5359                           THEORY-INVARIANT SET-LET*-ABSTRACTIONP
5360                           DEFAXIOM SET-BOGUS-MUTUAL-RECURSION-OK
5361                           SET-RULER-EXTENDERS
5362                           DELETE-INCLUDE-BOOK-DIR CERTIFY-BOOK
5363                           PROGN! F-PUT-GLOBAL PUSH-UNTOUCHABLE
5364                           SET-BACKCHAIN-LIMIT SET-DEFAULT-HINTS!
5365                           SET-OVERRIDE-HINTS-MACRO
5366                           DEFTHEORY PSTK VERIFY-GUARDS
5367                           DEFCHOOSE SET-DEFAULT-BACKCHAIN-LIMIT
5368                           SET-STATE-OK SET-IGNORE-OK
5369                           SET-NON-LINEARP WITH-OUTPUT
5370                           SET-COMPILE-FNS ADD-INCLUDE-BOOK-DIR
5371                           CLEAR-PSTK ADD-CUSTOM-KEYWORD-HINT
5372                           INITIAL-GSTACK ACL2-UNWIND-PROTECT
5373                           SET-WELL-FOUNDED-RELATION
5374                           CATCH-TIME-LIMIT4 DEFUNS
5375                           ADD-DEFAULT-HINTS! LOCAL ENCAPSULATE
5376                           REMOVE-DEFAULT-HINTS! INCLUDE-BOOK
5377                           PPROGN SET-ENFORCE-REDUNDANCY
5378                           SET-IGNORE-DOC-STRING-ERROR LOGIC
5379                           ER DEFLABEL MV-LET PROGRAM VALUE-TRIPLE
5380                           SET-BODY COMP SET-BOGUS-DEFUN-HINTS-OK
5381                           DMR-STOP DEFPKG SET-MEASURE-FUNCTION
5382                           SET-INHIBIT-WARNINGS DEFTHM MV
5383                           F-BIG-CLOCK-NEGATIVE-P RESET-PREHISTORY
5384                           MUTUAL-RECURSION SET-REWRITE-STACK-LIMIT
5385                           ADD-MATCH-FREE-OVERRIDE
5386                           SET-MATCH-FREE-DEFAULT
5387                           THE-MV TABLE IN-ARITHMETIC-THEORY
5388                           SET-CASE-SPLIT-LIMITATIONS
5389                           SET-IRRELEVANT-FORMALS-OK
5390                           REMOVE-UNTOUCHABLE
5391                           IN-THEORY WITH-OUTPUT-FORCED
5392                           DMR-START REWRITE-ENTRY
5393                           SKIP-PROOFS F-BOUNDP-GLOBAL
5394                           MAKE-EVENT SET-VERIFY-GUARDS-EAGERNESS
5395                           WORMHOLE VERIFY-TERMINATION-BOOT-STRAP
5396                           START-PROOF-TREE F-DECREMENT-BIG-CLOCK
5397                           DEFSTOBJ DEFUND DEFTTAG
5398                           DEFDOC PUSH-GFRAME DEFTHMD F-GET-GLOBAL
5399                           SET-NU-REWRITER-MODE CAAR CADR
5400                           CDAR CDDR CAAAR CAADR CADAR CADDR CDAAR
5401                           CDADR CDDAR CDDDR CAAAAR CAAADR CAADAR
5402                           CAADDR CADAAR CADADR CADDAR CADDDR
5403                           CDAAAR CDAADR CDADAR CDADDR CDDAAR
5404                           CDDADR CDDDAR CDDDDR REST MAKE-LIST LIST
5405                           OR AND * LOGIOR LOGXOR LOGAND SEARCH
5406                           LOGEQV CONCATENATE LET* DEFUN THE > <=
5407                           >= + - / 1+ 1- PROGN DEFMACRO COND CASE
5408                           LIST* APPEND DEFCONST IN-PACKAGE INTERN
5409                           FIRST SECOND THIRD FOURTH FIFTH SIXTH
5410                           SEVENTH EIGHTH NINTH TENTH DIGIT-CHAR-P
5411                           UNMEMOIZE HONS-LET MEMOIZE-LET MEMOIZE
5412                           DEFUNS-STD DEFTHM-STD DEFUN-STD POR
5413                           PAND PLET PARGS TRACE! WITH-LIVE-STATE
5414                           WITH-OUTPUT-OBJECT-CHANNEL-SHARING
5415                           TIME$ WITH-HCOMP-BINDINGS
5416                           WITH-HCOMP-HT-BINDINGS REDEF+
5417                           REDEF- BIND-ACL2-TIME-LIMIT DEFATTACH)
5418     (MAIN-TIMER . 0)
5419     (MAKE-EVENT-DEBUG)
5420     (MAKE-EVENT-DEBUG-DEPTH . 0)
5421     (MATCH-FREE-ERROR)
5422     (MODIFYING-INCLUDE-BOOK-DIR-ALIST)
5423     (MORE-DOC-MAX-LINES . 45)
5424     (MORE-DOC-MIN-LINES . 35)
5425     (MORE-DOC-STATE)
5426     (MSWINDOWS-DRIVE)
5427     (PARALLEL-EVALUATION-ENABLED)
5428     (PC-OUTPUT)
5429     (PPR-FLAT-RIGHT-MARGIN . 40)
5430     (PRINT-BASE . 10)
5431     (PRINT-CASE . :UPCASE)
5432     (PRINT-CIRCLE)
5433     (PRINT-CIRCLE-FILES . T)
5434     (PRINT-CLAUSE-IDS)
5435     (PRINT-DOC-START-COLUMN . 15)
5436     (PRINT-ESCAPE . T)
5437     (PRINT-LENGTH)
5438     (PRINT-LEVEL)
5439     (PRINT-LINES)
5440     (PRINT-PRETTY)
5441     (PRINT-RADIX)
5442     (PRINT-READABLY)
5443     (PRINT-RIGHT-MARGIN)
5444     (PROGRAM-FNS-WITH-RAW-CODE RELIEVE-HYP-SYNP
5445                                APPLY-ABBREVS-TO-LAMBDA-STACK1
5446                                NTH-UPDATE-REWRITER
5447                                EV-W-LST SIMPLIFY-CLAUSE1
5448                                EV-REC-ACL2-UNWIND-PROTECT
5449                                ALLOCATE-FIXNUM-RANGE TRACE$-FN-GENERAL
5450                                EV-FNCALL! OPEN-TRACE-FILE-FN
5451                                SET-TRACE-EVISC-TUPLE EV-FNCALL-W
5452                                EV-REC SETUP-SIMPLIFY-CLAUSE-POT-LST1
5453                                SAVE-EXEC CW-GSTACK-FN
5454                                RECOMPRESS-GLOBAL-ENABLED-STRUCTURE EV-W
5455                                VERBOSE-PSTACK USER-STOBJ-ALIST-SAFE
5456                                COMP-FN FMT-PPR GET-MEMO
5457                                ACL2-RAW-EVAL PSTACK-FN DMR-START-FN
5458                                MEMO-EXIT MEMO-KEY1 SYS-CALL-STATUS
5459                                EV-FNCALL-META SET-DEBUGGER-ENABLE-FN
5460                                LD-LOOP PRINT-SUMMARY
5461                                EV EV-LST ALLEGRO-ALLOCATE-SLOWLY-FN
5462                                CERTIFY-BOOK-FN
5463                                TRANSLATE11-FLET-ALIST1 INCLUDE-BOOK-FN1
5464                                INCLUDE-BOOK-FN FMT1 FLSZ SET-W
5465                                PROVE-LOOP CHK-VIRGIN W-OF-ANY-STATE
5466                                LAMBDA-ABSTRACT LD-FN-BODY UNTRANSLATE
5467                                LONGEST-COMMON-TAIL-LENGTH-REC
5468                                COMPILE-FUNCTION UNTRANSLATE-LST EV-SYNP
5469                                ADD-POLYS DMR-STOP-FN LD-PRINT-RESULTS
5470                                APPLY-ABBREVS-TO-LAMBDA-STACK
5471                                BREAK$ FLPR CLOSE-TRACE-FILE-FN
5472                                EV-FNCALL-REC SYS-CALL EV-FNCALL LD-FN0
5473                                LD-FN WRITE-EXPANSION-FILE LATCH-STOBJS1
5474                                CHK-PACKAGE-REINCARNATION-IMPORT-RESTRICTIONS
5475                                UNTRACE$-FN1
5476                                BDD-TOP DEFSTOBJ-FIELD-FNS-RAW-DEFS
5477                                EXPANSION-ALIST-PKG-NAMES TIMES-MOD-M31
5478                                PRINT-CALL-HISTORY IPRINT-AR-AREF1
5479                                PROVE MAKE-EVENT-FN OOPS-WARNING
5480                                CHECKPOINT-WORLD UBT-PREHISTORY-FN
5481                                GET-DECLAIM-LIST PATHNAME-UNIX-TO-OS
5482                                HCOMP-BUILD-FROM-PORTCULLIS
5483                                DEFCONST-VAL)
5484     (PROMPT-FUNCTION . DEFAULT-PRINT-PROMPT)
5485     (PROMPT-MEMO)
5486     (PROOF-TREE)
5487     (PROOF-TREE-BUFFER-WIDTH . 65)
5488     (PROOF-TREE-CTX)
5489     (PROOF-TREE-INDENT . "|  ")
5490     (PROOF-TREE-START-PRINTED)
5491     (PROOFS-CO .
5492                ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
5493     (RAW-ARITY-ALIST)
5494     (RAW-INCLUDE-BOOK-DIR-ALIST . :IGNORE)
5495     (RAW-PROOF-FORMAT)
5496     (REDO-FLAT-FAIL)
5497     (REDO-FLAT-SUCC)
5498     (REDUNDANT-WITH-RAW-CODE-OKP)
5499     (RETRACE-P)
5500     (SAFE-MODE)
5501     (SAVE-EXPANSION-FILE)
5502     (SAVED-OUTPUT-P)
5503     (SAVED-OUTPUT-REVERSED)
5504     (SAVED-OUTPUT-TOKEN-LST)
5505     (SHOW-CUSTOM-KEYWORD-HINT-EXPANSION)
5506     (SKIP-NOTIFY-ON-DEFTTAG)
5507     (SKIP-PROOFS-BY-SYSTEM)
5508     (SKIP-PROOFS-OKP-CERT . T)
5509     (SLOW-ARRAY-ACTION . :BREAK)
5510     (STANDARD-CO .
5511                  ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
5512     (STANDARD-OI .
5513                  ACL2-OUTPUT-CHANNEL::STANDARD-OBJECT-INPUT-0)
5514     (TAINTED-OKP)
5515     (TEMP-TOUCHABLE-FNS)
5516     (TEMP-TOUCHABLE-VARS)
5517     (TERM-EVISC-TUPLE . :DEFAULT)
5518     (TIMER-ALIST)
5519     (TMP-DIR)
5520     (TRACE-CO .
5521               ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
5522     (TRACE-LEVEL . 0)
5523     (TRACE-SPECS)
5524     (TRANSLATE-ERROR-DEPTH . -1)
5525     (TRIPLE-PRINT-PREFIX . " ")
5526     (TTAGS-ALLOWED . :ALL)
5527     (UNDONE-WORLDS-KILL-RING NIL NIL NIL)
5528     (USER-HOME-DIR)
5529     (VERBOSE-THEORY-WARNING . T)
5530     (WINDOW-INTERFACE-POSTLUDE
5531          .
5532          "#>\\>#<\\(acl2-window-postlude ?~sw ~xt ~xp)#>\\>")
5533     (WINDOW-INTERFACE-PRELUDE
5534          .
5535          "~%#<\\(acl2-window-prelude ?~sw ~xc)#>\\>#<\\<~sw")
5536     (WINDOW-INTERFACEP)
5537     (WORMHOLE-NAME)
5538     (WORMHOLE-STATUS)
5539     (WRITES-OKP . T)))
5540  (ASSOC-EQ
5541   X
5542   '((STANDARD-OI .
5543                  ACL2-INPUT-CHANNEL::STANDARD-OBJECT-INPUT-0)
5544     (STANDARD-CO .
5545                  ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
5546     (PROOFS-CO .
5547                ACL2-OUTPUT-CHANNEL::STANDARD-CHARACTER-OUTPUT-0)
5548     (LD-SKIP-PROOFSP)
5549     (LD-REDEFINITION-ACTION)
5550     (LD-PROMPT . T)
5551     (LD-KEYWORD-ALIASES)
5552     (LD-PRE-EVAL-FILTER . :ALL)
5553     (LD-PRE-EVAL-PRINT)
5554     (LD-POST-EVAL-PRINT . :COMMAND-CONVENTIONS)
5555     (LD-EVISC-TUPLE)
5556     (LD-ERROR-TRIPLES . T)
5557     (LD-ERROR-ACTION . :CONTINUE)
5558     (LD-QUERY-CONTROL-ALIST)
5559     (LD-VERBOSE
5560      .
5561      "~sv.  Level ~Fl.  Cbd ~xc.~|Distributed books ~
5562                   directory ~xb.~|Type :help for help.~%Type (good-bye) to ~
5563                   quit completely out of ACL2.~|~%")))))
5564
5565(DEFUN STATE-GLOBAL-LET*-BINDINGS-P (LST)
5566       (IF (ATOM LST)
5567           (EQ LST 'NIL)
5568           (IF (CONSP (CAR LST))
5569               (IF (SYMBOLP (CAR (CAR LST)))
5570                   (IF (CONSP (CDR (CAR LST)))
5571                       (IF (IF (NULL (CDR (CDR (CAR LST))))
5572                               (NULL (CDR (CDR (CAR LST))))
5573                               (IF (CONSP (CDR (CDR (CAR LST))))
5574                                   (IF (SYMBOLP (CAR (CDR (CDR (CAR LST)))))
5575                                       (NULL (CDR (CDR (CDR (CAR LST)))))
5576                                       'NIL)
5577                                   'NIL))
5578                           (STATE-GLOBAL-LET*-BINDINGS-P (CDR LST))
5579                           'NIL)
5580                       'NIL)
5581                   'NIL)
5582               'NIL)))
5583
5584(DEFUN
5585 STATE-GLOBAL-LET*-GET-GLOBALS (BINDINGS)
5586 (IF
5587  (ENDP BINDINGS)
5588  'NIL
5589  (CONS
5590   (IF
5591    (ALWAYS-BOUNDP-GLOBAL (CAR (CAR BINDINGS)))
5592    (CONS 'LIST
5593          (CONS (CONS 'F-GET-GLOBAL
5594                      (CONS (CONS 'QUOTE
5595                                  (CONS (CAR (CAR BINDINGS)) 'NIL))
5596                            (CONS 'STATE 'NIL)))
5597                'NIL))
5598    (CONS
5599     'IF
5600     (CONS
5601        (CONS 'F-BOUNDP-GLOBAL
5602              (CONS (CONS 'QUOTE
5603                          (CONS (CAR (CAR BINDINGS)) 'NIL))
5604                    (CONS 'STATE 'NIL)))
5605        (CONS (CONS 'LIST
5606                    (CONS (CONS 'F-GET-GLOBAL
5607                                (CONS (CONS 'QUOTE
5608                                            (CONS (CAR (CAR BINDINGS)) 'NIL))
5609                                      (CONS 'STATE 'NIL)))
5610                          'NIL))
5611              (CONS 'NIL 'NIL)))))
5612   (STATE-GLOBAL-LET*-GET-GLOBALS (CDR BINDINGS)))))
5613
5614(DEFUN
5615 STATE-GLOBAL-LET*-PUT-GLOBALS (BINDINGS)
5616 (IF
5617  (ENDP BINDINGS)
5618  'NIL
5619  (CONS
5620   ((LAMBDA
5621     (VAL-FORM BINDINGS)
5622     (IF
5623      (CDR (CDR (CAR BINDINGS)))
5624      (CONS
5625       'IF
5626       (CONS
5627        (CONS 'F-BOUNDP-GLOBAL
5628              (CONS (CONS 'QUOTE
5629                          (CONS (CAR (CAR BINDINGS)) 'NIL))
5630                    (CONS 'STATE 'NIL)))
5631        (CONS
5632         (CONS (CAR (CDR (CDR (CAR BINDINGS))))
5633               (CONS VAL-FORM (CONS 'STATE 'NIL)))
5634         (CONS
5635          (CONS
5636           'PROG2$
5637           (CONS
5638            (CONS
5639             'ER
5640             (CONS
5641              'HARD
5642              (CONS
5643               (CONS 'QUOTE
5644                     (CONS 'STATE-GLOBAL-LET* 'NIL))
5645               (CONS
5646                '"It is illegal to bind an unbound variable ~
5647                                   in state-global-let*, in this case, ~x0, ~
5648                                   when a setter function is supplied."
5649                (CONS (CONS 'QUOTE
5650                            (CONS (CAR (CAR BINDINGS)) 'NIL))
5651                      'NIL)))))
5652            (CONS 'STATE 'NIL)))
5653          'NIL))))
5654      (CONS 'F-PUT-GLOBAL
5655            (CONS (CONS 'QUOTE
5656                        (CONS (CAR (CAR BINDINGS)) 'NIL))
5657                  (CONS VAL-FORM (CONS 'STATE 'NIL))))))
5658    (CONS 'CHECK-VARS-NOT-FREE
5659          (CONS (CONS 'STATE-GLOBAL-LET*-CLEANUP-LST
5660                      'NIL)
5661                (CONS (CAR (CDR (CAR BINDINGS))) 'NIL)))
5662    BINDINGS)
5663   (STATE-GLOBAL-LET*-PUT-GLOBALS (CDR BINDINGS)))))
5664
5665(DEFUN
5666 STATE-GLOBAL-LET*-CLEANUP
5667 (BINDINGS INDEX)
5668 ((LAMBDA
5669   (CDR-EXPR INDEX BINDINGS)
5670   (IF
5671    (ENDP BINDINGS)
5672    'NIL
5673    (CONS
5674     (IF
5675      (CDR (CDR (CAR BINDINGS)))
5676      (CONS (CAR (CDR (CDR (CAR BINDINGS))))
5677            (CONS (CONS 'CAR
5678                        (CONS (CONS 'NTH
5679                                    (CONS INDEX (CONS CDR-EXPR 'NIL)))
5680                              'NIL))
5681                  (CONS 'STATE 'NIL)))
5682      (IF
5683       (ALWAYS-BOUNDP-GLOBAL (CAR (CAR BINDINGS)))
5684       (CONS 'F-PUT-GLOBAL
5685             (CONS (CONS 'QUOTE
5686                         (CONS (CAR (CAR BINDINGS)) 'NIL))
5687                   (CONS (CONS 'CAR
5688                               (CONS (CONS 'NTH
5689                                           (CONS INDEX (CONS CDR-EXPR 'NIL)))
5690                                     'NIL))
5691                         (CONS 'STATE 'NIL))))
5692       (CONS
5693        'IF
5694        (CONS
5695         (CONS 'NTH
5696               (CONS INDEX (CONS CDR-EXPR 'NIL)))
5697         (CONS
5698          (CONS
5699             'F-PUT-GLOBAL
5700             (CONS (CONS 'QUOTE
5701                         (CONS (CAR (CAR BINDINGS)) 'NIL))
5702                   (CONS (CONS 'CAR
5703                               (CONS (CONS 'NTH
5704                                           (CONS INDEX (CONS CDR-EXPR 'NIL)))
5705                                     'NIL))
5706                         (CONS 'STATE 'NIL))))
5707          (CONS (CONS 'MAKUNBOUND-GLOBAL
5708                      (CONS (CONS 'QUOTE
5709                                  (CONS (CAR (CAR BINDINGS)) 'NIL))
5710                            (CONS 'STATE 'NIL)))
5711                'NIL))))))
5712     (STATE-GLOBAL-LET*-CLEANUP (CDR BINDINGS)
5713                                (BINARY-+ '1 INDEX)))))
5714  'STATE-GLOBAL-LET*-CLEANUP-LST
5715  INDEX BINDINGS))
5716
5717(DEFUN INTEGER-RANGE-P (LOWER UPPER X)
5718       (IF (INTEGERP X)
5719           (IF (NOT (< X LOWER)) (< X UPPER) 'NIL)
5720           'NIL))
5721
5722(DEFUN SIGNED-BYTE-P (BITS X)
5723       (IF (INTEGERP BITS)
5724           (IF (< '0 BITS)
5725               (INTEGER-RANGE-P (UNARY-- (EXPT '2 (BINARY-+ '-1 BITS)))
5726                                (EXPT '2 (BINARY-+ '-1 BITS))
5727                                X)
5728               'NIL)
5729           'NIL))
5730
5731(DEFUN UNSIGNED-BYTE-P (BITS X)
5732       (IF (INTEGERP BITS)
5733           (IF (NOT (< BITS '0))
5734               (INTEGER-RANGE-P '0 (EXPT '2 BITS) X)
5735               'NIL)
5736           'NIL))
5737
5738(DEFTHM INTEGER-RANGE-P-FORWARD
5739        (IMPLIES (IF (INTEGER-RANGE-P LOWER (BINARY-+ '1 UPPER-1)
5740                                      X)
5741                     (INTEGERP UPPER-1)
5742                     'NIL)
5743                 (IF (INTEGERP X)
5744                     (IF (NOT (< X LOWER))
5745                         (NOT (< UPPER-1 X))
5746                         'NIL)
5747                     'NIL)))
5748
5749(DEFTHM SIGNED-BYTE-P-FORWARD-TO-INTEGERP
5750        (IMPLIES (SIGNED-BYTE-P N X)
5751                 (INTEGERP X)))
5752
5753(DEFTHM UNSIGNED-BYTE-P-FORWARD-TO-NONNEGATIVE-INTEGERP
5754        (IMPLIES (UNSIGNED-BYTE-P N X)
5755                 (IF (INTEGERP X) (NOT (< X '0)) 'NIL)))
5756
5757(DEFUN ZPF (X) (IF (INTEGERP X) (NOT (< '0 X)) 'T))
5758
5759(DEFTHM STRING<-L-ASYMMETRIC
5760        (IMPLIES (IF (EQLABLE-LISTP X1)
5761                     (IF (EQLABLE-LISTP X2)
5762                         (IF (INTEGERP I)
5763                             (STRING<-L X1 X2 I)
5764                             'NIL)
5765                         'NIL)
5766                     'NIL)
5767                 (NOT (STRING<-L X2 X1 I))))
5768
5769(DEFTHM SYMBOL-<-ASYMMETRIC
5770        (IMPLIES (IF (SYMBOLP SYM1)
5771                     (IF (SYMBOLP SYM2)
5772                         (SYMBOL-< SYM1 SYM2)
5773                         'NIL)
5774                     'NIL)
5775                 (NOT (SYMBOL-< SYM2 SYM1))))
5776
5777(DEFTHM STRING<-L-TRANSITIVE
5778        (IMPLIES (IF (STRING<-L X Y I)
5779                     (IF (STRING<-L Y Z J)
5780                         (IF (INTEGERP I)
5781                             (IF (INTEGERP J)
5782                                 (IF (INTEGERP K)
5783                                     (IF (CHARACTER-LISTP X)
5784                                         (IF (CHARACTER-LISTP Y)
5785                                             (CHARACTER-LISTP Z)
5786                                             'NIL)
5787                                         'NIL)
5788                                     'NIL)
5789                                 'NIL)
5790                             'NIL)
5791                         'NIL)
5792                     'NIL)
5793                 (STRING<-L X Z K)))
5794
5795(DEFTHM SYMBOL-<-TRANSITIVE
5796        (IMPLIES (IF (SYMBOL-< X Y)
5797                     (IF (SYMBOL-< Y Z)
5798                         (IF (SYMBOLP X)
5799                             (IF (SYMBOLP Y) (SYMBOLP Z) 'NIL)
5800                             'NIL)
5801                         'NIL)
5802                     'NIL)
5803                 (SYMBOL-< X Z)))
5804
5805(DEFTHM STRING<-L-TRICHOTOMY
5806        (IMPLIES (IF (NOT (STRING<-L X Y I))
5807                     (IF (INTEGERP I)
5808                         (IF (INTEGERP J)
5809                             (IF (CHARACTER-LISTP X)
5810                                 (CHARACTER-LISTP Y)
5811                                 'NIL)
5812                             'NIL)
5813                         'NIL)
5814                     'NIL)
5815                 (IFF (STRING<-L Y X J)
5816                      (NOT (EQUAL X Y)))))
5817
5818(DEFTHM SYMBOL-<-TRICHOTOMY
5819        (IMPLIES (IF (SYMBOLP X)
5820                     (IF (SYMBOLP Y)
5821                         (NOT (SYMBOL-< X Y))
5822                         'NIL)
5823                     'NIL)
5824                 (IFF (SYMBOL-< Y X) (NOT (EQUAL X Y)))))
5825
5826(DEFTHM ORDERED-SYMBOL-ALISTP-REMOVE-FIRST-PAIR
5827        (IMPLIES (IF (ORDERED-SYMBOL-ALISTP L)
5828                     (IF (SYMBOLP KEY) (ASSOC-EQ KEY L) 'NIL)
5829                     'NIL)
5830                 (ORDERED-SYMBOL-ALISTP (REMOVE-FIRST-PAIR KEY L))))
5831
5832(DEFTHM SYMBOL-<-IRREFLEXIVE (IMPLIES (SYMBOLP X) (NOT (SYMBOL-< X X))))
5833
5834(DEFTHM ORDERED-SYMBOL-ALISTP-ADD-PAIR
5835        (IMPLIES (IF (ORDERED-SYMBOL-ALISTP GS)
5836                     (SYMBOLP W5)
5837                     'NIL)
5838                 (ORDERED-SYMBOL-ALISTP (ADD-PAIR W5 W6 GS))))
5839
5840(DEFTHM ORDERED-SYMBOL-ALISTP-GETPROPS
5841        (IMPLIES (IF (PLIST-WORLDP W)
5842                     (IF (SYMBOLP WORLD-NAME)
5843                         (SYMBOLP KEY)
5844                         'NIL)
5845                     'NIL)
5846                 (ORDERED-SYMBOL-ALISTP (GETPROPS KEY WORLD-NAME W))))
5847
5848(DEFUN INTEGER-LENGTH (I)
5849       (IF (ZIP I)
5850           '0
5851           (IF (= I '-1)
5852               '0
5853               (BINARY-+ '1
5854                         (INTEGER-LENGTH (FLOOR I '2))))))
5855
5856(DEFUN
5857  BINARY-LOGAND (I J)
5858  (IF (ZIP I)
5859      '0
5860      (IF (ZIP J)
5861          '0
5862          (IF (EQL I '-1)
5863              J
5864              (IF (EQL J '-1)
5865                  I
5866                  ((LAMBDA (X J I)
5867                           (BINARY-+ X
5868                                     (IF (EVENP I) '0 (IF (EVENP J) '0 '1))))
5869                   (BINARY-* '2
5870                             (BINARY-LOGAND (FLOOR I '2)
5871                                            (FLOOR J '2)))
5872                   J I))))))
5873
5874(DEFUN LOGNAND (I J) (LOGNOT (BINARY-LOGAND I J)))
5875
5876(DEFUN BINARY-LOGIOR (I J) (LOGNOT (BINARY-LOGAND (LOGNOT I) (LOGNOT J))))
5877
5878(DEFUN LOGORC1 (I J) (BINARY-LOGIOR (LOGNOT I) J))
5879
5880(DEFUN LOGORC2 (I J) (BINARY-LOGIOR I (LOGNOT J)))
5881
5882(DEFUN LOGANDC1 (I J) (BINARY-LOGAND (LOGNOT I) J))
5883
5884(DEFUN LOGANDC2 (I J) (BINARY-LOGAND I (LOGNOT J)))
5885
5886(DEFUN BINARY-LOGEQV (I J) (BINARY-LOGAND (LOGORC1 I J) (LOGORC1 J I)))
5887
5888(DEFUN BINARY-LOGXOR (I J) (LOGNOT (BINARY-LOGEQV I J)))
5889
5890(DEFUN LOGNOR (I J) (LOGNOT (BINARY-LOGIOR I J)))
5891
5892(DEFUN LOGTEST (X Y) (NOT (ZEROP (BINARY-LOGAND X Y))))
5893
5894(DEFUN
5895 BOOLE$ (OP I1 I2)
5896 (IF
5897  (EQL OP '0)
5898  I1
5899  (IF
5900   (EQL OP '1)
5901   I2
5902   (IF
5903    (EQL OP '2)
5904    (BINARY-LOGAND I1 I2)
5905    (IF (EQL OP '3)
5906        (LOGANDC1 I1 I2)
5907        (IF (EQL OP '4)
5908            (LOGANDC2 I1 I2)
5909            (IF (EQL OP '5)
5910                (LOGNOT I1)
5911                (IF (EQL OP '6)
5912                    (LOGNOT I2)
5913                    (IF (EQL OP '7)
5914                        '0
5915                        (IF (EQL OP '8)
5916                            (BINARY-LOGEQV I1 I2)
5917                            (IF (EQL OP '9)
5918                                (BINARY-LOGIOR I1 I2)
5919                                (IF (EQL OP '10)
5920                                    (LOGNAND I1 I2)
5921                                    (IF (EQL OP '11)
5922                                        (LOGNOR I1 I2)
5923                                        (IF (EQL OP '12)
5924                                            (LOGORC1 I1 I2)
5925                                            (IF (EQL OP '13)
5926                                                (LOGORC2 I1 I2)
5927                                                (IF (EQL OP '14)
5928                                                    '1
5929                                                    (IF (EQL OP '15)
5930                                                        (BINARY-LOGXOR I1 I2)
5931                                                        '0)))))))))))))))))
5932
5933(DEFUN
5934     SET-FORMS-FROM-BINDINGS (BINDINGS)
5935     (IF (ENDP BINDINGS)
5936         'NIL
5937         (CONS (CONS (INTERN-IN-PACKAGE-OF-SYMBOL
5938                          (STRING-APPEND '"SET-"
5939                                         (SYMBOL-NAME (CAR (CAR BINDINGS))))
5940                          (PKG-WITNESS '"ACL2"))
5941                     (CONS (CAR (CDR (CAR BINDINGS)))
5942                           (CONS 'STATE 'NIL)))
5943               (SET-FORMS-FROM-BINDINGS (CDR BINDINGS)))))
5944
5945(DEFUN ALIST-DIFFERENCE-EQ (ALIST1 ALIST2)
5946       (IF (ENDP ALIST1)
5947           'NIL
5948           (IF (ASSOC-EQ (CAR (CAR ALIST1)) ALIST2)
5949               (ALIST-DIFFERENCE-EQ (CDR ALIST1)
5950                                    ALIST2)
5951               (CONS (CAR ALIST1)
5952                     (ALIST-DIFFERENCE-EQ (CDR ALIST1)
5953                                          ALIST2)))))
5954
5955(DEFUN
5956 DIGIT-TO-CHAR (N)
5957 (IF
5958  (EQL N '1)
5959  '#\1
5960  (IF
5961     (EQL N '2)
5962     '#\2
5963     (IF (EQL N '3)
5964         '#\3
5965         (IF (EQL N '4)
5966             '#\4
5967             (IF (EQL N '5)
5968                 '#\5
5969                 (IF (EQL N '6)
5970                     '#\6
5971                     (IF (EQL N '7)
5972                         '#\7
5973                         (IF (EQL N '8)
5974                             '#\8
5975                             (IF (EQL N '9)
5976                                 '#\9
5977                                 (IF (EQL N '10)
5978                                     '#\A
5979                                     (IF (EQL N '11)
5980                                         '#\B
5981                                         (IF (EQL N '12)
5982                                             '#\C
5983                                             (IF (EQL N '13)
5984                                                 '#\D
5985                                                 (IF (EQL N '14)
5986                                                     '#\E
5987                                                     (IF (EQL N '15)
5988                                                         '#\F
5989                                                         '#\0))))))))))))))))
5990
5991(DEFUN PRINT-BASE-P (PRINT-BASE) (MEMBER PRINT-BASE '(2 8 10 16)))
5992
5993(DEFUN
5994    EXPLODE-NONNEGATIVE-INTEGER
5995    (N PRINT-BASE ANS)
5996    (IF (IF (ZP N)
5997            (ZP N)
5998            (NOT (PRINT-BASE-P PRINT-BASE)))
5999        (IF (NULL ANS) '(#\0) ANS)
6000        (EXPLODE-NONNEGATIVE-INTEGER (FLOOR N PRINT-BASE)
6001                                     PRINT-BASE
6002                                     (CONS (DIGIT-TO-CHAR (MOD N PRINT-BASE))
6003                                           ANS))))
6004
6005(DEFUN
6006 EXPLODE-ATOM (X PRINT-BASE)
6007 (IF
6008  (RATIONALP X)
6009  (IF (INTEGERP X)
6010      ((LAMBDA (DIGITS PRINT-BASE)
6011               (IF (EQL '10
6012                        ((LAMBDA (VAR)
6013                                 (IF (INTEGERP VAR)
6014                                     VAR (THE-ERROR 'INTEGER VAR)))
6015                         PRINT-BASE))
6016                   DIGITS
6017                   (CONS '#\#
6018                         (CONS (IF (EQL PRINT-BASE '2)
6019                                   '#\b
6020                                   (IF (EQL PRINT-BASE '8)
6021                                       '#\o
6022                                       (IF (EQL PRINT-BASE '16)
6023                                           '#\x
6024                                           (ILLEGAL 'EXPLODE-ATOM
6025                                                    '"Unexpected base, ~x0"
6026                                                    PRINT-BASE))))
6027                               DIGITS))))
6028       (IF (< X '0)
6029           (CONS '#\-
6030                 (EXPLODE-NONNEGATIVE-INTEGER (UNARY-- X)
6031                                              PRINT-BASE 'NIL))
6032           (EXPLODE-NONNEGATIVE-INTEGER X PRINT-BASE 'NIL))
6033       PRINT-BASE)
6034      (BINARY-APPEND (EXPLODE-ATOM (NUMERATOR X) PRINT-BASE)
6035                     (CONS '#\/
6036                           (EXPLODE-NONNEGATIVE-INTEGER (DENOMINATOR X)
6037                                                        PRINT-BASE 'NIL))))
6038  (IF
6039   (COMPLEX-RATIONALP X)
6040   (CONS
6041    '#\#
6042    (CONS
6043       '#\C
6044       (CONS '#\(
6045             (BINARY-APPEND
6046                  (EXPLODE-ATOM (REALPART X) PRINT-BASE)
6047                  (CONS '#\Space
6048                        (BINARY-APPEND (EXPLODE-ATOM (IMAGPART X) PRINT-BASE)
6049                                       '(#\))))))))
6050   (IF (CHARACTERP X)
6051       (CONS X 'NIL)
6052       (IF (STRINGP X)
6053           (COERCE X 'LIST)
6054           (COERCE (SYMBOL-NAME X) 'LIST))))))
6055
6056(DEFTHM TRUE-LIST-LISTP-FORWARD-TO-TRUE-LISTP-ASSOC-EQ
6057        (IMPLIES (TRUE-LIST-LISTP L)
6058                 (TRUE-LISTP (ASSOC-EQ KEY L))))
6059
6060(DEFTHM TRUE-LISTP-CADR-ASSOC-EQ-FOR-OPEN-CHANNELS-P
6061        (IMPLIES (OPEN-CHANNELS-P ALIST)
6062                 (TRUE-LISTP (CAR (CDR (ASSOC-EQ KEY ALIST))))))
6063
6064(DEFUN OPEN-INPUT-CHANNEL-P1
6065       (CHANNEL TYP STATE-STATE)
6066       ((LAMBDA (PAIR TYP)
6067                (IF PAIR
6068                    (EQ (CAR (CDR (CAR (CDR PAIR)))) TYP)
6069                    'NIL))
6070        (ASSOC-EQ CHANNEL
6071                  (OPEN-INPUT-CHANNELS STATE-STATE))
6072        TYP))
6073
6074(DEFUN OPEN-OUTPUT-CHANNEL-P1
6075       (CHANNEL TYP STATE-STATE)
6076       ((LAMBDA (PAIR TYP)
6077                (IF PAIR
6078                    (EQ (CAR (CDR (CAR (CDR PAIR)))) TYP)
6079                    'NIL))
6080        (ASSOC-EQ CHANNEL
6081                  (OPEN-OUTPUT-CHANNELS STATE-STATE))
6082        TYP))
6083
6084(DEFUN OPEN-INPUT-CHANNEL-P
6085       (CHANNEL TYP STATE-STATE)
6086       (OPEN-INPUT-CHANNEL-P1 CHANNEL TYP STATE-STATE))
6087
6088(DEFUN OPEN-OUTPUT-CHANNEL-P
6089       (CHANNEL TYP STATE-STATE)
6090       (OPEN-OUTPUT-CHANNEL-P1 CHANNEL TYP STATE-STATE))
6091
6092(DEFUN OPEN-OUTPUT-CHANNEL-ANY-P1
6093       (CHANNEL STATE-STATE)
6094       (IF (OPEN-OUTPUT-CHANNEL-P1 CHANNEL ':CHARACTER
6095                                   STATE-STATE)
6096           (OPEN-OUTPUT-CHANNEL-P1 CHANNEL ':CHARACTER
6097                                   STATE-STATE)
6098           (IF (OPEN-OUTPUT-CHANNEL-P1 CHANNEL ':BYTE
6099                                       STATE-STATE)
6100               (OPEN-OUTPUT-CHANNEL-P1 CHANNEL ':BYTE
6101                                       STATE-STATE)
6102               (OPEN-OUTPUT-CHANNEL-P1 CHANNEL ':OBJECT
6103                                       STATE-STATE))))
6104
6105(DEFUN OPEN-OUTPUT-CHANNEL-ANY-P
6106       (CHANNEL STATE-STATE)
6107       (OPEN-OUTPUT-CHANNEL-ANY-P1 CHANNEL STATE-STATE))
6108
6109(DEFUN OPEN-INPUT-CHANNEL-ANY-P1
6110       (CHANNEL STATE-STATE)
6111       (IF (OPEN-INPUT-CHANNEL-P1 CHANNEL ':CHARACTER
6112                                  STATE-STATE)
6113           (OPEN-INPUT-CHANNEL-P1 CHANNEL ':CHARACTER
6114                                  STATE-STATE)
6115           (IF (OPEN-INPUT-CHANNEL-P1 CHANNEL ':BYTE
6116                                      STATE-STATE)
6117               (OPEN-INPUT-CHANNEL-P1 CHANNEL ':BYTE
6118                                      STATE-STATE)
6119               (OPEN-INPUT-CHANNEL-P1 CHANNEL ':OBJECT
6120                                      STATE-STATE))))
6121
6122(DEFUN OPEN-INPUT-CHANNEL-ANY-P
6123       (CHANNEL STATE-STATE)
6124       (OPEN-INPUT-CHANNEL-ANY-P1 CHANNEL STATE-STATE))
6125
6126(DEFUN
6127 SET-PRINT-CASE (CASE STATE)
6128 (PROG2$
6129  (IF
6130   (EQ CASE ':UPCASE)
6131   (EQ CASE ':UPCASE)
6132   (IF
6133    (EQ CASE ':DOWNCASE)
6134    (EQ CASE ':DOWNCASE)
6135    (ILLEGAL
6136     'SET-PRINT-CASE
6137     '"The value ~x0 is illegal as an ACL2 print-base, which ~
6138                        must be :UPCASE or :DOWNCASE."
6139     (CONS (CONS '#\0 CASE) 'NIL))))
6140  (PUT-GLOBAL 'PRINT-CASE CASE STATE)))
6141
6142(DEFUN
6143 CHECK-PRINT-BASE (PRINT-BASE CTX)
6144 (IF
6145  (PRINT-BASE-P PRINT-BASE)
6146  'NIL
6147  (HARD-ERROR
6148   CTX
6149   '"The value ~x0 is illegal as a print-base, which must be 2, ~
6150                 8, 10, or 16"
6151   (CONS (CONS '#\0 PRINT-BASE) 'NIL))))
6152
6153(DEFUN SET-PRINT-BASE (BASE STATE)
6154       (PROG2$ (CHECK-PRINT-BASE BASE 'SET-PRINT-BASE)
6155               (PUT-GLOBAL 'PRINT-BASE BASE STATE)))
6156
6157(DEFUN SET-PRINT-CIRCLE (X STATE) (PUT-GLOBAL 'PRINT-CIRCLE X STATE))
6158
6159(DEFUN SET-PRINT-ESCAPE (X STATE) (PUT-GLOBAL 'PRINT-ESCAPE X STATE))
6160
6161(DEFUN SET-PRINT-PRETTY (X STATE) (PUT-GLOBAL 'PRINT-PRETTY X STATE))
6162
6163(DEFUN SET-PRINT-RADIX (X STATE) (PUT-GLOBAL 'PRINT-RADIX X STATE))
6164
6165(DEFUN SET-PRINT-READABLY (X STATE) (PUT-GLOBAL 'PRINT-READABLY X STATE))
6166
6167(DEFUN
6168 CHECK-NULL-OR-NATP (N FN)
6169 (IF
6170  (NULL N)
6171  (NULL N)
6172  (IF
6173   (NATP N)
6174   (NATP N)
6175   (HARD-ERROR
6176    FN
6177    '"The argument of ~x0 must be ~x1 or a positive integer, but ~
6178                   ~x2 is neither."
6179    (CONS (CONS '#\0 FN)
6180          (CONS (CONS '#\1 'NIL)
6181                (CONS (CONS '#\2 N) 'NIL)))))))
6182
6183(DEFUN SET-PRINT-LENGTH (N STATE)
6184       (PROG2$ (CHECK-NULL-OR-NATP N 'SET-PRINT-LENGTH)
6185               (PUT-GLOBAL 'PRINT-LENGTH N STATE)))
6186
6187(DEFUN SET-PRINT-LEVEL (N STATE)
6188       (PROG2$ (CHECK-NULL-OR-NATP N 'SET-PRINT-LEVEL)
6189               (PUT-GLOBAL 'PRINT-LEVEL N STATE)))
6190
6191(DEFUN SET-PRINT-LINES (N STATE)
6192       (PROG2$ (CHECK-NULL-OR-NATP N 'SET-PRINT-LINES)
6193               (PUT-GLOBAL 'PRINT-LINES N STATE)))
6194
6195(DEFUN SET-PRINT-RIGHT-MARGIN (N STATE)
6196       (PROG2$ (CHECK-NULL-OR-NATP N 'SET-PRINT-RIGHT-MARGIN)
6197               (PUT-GLOBAL 'PRINT-RIGHT-MARGIN
6198                           N STATE)))
6199
6200(DEFUN
6201 PRINC$ (X CHANNEL STATE-STATE)
6202 ((LAMBDA
6203   (ENTRY STATE-STATE X CHANNEL)
6204   (UPDATE-OPEN-OUTPUT-CHANNELS
6205    (ADD-PAIR
6206     CHANNEL
6207     (CONS
6208         (CAR ENTRY)
6209         (REVAPPEND
6210              (IF (IF (SYMBOLP X)
6211                      (EQ (CDR (ASSOC-EQ 'PRINT-CASE
6212                                         (GLOBAL-TABLE STATE-STATE)))
6213                          ':DOWNCASE)
6214                      'NIL)
6215                  (COERCE (STRING-DOWNCASE (SYMBOL-NAME X))
6216                          'LIST)
6217                  (EXPLODE-ATOM X
6218                                (CDR (ASSOC-EQ 'PRINT-BASE
6219                                               (GLOBAL-TABLE STATE-STATE)))))
6220              (CDR ENTRY)))
6221     (OPEN-OUTPUT-CHANNELS STATE-STATE))
6222    STATE-STATE))
6223  (CDR (ASSOC-EQ CHANNEL
6224                 (OPEN-OUTPUT-CHANNELS STATE-STATE)))
6225  STATE-STATE X CHANNEL))
6226
6227(DEFUN WRITE-BYTE$ (X CHANNEL STATE-STATE)
6228       ((LAMBDA (ENTRY STATE-STATE X CHANNEL)
6229                (UPDATE-OPEN-OUTPUT-CHANNELS
6230                     (ADD-PAIR CHANNEL
6231                               (CONS (CAR ENTRY) (CONS X (CDR ENTRY)))
6232                               (OPEN-OUTPUT-CHANNELS STATE-STATE))
6233                     STATE-STATE))
6234        (CDR (ASSOC-EQ CHANNEL
6235                       (OPEN-OUTPUT-CHANNELS STATE-STATE)))
6236        STATE-STATE X CHANNEL))
6237
6238(DEFUN PRINT-OBJECT$ (X CHANNEL STATE-STATE)
6239       ((LAMBDA (ENTRY STATE-STATE X CHANNEL)
6240                (UPDATE-OPEN-OUTPUT-CHANNELS
6241                     (ADD-PAIR CHANNEL
6242                               (CONS (CAR ENTRY) (CONS X (CDR ENTRY)))
6243                               (OPEN-OUTPUT-CHANNELS STATE-STATE))
6244                     STATE-STATE))
6245        (CDR (ASSOC-EQ CHANNEL
6246                       (OPEN-OUTPUT-CHANNELS STATE-STATE)))
6247        STATE-STATE X CHANNEL))
6248
6249(DEFUN MAKE-INPUT-CHANNEL (FILE-NAME CLOCK)
6250       (INTERN-IN-PACKAGE-OF-SYMBOL
6251            (COERCE (BINARY-APPEND (COERCE FILE-NAME 'LIST)
6252                                   (CONS '#\- (EXPLODE-ATOM CLOCK '10)))
6253                    'STRING)
6254            'ACL2-INPUT-CHANNEL::A-RANDOM-SYMBOL-FOR-INTERN))
6255
6256(DEFUN MAKE-OUTPUT-CHANNEL (FILE-NAME CLOCK)
6257       (INTERN-IN-PACKAGE-OF-SYMBOL
6258            (COERCE (BINARY-APPEND (COERCE FILE-NAME 'LIST)
6259                                   (CONS '#\- (EXPLODE-ATOM CLOCK '10)))
6260                    'STRING)
6261            'ACL2-OUTPUT-CHANNEL::A-RANDOM-SYMBOL-FOR-INTERN))
6262
6263(DEFUN
6264 OPEN-INPUT-CHANNEL
6265 (FILE-NAME TYP STATE-STATE)
6266 ((LAMBDA
6267   (STATE-STATE TYP FILE-NAME)
6268   ((LAMBDA
6269     (PAIR TYP STATE-STATE FILE-NAME)
6270     (IF
6271      PAIR
6272      ((LAMBDA
6273        (CHANNEL PAIR STATE-STATE FILE-NAME TYP)
6274        (CONS
6275         CHANNEL
6276         (CONS
6277          (UPDATE-OPEN-INPUT-CHANNELS
6278           (ADD-PAIR
6279              CHANNEL
6280              (CONS (CONS ':HEADER
6281                          (CONS TYP
6282                                (CONS FILE-NAME
6283                                      (CONS (FILE-CLOCK STATE-STATE) 'NIL))))
6284                    (CDR PAIR))
6285              (OPEN-INPUT-CHANNELS STATE-STATE))
6286           STATE-STATE)
6287          'NIL)))
6288       (MAKE-INPUT-CHANNEL FILE-NAME (FILE-CLOCK STATE-STATE))
6289       PAIR STATE-STATE FILE-NAME TYP)
6290      (CONS 'NIL (CONS STATE-STATE 'NIL))))
6291    (ASSOC-EQUAL (CONS FILE-NAME
6292                       (CONS TYP
6293                             (CONS (FILE-CLOCK STATE-STATE) 'NIL)))
6294                 (READABLE-FILES STATE-STATE))
6295    TYP STATE-STATE FILE-NAME))
6296  (UPDATE-FILE-CLOCK (BINARY-+ '1 (FILE-CLOCK STATE-STATE))
6297                     STATE-STATE)
6298  TYP FILE-NAME))
6299
6300(DEFTHM NTH-UPDATE-NTH
6301        (EQUAL (NTH M (UPDATE-NTH N VAL L))
6302               (IF (EQUAL (NFIX M) (NFIX N))
6303                   VAL (NTH M L))))
6304
6305(DEFTHM TRUE-LISTP-UPDATE-NTH
6306        (IMPLIES (TRUE-LISTP L)
6307                 (TRUE-LISTP (UPDATE-NTH KEY VAL L))))
6308
6309(DEFTHM NTH-UPDATE-NTH-ARRAY
6310        (EQUAL (NTH M (UPDATE-NTH-ARRAY N I VAL L))
6311               (IF (EQUAL (NFIX M) (NFIX N))
6312                   (UPDATE-NTH I VAL (NTH M L))
6313                   (NTH M L))))
6314
6315(DEFUN
6316 CLOSE-INPUT-CHANNEL
6317 (CHANNEL STATE-STATE)
6318 ((LAMBDA
6319   (STATE-STATE CHANNEL)
6320   ((LAMBDA
6321        (HEADER-ENTRIES CHANNEL STATE-STATE)
6322        ((LAMBDA (STATE-STATE CHANNEL)
6323                 ((LAMBDA (STATE-STATE) STATE-STATE)
6324                  (UPDATE-OPEN-INPUT-CHANNELS
6325                       (DELETE-PAIR CHANNEL
6326                                    (OPEN-INPUT-CHANNELS STATE-STATE))
6327                       STATE-STATE)))
6328         (UPDATE-READ-FILES
6329              (CONS (CONS (CAR (CDR HEADER-ENTRIES))
6330                          (CONS (CAR HEADER-ENTRIES)
6331                                (CONS (CAR (CDR (CDR HEADER-ENTRIES)))
6332                                      (CONS (FILE-CLOCK STATE-STATE) 'NIL))))
6333                    (READ-FILES STATE-STATE))
6334              STATE-STATE)
6335         CHANNEL))
6336    (CDR (CAR (CDR (ASSOC-EQ CHANNEL
6337                             (OPEN-INPUT-CHANNELS STATE-STATE)))))
6338    CHANNEL STATE-STATE))
6339  (UPDATE-FILE-CLOCK (BINARY-+ '1 (FILE-CLOCK STATE-STATE))
6340                     STATE-STATE)
6341  CHANNEL))
6342
6343(DEFUN
6344 OPEN-OUTPUT-CHANNEL
6345 (FILE-NAME TYP STATE-STATE)
6346 ((LAMBDA
6347   (STATE-STATE TYP FILE-NAME)
6348   (IF
6349    (MEMBER-EQUAL (CONS FILE-NAME
6350                        (CONS TYP
6351                              (CONS (FILE-CLOCK STATE-STATE) 'NIL)))
6352                  (WRITEABLE-FILES STATE-STATE))
6353    ((LAMBDA
6354      (CHANNEL STATE-STATE FILE-NAME TYP)
6355      (CONS
6356       CHANNEL
6357       (CONS
6358        (UPDATE-OPEN-OUTPUT-CHANNELS
6359         (ADD-PAIR
6360              CHANNEL
6361              (CONS (CONS ':HEADER
6362                          (CONS TYP
6363                                (CONS FILE-NAME
6364                                      (CONS (FILE-CLOCK STATE-STATE) 'NIL))))
6365                    'NIL)
6366              (OPEN-OUTPUT-CHANNELS STATE-STATE))
6367         STATE-STATE)
6368        'NIL)))
6369     (MAKE-OUTPUT-CHANNEL FILE-NAME (FILE-CLOCK STATE-STATE))
6370     STATE-STATE FILE-NAME TYP)
6371    (CONS 'NIL (CONS STATE-STATE 'NIL))))
6372  (UPDATE-FILE-CLOCK (BINARY-+ '1 (FILE-CLOCK STATE-STATE))
6373                     STATE-STATE)
6374  TYP FILE-NAME))
6375
6376(DEFUN
6377 OPEN-OUTPUT-CHANNEL!
6378 (FILE-NAME TYP STATE)
6379 ((LAMBDA (MV)
6380          ((LAMBDA (ERP CHAN STATE)
6381                   (CONS CHAN (CONS STATE 'NIL)))
6382           (HIDE (MV-NTH '0 MV))
6383           (MV-NTH '1 MV)
6384           (MV-NTH '2 MV)))
6385  ((LAMBDA
6386    (STATE-GLOBAL-LET*-CLEANUP-LST FILE-NAME TYP STATE)
6387    ((LAMBDA
6388      (MV STATE-GLOBAL-LET*-CLEANUP-LST)
6389      ((LAMBDA (ACL2-UNWIND-PROTECT-ERP ACL2-UNWIND-PROTECT-VAL
6390                                        STATE STATE-GLOBAL-LET*-CLEANUP-LST)
6391               (IF ACL2-UNWIND-PROTECT-ERP
6392                   ((LAMBDA (STATE ACL2-UNWIND-PROTECT-VAL
6393                                   ACL2-UNWIND-PROTECT-ERP)
6394                            (CONS ACL2-UNWIND-PROTECT-ERP
6395                                  (CONS ACL2-UNWIND-PROTECT-VAL
6396                                        (CONS STATE 'NIL))))
6397                    ((LAMBDA (STATE) STATE)
6398                     (PUT-GLOBAL 'WRITES-OKP
6399                                 (CAR (NTH '0 STATE-GLOBAL-LET*-CLEANUP-LST))
6400                                 STATE))
6401                    ACL2-UNWIND-PROTECT-VAL
6402                    ACL2-UNWIND-PROTECT-ERP)
6403                   ((LAMBDA (STATE ACL2-UNWIND-PROTECT-VAL
6404                                   ACL2-UNWIND-PROTECT-ERP)
6405                            (CONS ACL2-UNWIND-PROTECT-ERP
6406                                  (CONS ACL2-UNWIND-PROTECT-VAL
6407                                        (CONS STATE 'NIL))))
6408                    ((LAMBDA (STATE) STATE)
6409                     (PUT-GLOBAL 'WRITES-OKP
6410                                 (CAR (NTH '0 STATE-GLOBAL-LET*-CLEANUP-LST))
6411                                 STATE))
6412                    ACL2-UNWIND-PROTECT-VAL
6413                    ACL2-UNWIND-PROTECT-ERP)))
6414       (MV-NTH '0 MV)
6415       (MV-NTH '1 MV)
6416       (MV-NTH '2 MV)
6417       STATE-GLOBAL-LET*-CLEANUP-LST))
6418     ((LAMBDA (STATE TYP FILE-NAME)
6419              ((LAMBDA (MV)
6420                       ((LAMBDA (CHAN STATE)
6421                                (CONS 'NIL
6422                                      (CONS CHAN (CONS STATE 'NIL))))
6423                        (MV-NTH '0 MV)
6424                        (MV-NTH '1 MV)))
6425               (OPEN-OUTPUT-CHANNEL FILE-NAME TYP STATE)))
6426      (PUT-GLOBAL 'WRITES-OKP 'T STATE)
6427      TYP FILE-NAME)
6428     STATE-GLOBAL-LET*-CLEANUP-LST))
6429   (CONS (CONS (GET-GLOBAL 'WRITES-OKP STATE)
6430               'NIL)
6431         'NIL)
6432   FILE-NAME TYP STATE)))
6433
6434(DEFUN
6435 CLOSE-OUTPUT-CHANNEL
6436 (CHANNEL STATE-STATE)
6437 ((LAMBDA
6438   (STATE-STATE CHANNEL)
6439   ((LAMBDA
6440     (PAIR STATE-STATE CHANNEL)
6441     ((LAMBDA
6442       (HEADER-ENTRIES CHANNEL PAIR STATE-STATE)
6443       ((LAMBDA (STATE-STATE CHANNEL)
6444                ((LAMBDA (STATE-STATE) STATE-STATE)
6445                 (UPDATE-OPEN-OUTPUT-CHANNELS
6446                      (DELETE-PAIR CHANNEL
6447                                   (OPEN-OUTPUT-CHANNELS STATE-STATE))
6448                      STATE-STATE)))
6449        (UPDATE-WRITTEN-FILES
6450         (CONS
6451              (CONS (CONS (CAR (CDR HEADER-ENTRIES))
6452                          (CONS (CAR HEADER-ENTRIES)
6453                                (CONS (CAR (CDR (CDR HEADER-ENTRIES)))
6454                                      (CONS (FILE-CLOCK STATE-STATE) 'NIL))))
6455                    (CDR (CDR PAIR)))
6456              (WRITTEN-FILES STATE-STATE))
6457         STATE-STATE)
6458        CHANNEL))
6459      (CDR (CAR (CDR PAIR)))
6460      CHANNEL PAIR STATE-STATE))
6461    (ASSOC-EQ CHANNEL
6462              (OPEN-OUTPUT-CHANNELS STATE-STATE))
6463    STATE-STATE CHANNEL))
6464  (UPDATE-FILE-CLOCK (BINARY-+ '1 (FILE-CLOCK STATE-STATE))
6465                     STATE-STATE)
6466  CHANNEL))
6467
6468(DEFUN
6469     READ-CHAR$ (CHANNEL STATE-STATE)
6470     ((LAMBDA (ENTRY STATE-STATE CHANNEL)
6471              (CONS (CAR (CDR ENTRY))
6472                    (CONS (UPDATE-OPEN-INPUT-CHANNELS
6473                               (ADD-PAIR CHANNEL
6474                                         (CONS (CAR ENTRY) (CDR (CDR ENTRY)))
6475                                         (OPEN-INPUT-CHANNELS STATE-STATE))
6476                               STATE-STATE)
6477                          'NIL)))
6478      (CDR (ASSOC-EQ CHANNEL
6479                     (OPEN-INPUT-CHANNELS STATE-STATE)))
6480      STATE-STATE CHANNEL))
6481
6482(DEFUN PEEK-CHAR$ (CHANNEL STATE-STATE)
6483       ((LAMBDA (ENTRY) (CAR (CDR ENTRY)))
6484        (CDR (ASSOC-EQ CHANNEL
6485                       (OPEN-INPUT-CHANNELS STATE-STATE)))))
6486
6487(DEFUN
6488     READ-BYTE$ (CHANNEL STATE-STATE)
6489     ((LAMBDA (ENTRY STATE-STATE CHANNEL)
6490              (CONS (CAR (CDR ENTRY))
6491                    (CONS (UPDATE-OPEN-INPUT-CHANNELS
6492                               (ADD-PAIR CHANNEL
6493                                         (CONS (CAR ENTRY) (CDR (CDR ENTRY)))
6494                                         (OPEN-INPUT-CHANNELS STATE-STATE))
6495                               STATE-STATE)
6496                          'NIL)))
6497      (CDR (ASSOC-EQ CHANNEL
6498                     (OPEN-INPUT-CHANNELS STATE-STATE)))
6499      STATE-STATE CHANNEL))
6500
6501(DEFUN
6502 READ-OBJECT (CHANNEL STATE-STATE)
6503 ((LAMBDA
6504    (ENTRY STATE-STATE CHANNEL)
6505    (IF (CDR ENTRY)
6506        (CONS 'NIL
6507              (CONS (CAR (CDR ENTRY))
6508                    (CONS (UPDATE-OPEN-INPUT-CHANNELS
6509                               (ADD-PAIR CHANNEL
6510                                         (CONS (CAR ENTRY) (CDR (CDR ENTRY)))
6511                                         (OPEN-INPUT-CHANNELS STATE-STATE))
6512                               STATE-STATE)
6513                          'NIL)))
6514        (CONS 'T
6515              (CONS 'NIL (CONS STATE-STATE 'NIL)))))
6516  (CDR (ASSOC-EQ CHANNEL
6517                 (OPEN-INPUT-CHANNELS STATE-STATE)))
6518  STATE-STATE CHANNEL))
6519
6520(DEFUN SOME-SLASHABLE (L)
6521       (IF (ENDP L)
6522           'NIL
6523           (IF (MEMBER (CAR L)
6524                       '(#\Newline #\Page
6525                                   #\Space #\" #\# #\' #\( #\) #\, #\: #\;
6526                                   #\\ #\` #\a #\b #\c #\d #\e #\f #\g #\h
6527                                   #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r
6528                                   #\s #\t #\u #\v #\w #\x #\y #\z #\|))
6529               'T
6530               (SOME-SLASHABLE (CDR L)))))
6531
6532(DEFUN PRIN1-WITH-SLASHES1
6533       (L SLASH-CHAR CHANNEL STATE)
6534       (IF (ENDP L)
6535           STATE
6536           ((LAMBDA (STATE SLASH-CHAR CHANNEL L)
6537                    ((LAMBDA (STATE CHANNEL SLASH-CHAR L)
6538                             (PRIN1-WITH-SLASHES1 (CDR L)
6539                                                  SLASH-CHAR CHANNEL STATE))
6540                     (PRINC$ (CAR L) CHANNEL STATE)
6541                     CHANNEL SLASH-CHAR L))
6542            (IF (IF (EQUAL (CAR L) '#\\)
6543                    (EQUAL (CAR L) '#\\)
6544                    (EQUAL (CAR L) SLASH-CHAR))
6545                (PRINC$ '#\\ CHANNEL STATE)
6546                STATE)
6547            SLASH-CHAR CHANNEL L)))
6548
6549(DEFUN PRIN1-WITH-SLASHES
6550       (S SLASH-CHAR CHANNEL STATE)
6551       (PRIN1-WITH-SLASHES1 (COERCE S 'LIST)
6552                            SLASH-CHAR CHANNEL STATE))
6553
6554(DEFUN MAY-NEED-SLASHES1 (LST FLG POTNUM-CHARS)
6555       (IF (ENDP LST)
6556           'T
6557           (IF (MEMBER (CAR LST) POTNUM-CHARS)
6558               (MAY-NEED-SLASHES1 (CDR LST)
6559                                  'NIL
6560                                  POTNUM-CHARS)
6561               (IF (MEMBER (CAR LST)
6562                           '(#\A #\B #\C
6563                                 #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M
6564                                 #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W
6565                                 #\X #\Y #\Z #\a #\b #\c #\d #\e #\f #\g
6566                                 #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q
6567                                 #\r #\s #\t #\u #\v #\w #\x #\y #\z))
6568                   (IF FLG 'NIL
6569                       (MAY-NEED-SLASHES1 (CDR LST)
6570                                          'T
6571                                          POTNUM-CHARS))
6572                   'NIL))))
6573
6574(DEFUN
6575 MAY-NEED-SLASHES-FN (X PRINT-BASE)
6576 ((LAMBDA
6577   (L PRINT-BASE)
6578   ((LAMBDA
6579     (PRINT-BASE L)
6580     ((LAMBDA
6581       (NUMERIC-CHARS L PRINT-BASE)
6582       ((LAMBDA
6583         (SUSPICIOUSLY-FIRST-NUMERIC-CHARS NUMERIC-CHARS L)
6584         (IF
6585          (NULL L)
6586          (NULL L)
6587          (IF
6588           (IF
6589              (IF (MEMBER (CAR L) NUMERIC-CHARS)
6590                  (MEMBER (CAR L) NUMERIC-CHARS)
6591                  (IF (MEMBER (CAR L)
6592                              SUSPICIOUSLY-FIRST-NUMERIC-CHARS)
6593                      (INTERSECTP (CDR L) NUMERIC-CHARS)
6594                      'NIL))
6595              (IF (NOT (MEMBER (CAR (LAST L)) '(#\+ #\-)))
6596                  (MAY-NEED-SLASHES1 (CDR L)
6597                                     'NIL
6598                                     (CONS '#\/
6599                                           SUSPICIOUSLY-FIRST-NUMERIC-CHARS))
6600                  'NIL)
6601              'NIL)
6602           (IF
6603              (IF (MEMBER (CAR L) NUMERIC-CHARS)
6604                  (MEMBER (CAR L) NUMERIC-CHARS)
6605                  (IF (MEMBER (CAR L)
6606                              SUSPICIOUSLY-FIRST-NUMERIC-CHARS)
6607                      (INTERSECTP (CDR L) NUMERIC-CHARS)
6608                      'NIL))
6609              (IF (NOT (MEMBER (CAR (LAST L)) '(#\+ #\-)))
6610                  (MAY-NEED-SLASHES1 (CDR L)
6611                                     'NIL
6612                                     (CONS '#\/
6613                                           SUSPICIOUSLY-FIRST-NUMERIC-CHARS))
6614                  'NIL)
6615              'NIL)
6616           (SOME-SLASHABLE L))))
6617        (IF (EQL PRINT-BASE '16)
6618            '(#\0 #\1 #\2 #\3 #\4 #\5 #\6
6619                  #\7 #\8 #\9 #\A #\B #\C #\D #\E #\F #\a
6620                  #\b #\c #\d #\e #\f #\+ #\- #\. #\^ #\_)
6621            '(#\0 #\1 #\2 #\3 #\4 #\5
6622                  #\6 #\7 #\8 #\9 #\+ #\- #\. #\^ #\_))
6623        NUMERIC-CHARS L))
6624      (IF (EQL PRINT-BASE '16)
6625          '(#\0 #\1
6626                #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9 #\A #\B
6627                #\C #\D #\E #\F #\a #\b #\c #\d #\e #\f)
6628          '(#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9))
6629      L PRINT-BASE))
6630    (IF (IF (EQL PRINT-BASE '16)
6631            (MEMBER '#\. L)
6632            'NIL)
6633        '10
6634        PRINT-BASE)
6635    L))
6636  (COERCE X 'LIST)
6637  PRINT-BASE))
6638
6639(DEFUN NEEDS-SLASHES (X STATE)
6640       (IF (IF (GET-GLOBAL 'PRINT-ESCAPE STATE)
6641               (GET-GLOBAL 'PRINT-ESCAPE STATE)
6642               (GET-GLOBAL 'PRINT-READABLY STATE))
6643           (MAY-NEED-SLASHES-FN X (GET-GLOBAL 'PRINT-BASE STATE))
6644           'NIL))
6645
6646(DEFUN T-STACK-LENGTH1 (STATE-STATE) (LENGTH (T-STACK STATE-STATE)))
6647
6648(DEFUN T-STACK-LENGTH (STATE-STATE) (T-STACK-LENGTH1 STATE-STATE))
6649
6650(DEFUN MAKE-LIST-AC (N VAL AC)
6651       (IF (ZP N)
6652           AC
6653           (MAKE-LIST-AC (BINARY-+ '-1 N)
6654                         VAL (CONS VAL AC))))
6655
6656(DEFUN EXTEND-T-STACK (N VAL STATE-STATE)
6657       (UPDATE-T-STACK (BINARY-APPEND (T-STACK STATE-STATE)
6658                                      (MAKE-LIST-AC N VAL 'NIL))
6659                       STATE-STATE))
6660
6661(DEFUN SUBSEQ-LIST (LST START END)
6662       (TAKE (BINARY-+ END (UNARY-- START))
6663             (NTHCDR START LST)))
6664
6665(DEFUN SUBSEQ (SEQ START END)
6666       (IF (STRINGP SEQ)
6667           (COERCE (SUBSEQ-LIST (COERCE SEQ 'LIST)
6668                                START (IF END END (LENGTH SEQ)))
6669                   'STRING)
6670           (SUBSEQ-LIST SEQ START (IF END END (LENGTH SEQ)))))
6671
6672(DEFUN OS (WRLD) (GLOBAL-VAL 'OPERATING-SYSTEM WRLD))
6673
6674(DEFTHM ALL-BOUNDP-PRESERVES-ASSOC
6675        (IMPLIES (IF (EQLABLE-ALISTP TBL1)
6676                     (IF (EQLABLE-ALISTP TBL2)
6677                         (IF (ALL-BOUNDP TBL1 TBL2)
6678                             (IF (SYMBOLP X) (ASSOC-EQ X TBL1) 'NIL)
6679                             'NIL)
6680                         'NIL)
6681                     'NIL)
6682                 (ASSOC X TBL2)))
6683
6684(DEFUN W (STATE) (GET-GLOBAL 'CURRENT-ACL2-WORLD STATE))
6685
6686(DEFUN
6687    SHRINK-T-STACK (N STATE-STATE)
6688    (UPDATE-T-STACK (FIRST-N-AC (MAX '0
6689                                     (BINARY-+ (LENGTH (T-STACK STATE-STATE))
6690                                               (UNARY-- N)))
6691                                (T-STACK STATE-STATE)
6692                                'NIL)
6693                    STATE-STATE))
6694
6695(DEFUN AREF-T-STACK (I STATE-STATE) (NTH I (T-STACK STATE-STATE)))
6696
6697(DEFUN ASET-T-STACK (I VAL STATE-STATE)
6698       (UPDATE-T-STACK (UPDATE-NTH I VAL (T-STACK STATE-STATE))
6699                       STATE-STATE))
6700
6701(DEFUN 32-BIT-INTEGER-STACK-LENGTH1
6702       (STATE-STATE)
6703       (LENGTH (32-BIT-INTEGER-STACK STATE-STATE)))
6704
6705(DEFUN 32-BIT-INTEGER-STACK-LENGTH
6706       (STATE-STATE)
6707       (32-BIT-INTEGER-STACK-LENGTH1 STATE-STATE))
6708
6709(DEFUN EXTEND-32-BIT-INTEGER-STACK
6710       (N VAL STATE-STATE)
6711       (UPDATE-32-BIT-INTEGER-STACK
6712            (BINARY-APPEND (32-BIT-INTEGER-STACK STATE-STATE)
6713                           (MAKE-LIST-AC N VAL 'NIL))
6714            STATE-STATE))
6715
6716(DEFUN
6717  SHRINK-32-BIT-INTEGER-STACK
6718  (N STATE-STATE)
6719  (UPDATE-32-BIT-INTEGER-STACK
6720       (FIRST-N-AC (MAX '0
6721                        (BINARY-+ (LENGTH (32-BIT-INTEGER-STACK STATE-STATE))
6722                                  (UNARY-- N)))
6723                   (32-BIT-INTEGER-STACK STATE-STATE)
6724                   'NIL)
6725       STATE-STATE))
6726
6727(DEFUN AREF-32-BIT-INTEGER-STACK
6728       (I STATE-STATE)
6729       (NTH I (32-BIT-INTEGER-STACK STATE-STATE)))
6730
6731(DEFUN ASET-32-BIT-INTEGER-STACK
6732       (I VAL STATE-STATE)
6733       (UPDATE-32-BIT-INTEGER-STACK
6734            (UPDATE-NTH I
6735                        VAL (32-BIT-INTEGER-STACK STATE-STATE))
6736            STATE-STATE))
6737
6738(DEFUN BIG-CLOCK-NEGATIVE-P (STATE-STATE)
6739       (< (BIG-CLOCK-ENTRY STATE-STATE) '0))
6740
6741(DEFUN DECREMENT-BIG-CLOCK (STATE-STATE)
6742       (UPDATE-BIG-CLOCK-ENTRY (BINARY-+ '-1
6743                                         (BIG-CLOCK-ENTRY STATE-STATE))
6744                               STATE-STATE))
6745
6746(DEFUN LIST-ALL-PACKAGE-NAMES (STATE-STATE)
6747       (CONS (CAR (LIST-ALL-PACKAGE-NAMES-LST STATE-STATE))
6748             (CONS (UPDATE-LIST-ALL-PACKAGE-NAMES-LST
6749                        (CDR (LIST-ALL-PACKAGE-NAMES-LST STATE-STATE))
6750                        STATE-STATE)
6751                   'NIL)))
6752
6753(DEFUN USER-STOBJ-ALIST (STATE-STATE) (USER-STOBJ-ALIST1 STATE-STATE))
6754
6755(DEFUN UPDATE-USER-STOBJ-ALIST (X STATE-STATE)
6756       (UPDATE-USER-STOBJ-ALIST1 X STATE-STATE))
6757
6758(DEFUN POWER-EVAL (L B)
6759       (IF (ENDP L)
6760           '0
6761           (BINARY-+ (CAR L)
6762                     (BINARY-* B (POWER-EVAL (CDR L) B)))))
6763
6764(DEFUN READ-IDATE (STATE-STATE)
6765       (CONS (IF (NULL (IDATES STATE-STATE))
6766                 '0
6767                 (CAR (IDATES STATE-STATE)))
6768             (CONS (UPDATE-IDATES (CDR (IDATES STATE-STATE))
6769                                  STATE-STATE)
6770                   'NIL)))
6771
6772(DEFUN READ-RUN-TIME (STATE-STATE)
6773       (CONS (IF (IF (NULL (ACL2-ORACLE STATE-STATE))
6774                     (NULL (ACL2-ORACLE STATE-STATE))
6775                     (NOT (RATIONALP (CAR (ACL2-ORACLE STATE-STATE)))))
6776                 '0
6777                 (CAR (ACL2-ORACLE STATE-STATE)))
6778             (CONS (UPDATE-ACL2-ORACLE (CDR (ACL2-ORACLE STATE-STATE))
6779                                       STATE-STATE)
6780                   'NIL)))
6781
6782(DEFUN READ-ACL2-ORACLE (STATE-STATE)
6783       (CONS (NULL (ACL2-ORACLE STATE-STATE))
6784             (CONS (CAR (ACL2-ORACLE STATE-STATE))
6785                   (CONS (UPDATE-ACL2-ORACLE (CDR (ACL2-ORACLE STATE-STATE))
6786                                             STATE-STATE)
6787                         'NIL))))
6788
6789(DEFUN GETENV$ (STR STATE) (READ-ACL2-ORACLE STATE))
6790
6791(DEFUN SETENV$ (STR VAL) 'NIL)
6792
6793(DEFUN RANDOM$ (LIMIT STATE)
6794       ((LAMBDA (MV LIMIT)
6795                ((LAMBDA (ERP VAL STATE LIMIT)
6796                         (CONS (IF (IF (NULL ERP)
6797                                       (IF (NATP VAL) (< VAL LIMIT) 'NIL)
6798                                       'NIL)
6799                                   VAL '0)
6800                               (CONS STATE 'NIL)))
6801                 (MV-NTH '0 MV)
6802                 (MV-NTH '1 MV)
6803                 (MV-NTH '2 MV)
6804                 LIMIT))
6805        (READ-ACL2-ORACLE STATE)
6806        LIMIT))
6807
6808(DEFTHM NATP-RANDOM$ (NATP (CAR (RANDOM$ N STATE))))
6809
6810(DEFTHM RANDOM$-LINEAR
6811        (IF (NOT (< (CAR (RANDOM$ N STATE)) '0))
6812            (IMPLIES (POSP N)
6813                     (< (CAR (RANDOM$ N STATE)) N))
6814            'NIL))
6815
6816(DEFTHM LEN-UPDATE-NTH
6817        (EQUAL (LEN (UPDATE-NTH N VAL X))
6818               (MAX (BINARY-+ '1 (NFIX N)) (LEN X))))
6819
6820(DEFTHM UPDATE-ACL2-ORACLE-PRESERVES-STATE-P1
6821        (IMPLIES (IF (STATE-P1 STATE)
6822                     (TRUE-LISTP X)
6823                     'NIL)
6824                 (STATE-P1 (UPDATE-ACL2-ORACLE X STATE))))
6825
6826(DEFTHM READ-RUN-TIME-PRESERVES-STATE-P1
6827        (IMPLIES (STATE-P1 STATE)
6828                 (STATE-P1 (NTH '1 (READ-RUN-TIME STATE)))))
6829
6830(DEFTHM READ-ACL2-ORACLE-PRESERVES-STATE-P1
6831        (IMPLIES (STATE-P1 STATE)
6832                 (STATE-P1 (NTH '2 (READ-ACL2-ORACLE STATE)))))
6833
6834(DEFTHM NTH-0-READ-RUN-TIME-TYPE-PRESCRIPTION
6835        (IMPLIES (STATE-P1 STATE)
6836                 (RATIONALP (NTH '0 (READ-RUN-TIME STATE)))))
6837
6838(DEFUN
6839 MAIN-TIMER (STATE)
6840 ((LAMBDA
6841    (MV)
6842    ((LAMBDA
6843          (CURRENT-TIME STATE)
6844          ((LAMBDA (OLD-VALUE STATE CURRENT-TIME)
6845                   ((LAMBDA (STATE OLD-VALUE CURRENT-TIME)
6846                            (CONS (BINARY-+ CURRENT-TIME (UNARY-- OLD-VALUE))
6847                                  (CONS STATE 'NIL)))
6848                    (PUT-GLOBAL 'MAIN-TIMER
6849                                CURRENT-TIME STATE)
6850                    OLD-VALUE CURRENT-TIME))
6851           (IF (IF (BOUNDP-GLOBAL 'MAIN-TIMER STATE)
6852                   (RATIONALP (GET-GLOBAL 'MAIN-TIMER STATE))
6853                   'NIL)
6854               (GET-GLOBAL 'MAIN-TIMER STATE)
6855               '0)
6856           STATE CURRENT-TIME))
6857     (MV-NTH '0 MV)
6858     (MV-NTH '1 MV)))
6859  (READ-RUN-TIME STATE)))
6860
6861(DEFUN PUT-ASSOC-EQ (NAME VAL ALIST)
6862       (IF (ENDP ALIST)
6863           (CONS (CONS NAME VAL) 'NIL)
6864           (IF (EQ NAME (CAR (CAR ALIST)))
6865               (CONS (CONS NAME VAL) (CDR ALIST))
6866               (CONS (CAR ALIST)
6867                     (PUT-ASSOC-EQ NAME VAL (CDR ALIST))))))
6868
6869(DEFUN PUT-ASSOC-EQL (NAME VAL ALIST)
6870       (IF (ENDP ALIST)
6871           (CONS (CONS NAME VAL) 'NIL)
6872           (IF (EQL NAME (CAR (CAR ALIST)))
6873               (CONS (CONS NAME VAL) (CDR ALIST))
6874               (CONS (CAR ALIST)
6875                     (PUT-ASSOC-EQL NAME VAL (CDR ALIST))))))
6876
6877(DEFUN PUT-ASSOC-EQUAL (NAME VAL ALIST)
6878       (IF (ENDP ALIST)
6879           (CONS (CONS NAME VAL) 'NIL)
6880           (IF (EQUAL NAME (CAR (CAR ALIST)))
6881               (CONS (CONS NAME VAL) (CDR ALIST))
6882               (CONS (CAR ALIST)
6883                     (PUT-ASSOC-EQUAL NAME VAL (CDR ALIST))))))
6884
6885(DEFUN SET-TIMER (NAME VAL STATE)
6886       (PUT-GLOBAL 'TIMER-ALIST
6887                   (PUT-ASSOC-EQ NAME
6888                                 VAL (GET-GLOBAL 'TIMER-ALIST STATE))
6889                   STATE))
6890
6891(DEFUN GET-TIMER (NAME STATE)
6892       (CDR (ASSOC-EQ NAME (GET-GLOBAL 'TIMER-ALIST STATE))))
6893
6894(DEFUN PUSH-TIMER (NAME VAL STATE)
6895       (SET-TIMER NAME (CONS VAL (GET-TIMER NAME STATE))
6896                  STATE))
6897
6898(DEFTHM RATIONALP-+
6899        (IMPLIES (IF (RATIONALP X) (RATIONALP Y) 'NIL)
6900                 (RATIONALP (BINARY-+ X Y))))
6901
6902(DEFTHM RATIONALP-*
6903        (IMPLIES (IF (RATIONALP X) (RATIONALP Y) 'NIL)
6904                 (RATIONALP (BINARY-* X Y))))
6905
6906(DEFTHM RATIONALP-UNARY-- (IMPLIES (RATIONALP X) (RATIONALP (UNARY-- X))))
6907
6908(DEFTHM RATIONALP-UNARY-/ (IMPLIES (RATIONALP X) (RATIONALP (UNARY-/ X))))
6909
6910(DEFTHM RATIONALP-IMPLIES-ACL2-NUMBERP
6911        (IMPLIES (RATIONALP X)
6912                 (ACL2-NUMBERP X)))
6913
6914(DEFUN POP-TIMER (NAME FLG STATE)
6915       ((LAMBDA (TIMER STATE FLG NAME)
6916                (SET-TIMER NAME
6917                           (IF FLG
6918                               (CONS (BINARY-+ (CAR TIMER) (CAR (CDR TIMER)))
6919                                     (CDR (CDR TIMER)))
6920                               (CDR TIMER))
6921                           STATE))
6922        (GET-TIMER NAME STATE)
6923        STATE FLG NAME))
6924
6925(DEFUN ADD-TIMERS (NAME1 NAME2 STATE)
6926       ((LAMBDA (TIMER1 TIMER2 STATE NAME1)
6927                (SET-TIMER NAME1
6928                           (CONS (BINARY-+ (CAR TIMER1) (CAR TIMER2))
6929                                 (CDR TIMER1))
6930                           STATE))
6931        (GET-TIMER NAME1 STATE)
6932        (GET-TIMER NAME2 STATE)
6933        STATE NAME1))
6934
6935(DEFTHM NTH-0-CONS (EQUAL (NTH '0 (CONS A L)) A))
6936
6937(DEFTHM NTH-ADD1
6938        (IMPLIES (IF (INTEGERP N) (NOT (< N '0)) 'NIL)
6939                 (EQUAL (NTH (BINARY-+ '1 N) (CONS A L))
6940                        (NTH N L))))
6941
6942(DEFTHM MAIN-TIMER-TYPE-PRESCRIPTION
6943        (IMPLIES (STATE-P1 STATE)
6944                 (IF (CONSP (MAIN-TIMER STATE))
6945                     (TRUE-LISTP (MAIN-TIMER STATE))
6946                     'NIL)))
6947
6948(DEFTHM ORDERED-SYMBOL-ALISTP-ADD-PAIR-FORWARD
6949        (IMPLIES (IF (SYMBOLP KEY)
6950                     (ORDERED-SYMBOL-ALISTP L)
6951                     'NIL)
6952                 (ORDERED-SYMBOL-ALISTP (ADD-PAIR KEY VALUE L))))
6953
6954(DEFTHM ASSOC-ADD-PAIR
6955        (IMPLIES (IF (SYMBOLP SYM2)
6956                     (ORDERED-SYMBOL-ALISTP ALIST)
6957                     'NIL)
6958                 (EQUAL (ASSOC SYM1 (ADD-PAIR SYM2 VAL ALIST))
6959                        (IF (EQUAL SYM1 SYM2)
6960                            (CONS SYM1 VAL)
6961                            (ASSOC SYM1 ALIST)))))
6962
6963(DEFTHM ADD-PAIR-PRESERVES-ALL-BOUNDP
6964        (IMPLIES (IF (EQLABLE-ALISTP ALIST1)
6965                     (IF (ORDERED-SYMBOL-ALISTP ALIST2)
6966                         (IF (ALL-BOUNDP ALIST1 ALIST2)
6967                             (SYMBOLP SYM)
6968                             'NIL)
6969                         'NIL)
6970                     'NIL)
6971                 (ALL-BOUNDP ALIST1 (ADD-PAIR SYM VAL ALIST2))))
6972
6973(DEFTHM STATE-P1-UPDATE-MAIN-TIMER
6974        (IMPLIES (STATE-P1 STATE)
6975                 (STATE-P1 (UPDATE-NTH '2
6976                                       (ADD-PAIR 'MAIN-TIMER
6977                                                 VAL (NTH '2 STATE))
6978                                       STATE))))
6979
6980(DEFUN
6981   INCREMENT-TIMER (NAME STATE)
6982   ((LAMBDA (TIMER NAME STATE)
6983            ((LAMBDA (MV TIMER NAME)
6984                     ((LAMBDA (EPSILON STATE TIMER NAME)
6985                              (SET-TIMER NAME
6986                                         (CONS (BINARY-+ (CAR TIMER) EPSILON)
6987                                               (CDR TIMER))
6988                                         STATE))
6989                      (MV-NTH '0 MV)
6990                      (MV-NTH '1 MV)
6991                      TIMER NAME))
6992             (MAIN-TIMER STATE)
6993             TIMER NAME))
6994    (GET-TIMER NAME STATE)
6995    NAME STATE))
6996
6997(DEFUN
6998 PRINT-RATIONAL-AS-DECIMAL
6999 (X CHANNEL STATE)
7000 ((LAMBDA
7001   (X00 STATE CHANNEL X)
7002   ((LAMBDA (STATE CHANNEL X00)
7003            ((LAMBDA (STATE X00 CHANNEL)
7004                     ((LAMBDA (STATE CHANNEL X00)
7005                              ((LAMBDA (R STATE CHANNEL)
7006                                       (IF (< R '10)
7007                                           ((LAMBDA (STATE CHANNEL R)
7008                                                    (PRINC$ R CHANNEL STATE))
7009                                            (PRINC$ '"0" CHANNEL STATE)
7010                                            CHANNEL R)
7011                                           (PRINC$ R CHANNEL STATE)))
7012                               (REM X00 '100)
7013                               STATE CHANNEL))
7014                      (PRINC$ '"." CHANNEL STATE)
7015                      CHANNEL X00))
7016             (IF (< '99 X00)
7017                 (PRINC$ (FLOOR (BINARY-* X00 (UNARY-/ '100)) '1)
7018                         CHANNEL STATE)
7019                 (PRINC$ '"0" CHANNEL STATE))
7020             X00 CHANNEL))
7021    (IF (< X '0)
7022        (PRINC$ '"-" CHANNEL STATE)
7023        STATE)
7024    CHANNEL X00))
7025  (ROUND (BINARY-* '100 (ABS X)) '1)
7026  STATE CHANNEL X))
7027
7028(DEFUN PRINT-TIMER (NAME CHANNEL STATE)
7029       (PRINT-RATIONAL-AS-DECIMAL (CAR (GET-TIMER NAME STATE))
7030                                  CHANNEL STATE))
7031
7032(DEFUN
7033 PRIN1$ (X CHANNEL STATE)
7034 (IF
7035  (ACL2-NUMBERP X)
7036  (PRINC$ X CHANNEL STATE)
7037  (IF
7038   (CHARACTERP X)
7039   ((LAMBDA (STATE CHANNEL X)
7040            (PRINC$ (IF (EQL X '#\Newline)
7041                        '"Newline"
7042                        (IF (EQL X '#\Space)
7043                            '"Space"
7044                            (IF (EQL X '#\Page)
7045                                '"Page"
7046                                (IF (EQL X '#\Tab)
7047                                    '"Tab"
7048                                    (IF (EQL X '#\Rubout) '"Rubout" X)))))
7049                    CHANNEL STATE))
7050    (PRINC$ '"#\\" CHANNEL STATE)
7051    CHANNEL X)
7052   (IF
7053    (STRINGP X)
7054    ((LAMBDA (L X STATE CHANNEL)
7055             ((LAMBDA (STATE CHANNEL X L)
7056                      ((LAMBDA (STATE CHANNEL)
7057                               (PRINC$ '#\" CHANNEL STATE))
7058                       (IF (IF (MEMBER '#\\ L)
7059                               (MEMBER '#\\ L)
7060                               (MEMBER '#\" L))
7061                           (PRIN1-WITH-SLASHES X '#\"
7062                                               CHANNEL STATE)
7063                           (PRINC$ X CHANNEL STATE))
7064                       CHANNEL))
7065              (PRINC$ '#\" CHANNEL STATE)
7066              CHANNEL X L))
7067     (COERCE X 'LIST)
7068     X STATE CHANNEL)
7069    ((LAMBDA (STATE CHANNEL X)
7070             (IF (NEEDS-SLASHES (SYMBOL-NAME X) STATE)
7071                 ((LAMBDA (STATE CHANNEL X)
7072                          ((LAMBDA (STATE CHANNEL)
7073                                   (PRINC$ '#\| CHANNEL STATE))
7074                           (PRIN1-WITH-SLASHES (SYMBOL-NAME X)
7075                                               '#\|
7076                                               CHANNEL STATE)
7077                           CHANNEL))
7078                  (PRINC$ '#\| CHANNEL STATE)
7079                  CHANNEL X)
7080                 (PRINC$ X CHANNEL STATE)))
7081     (IF
7082      (KEYWORDP X)
7083      (PRINC$ '#\: CHANNEL STATE)
7084      (IF
7085       (IF
7086        (EQUAL (SYMBOL-PACKAGE-NAME X)
7087               (GET-GLOBAL 'CURRENT-PACKAGE STATE))
7088        (EQUAL (SYMBOL-PACKAGE-NAME X)
7089               (GET-GLOBAL 'CURRENT-PACKAGE STATE))
7090        (MEMBER-EQ
7091           X
7092           (CAR (CDR (ASSOC-EQUAL (GET-GLOBAL 'CURRENT-PACKAGE STATE)
7093                                  (GLOBAL-VAL 'KNOWN-PACKAGE-ALIST
7094                                              (GET-GLOBAL 'CURRENT-ACL2-WORLD
7095                                                          STATE)))))))
7096       STATE
7097       ((LAMBDA (P CHANNEL STATE)
7098                ((LAMBDA (STATE CHANNEL)
7099                         (PRINC$ '"::" CHANNEL STATE))
7100                 (IF (NEEDS-SLASHES P STATE)
7101                     ((LAMBDA (STATE CHANNEL P)
7102                              ((LAMBDA (STATE CHANNEL)
7103                                       (PRINC$ '#\| CHANNEL STATE))
7104                               (PRIN1-WITH-SLASHES P '#\|
7105                                                   CHANNEL STATE)
7106                               CHANNEL))
7107                      (PRINC$ '#\| CHANNEL STATE)
7108                      CHANNEL P)
7109                     (IF (EQ (GET-GLOBAL 'PRINT-CASE STATE)
7110                             ':DOWNCASE)
7111                         (PRINC$ (STRING-DOWNCASE P)
7112                                 CHANNEL STATE)
7113                         (PRINC$ P CHANNEL STATE)))
7114                 CHANNEL))
7115        (SYMBOL-PACKAGE-NAME X)
7116        CHANNEL STATE)))
7117     CHANNEL X)))))
7118
7119(DEFUN CURRENT-PACKAGE (STATE) (GET-GLOBAL 'CURRENT-PACKAGE STATE))
7120
7121(DEFUN KNOWN-PACKAGE-ALIST (STATE)
7122       (FGETPROP 'KNOWN-PACKAGE-ALIST
7123                 'GLOBAL-VALUE
7124                 'NIL
7125                 (W STATE)))
7126
7127(DEFTHM
7128    STATE-P1-UPDATE-NTH-2-WORLD
7129    (IMPLIES (IF (STATE-P1 STATE)
7130                 (IF (PLIST-WORLDP WRLD)
7131                     (IF (KNOWN-PACKAGE-ALISTP (FGETPROP 'KNOWN-PACKAGE-ALIST
7132                                                         'GLOBAL-VALUE
7133                                                         'NIL
7134                                                         WRLD))
7135                         (SYMBOL-ALISTP (FGETPROP 'ACL2-DEFAULTS-TABLE
7136                                                  'TABLE-ALIST
7137                                                  'NIL
7138                                                  WRLD))
7139                         'NIL)
7140                     'NIL)
7141                 'NIL)
7142             (STATE-P1 (UPDATE-NTH '2
7143                                   (ADD-PAIR 'CURRENT-ACL2-WORLD
7144                                             WRLD (NTH '2 STATE))
7145                                   STATE))))
7146
7147(DEFTHM TRUE-LIST-LISTP-FORWARD-TO-TRUE-LISTP-ASSOC-EQUAL
7148        (IMPLIES (TRUE-LIST-LISTP L)
7149                 (TRUE-LISTP (ASSOC-EQUAL KEY L))))
7150
7151(DEFUN UNION-EQ (LST1 LST2)
7152       (IF (ENDP LST1)
7153           LST2
7154           (IF (MEMBER-EQ (CAR LST1) LST2)
7155               (UNION-EQ (CDR LST1) LST2)
7156               (CONS (CAR LST1)
7157                     (UNION-EQ (CDR LST1) LST2)))))
7158
7159(DEFUN LD-SKIP-PROOFSP (STATE) (GET-GLOBAL 'LD-SKIP-PROOFSP STATE))
7160
7161(DEFUN
7162 MAKE-VAR-LST1 (ROOT SYM N ACC)
7163 (IF
7164  (ZP N)
7165  ACC
7166  (MAKE-VAR-LST1
7167   ROOT SYM (BINARY-+ '-1 N)
7168   (CONS
7169    (INTERN-IN-PACKAGE-OF-SYMBOL
7170         (COERCE (BINARY-APPEND ROOT
7171                                (EXPLODE-NONNEGATIVE-INTEGER (BINARY-+ '-1 N)
7172                                                             '10
7173                                                             'NIL))
7174                 'STRING)
7175         SYM)
7176    ACC))))
7177
7178(DEFUN MAKE-VAR-LST (SYM N)
7179       (MAKE-VAR-LST1 (COERCE (SYMBOL-NAME SYM) 'LIST)
7180                      SYM N 'NIL))
7181
7182(DEFUN NON-FREE-VAR-RUNES
7183       (RUNES FREE-VAR-RUNES-ONCE
7184              FREE-VAR-RUNES-ALL ACC)
7185       (IF (ENDP RUNES)
7186           ACC
7187           (NON-FREE-VAR-RUNES (CDR RUNES)
7188                               FREE-VAR-RUNES-ONCE FREE-VAR-RUNES-ALL
7189                               (IF (IF (MEMBER-EQUAL (CAR RUNES)
7190                                                     FREE-VAR-RUNES-ONCE)
7191                                       (MEMBER-EQUAL (CAR RUNES)
7192                                                     FREE-VAR-RUNES-ONCE)
7193                                       (MEMBER-EQUAL (CAR RUNES)
7194                                                     FREE-VAR-RUNES-ALL))
7195                                   ACC (CONS (CAR RUNES) ACC)))))
7196
7197(DEFUN FREE-VAR-RUNES (FLG WRLD)
7198       (IF (EQ FLG ':ONCE)
7199           (GLOBAL-VAL 'FREE-VAR-RUNES-ONCE WRLD)
7200           (GLOBAL-VAL 'FREE-VAR-RUNES-ALL WRLD)))
7201
7202(DEFTHM NATP-POSITION-AC
7203        (IMPLIES (IF (INTEGERP ACC)
7204                     (NOT (< ACC '0))
7205                     'NIL)
7206                 (IF (EQUAL (POSITION-AC ITEM LST ACC) 'NIL)
7207                     (EQUAL (POSITION-AC ITEM LST ACC) 'NIL)
7208                     (IF (INTEGERP (POSITION-AC ITEM LST ACC))
7209                         (NOT (< (POSITION-AC ITEM LST ACC) '0))
7210                         'NIL))))
7211
7212(DEFUN
7213 ABSOLUTE-PATHNAME-STRING-P
7214 (STR DIRECTORYP OS)
7215 ((LAMBDA
7216   (LEN DIRECTORYP STR OS)
7217   (IF
7218    (< '0 LEN)
7219    (IF
7220     (IF
7221      (IF (EQ OS ':MSWINDOWS)
7222          (IF ((LAMBDA (POS-COLON POS-SEP)
7223                       (IF POS-COLON
7224                           (EQL POS-SEP (BINARY-+ '1 POS-COLON))
7225                           'NIL))
7226               (POSITION '#\: STR)
7227               (POSITION '#\/ STR))
7228              'T
7229              'NIL)
7230          'NIL)
7231      (IF (EQ OS ':MSWINDOWS)
7232          (IF ((LAMBDA (POS-COLON POS-SEP)
7233                       (IF POS-COLON
7234                           (EQL POS-SEP (BINARY-+ '1 POS-COLON))
7235                           'NIL))
7236               (POSITION '#\: STR)
7237               (POSITION '#\/ STR))
7238              'T
7239              'NIL)
7240          'NIL)
7241      (IF
7242       (EQL (CHAR STR '0) '#\/)
7243       'T
7244       (IF
7245        (EQL (CHAR STR '0) '#\~)
7246        (PROG2$
7247         (IF
7248          (IF (EQL '1 LEN)
7249              (EQL '1 LEN)
7250              (EQL (CHAR STR '1) '#\/))
7251          (HARD-ERROR
7252           'ABSOLUTE-PATHNAME-STRING-P
7253           '"Implementation error: Forgot ~
7254                                               to apply ~
7255                                               expand-tilde-to-user-home-dir ~
7256                                               before calling ~
7257                                               absolute-pathname-string-p. ~
7258                                               Please contact the ACL2 ~
7259                                               implementors."
7260           'NIL)
7261          'NIL)
7262         'T)
7263        'NIL)))
7264     (IF DIRECTORYP
7265         (EQL (CHAR STR (BINARY-+ '-1 LEN)) '#\/)
7266         'T)
7267     'NIL)
7268    'NIL))
7269  (LENGTH STR)
7270  DIRECTORYP STR OS))
7271
7272(DEFUN INCLUDE-BOOK-DIR-ALISTP (X OS)
7273       (IF (ATOM X)
7274           (NULL X)
7275           (IF (CONSP (CAR X))
7276               (IF (KEYWORDP (CAR (CAR X)))
7277                   (IF (STRINGP (CDR (CAR X)))
7278                       (IF (ABSOLUTE-PATHNAME-STRING-P (CDR (CAR X))
7279                                                       'T
7280                                                       OS)
7281                           (INCLUDE-BOOK-DIR-ALISTP (CDR X) OS)
7282                           'NIL)
7283                       'NIL)
7284                   'NIL)
7285               'NIL)))
7286
7287(DEFUN LEGAL-RULER-EXTENDERS-P (X)
7288       (IF (ATOM X)
7289           (NULL X)
7290           (IF (KEYWORDP (CAR X))
7291               (IF (EQ (CAR X) ':LAMBDAS)
7292                   (LEGAL-RULER-EXTENDERS-P (CDR X))
7293                   'NIL)
7294               (IF (SYMBOLP (CAR X))
7295                   (LEGAL-RULER-EXTENDERS-P (CDR X))
7296                   'NIL))))
7297
7298(DEFUN TABLE-ALIST (NAME WRLD) (FGETPROP NAME 'TABLE-ALIST 'NIL WRLD))
7299
7300(DEFUN DEFAULT-VERIFY-GUARDS-EAGERNESS (WRLD)
7301       (IF (CDR (ASSOC-EQ ':VERIFY-GUARDS-EAGERNESS
7302                          (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7303                                       WRLD)))
7304           (CDR (ASSOC-EQ ':VERIFY-GUARDS-EAGERNESS
7305                          (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7306                                       WRLD)))
7307           '1))
7308
7309(DEFUN DEFAULT-COMPILE-FNS (WRLD)
7310       (CDR (ASSOC-EQ ':COMPILE-FNS
7311                      (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7312                                   WRLD))))
7313
7314(DEFUN
7315 SET-COMPILER-ENABLED (VAL STATE)
7316 (IF
7317  (GET-GLOBAL 'CERTIFY-BOOK-INFO STATE)
7318  (PROG2$
7319   (HARD-ERROR
7320    'SET-COMPILER-ENABLED
7321    '"It is illegal to call set-compiler-enabled ~
7322                              inside certify-book."
7323    'NIL)
7324   STATE)
7325  (PUT-GLOBAL 'COMPILER-ENABLED
7326              VAL STATE)))
7327
7328(DEFUN DEFAULT-MEASURE-FUNCTION (WRLD)
7329       (IF (CDR (ASSOC-EQ ':MEASURE-FUNCTION
7330                          (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7331                                       WRLD)))
7332           (CDR (ASSOC-EQ ':MEASURE-FUNCTION
7333                          (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7334                                       WRLD)))
7335           'ACL2-COUNT))
7336
7337(DEFUN DEFAULT-WELL-FOUNDED-RELATION (WRLD)
7338       (IF (CDR (ASSOC-EQ ':WELL-FOUNDED-RELATION
7339                          (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7340                                       WRLD)))
7341           (CDR (ASSOC-EQ ':WELL-FOUNDED-RELATION
7342                          (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7343                                       WRLD)))
7344           'O<))
7345
7346(DEFUN DEFAULT-DEFUN-MODE (WRLD)
7347       ((LAMBDA (VAL)
7348                (IF (MEMBER-EQ VAL '(:LOGIC :PROGRAM))
7349                    VAL ':PROGRAM))
7350        (CDR (ASSOC-EQ ':DEFUN-MODE
7351                       (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7352                                    WRLD)))))
7353
7354(DEFUN DEFAULT-DEFUN-MODE-FROM-STATE (STATE) (DEFAULT-DEFUN-MODE (W STATE)))
7355
7356(DEFUN INVISIBLE-FNS-TABLE (WRLD) (TABLE-ALIST 'INVISIBLE-FNS-TABLE WRLD))
7357
7358(DEFUN UNARY-FUNCTION-SYMBOL-LISTP (LST WRLD)
7359       (IF (ATOM LST)
7360           (NULL LST)
7361           (IF (SYMBOLP (CAR LST))
7362               (IF ((LAMBDA (FORMALS)
7363                            (IF (CONSP FORMALS)
7364                                (NULL (CDR FORMALS))
7365                                'NIL))
7366                    (FGETPROP (CAR LST) 'FORMALS 'NIL WRLD))
7367                   (UNARY-FUNCTION-SYMBOL-LISTP (CDR LST)
7368                                                WRLD)
7369                   'NIL)
7370               'NIL)))
7371
7372(DEFUN INVISIBLE-FNS-ENTRYP (KEY VAL WRLD)
7373       (IF (SYMBOLP KEY)
7374           (IF (FUNCTION-SYMBOLP KEY WRLD)
7375               (UNARY-FUNCTION-SYMBOL-LISTP VAL WRLD)
7376               'NIL)
7377           'NIL))
7378
7379(DEFUN DELETE-ASSOC-EQ (KEY ALIST)
7380       (IF (ENDP ALIST)
7381           'NIL
7382           (IF (EQ KEY (CAR (CAR ALIST)))
7383               (CDR ALIST)
7384               (CONS (CAR ALIST)
7385                     (DELETE-ASSOC-EQ KEY (CDR ALIST))))))
7386
7387(DEFUN DELETE-ASSOC-EQUAL (KEY ALIST)
7388       (IF (ENDP ALIST)
7389           'NIL
7390           (IF (EQUAL KEY (CAR (CAR ALIST)))
7391               (CDR ALIST)
7392               (CONS (CAR ALIST)
7393                     (DELETE-ASSOC-EQUAL KEY (CDR ALIST))))))
7394
7395(DEFUN BACKCHAIN-LIMIT (WRLD FLG)
7396       ((LAMBDA (ENTRY FLG)
7397                (IF (EQ FLG ':TS)
7398                    (CAR ENTRY)
7399                    (CAR (CDR ENTRY))))
7400        (IF (CDR (ASSOC-EQ ':BACKCHAIN-LIMIT
7401                           (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7402                                        WRLD)))
7403            (CDR (ASSOC-EQ ':BACKCHAIN-LIMIT
7404                           (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7405                                        WRLD)))
7406            '(NIL NIL))
7407        FLG))
7408
7409(DEFUN DEFAULT-BACKCHAIN-LIMIT (WRLD FLG)
7410       ((LAMBDA (ENTRY FLG)
7411                (IF (EQ FLG ':TS)
7412                    (CAR ENTRY)
7413                    (CAR (CDR ENTRY))))
7414        (IF (CDR (ASSOC-EQ ':DEFAULT-BACKCHAIN-LIMIT
7415                           (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7416                                        WRLD)))
7417            (CDR (ASSOC-EQ ':DEFAULT-BACKCHAIN-LIMIT
7418                           (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7419                                        WRLD)))
7420            '(NIL NIL))
7421        FLG))
7422
7423(DEFUN REWRITE-STACK-LIMIT (WRLD)
7424       (IF (CDR (ASSOC-EQ ':REWRITE-STACK-LIMIT
7425                          (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7426                                       WRLD)))
7427           (CDR (ASSOC-EQ ':REWRITE-STACK-LIMIT
7428                          (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7429                                       WRLD)))
7430           '1000))
7431
7432(DEFUN CASE-SPLIT-LIMITATIONS (WRLD)
7433       (CDR (ASSOC-EQ ':CASE-SPLIT-LIMITATIONS
7434                      (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7435                                   WRLD))))
7436
7437(DEFUN BINOP-TABLE (WRLD) (TABLE-ALIST 'BINOP-TABLE WRLD))
7438
7439(DEFUN MATCH-FREE-DEFAULT (WRLD)
7440       (CDR (ASSOC-EQ ':MATCH-FREE-DEFAULT
7441                      (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7442                                   WRLD))))
7443
7444(DEFUN MATCH-FREE-OVERRIDE (WRLD)
7445       ((LAMBDA (PAIR WRLD)
7446                (IF (IF (NULL PAIR)
7447                        (NULL PAIR)
7448                        (EQ (CDR PAIR) ':CLEAR))
7449                    ':CLEAR
7450                    (CONS (CDR (ASSOC-EQ ':MATCH-FREE-OVERRIDE-NUME
7451                                         (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7452                                                      WRLD)))
7453                          (CDR PAIR))))
7454        (ASSOC-EQ ':MATCH-FREE-OVERRIDE
7455                  (TABLE-ALIST 'ACL2-DEFAULTS-TABLE WRLD))
7456        WRLD))
7457
7458(DEFUN NON-LINEARP (WRLD)
7459       ((LAMBDA (TEMP)
7460                (IF TEMP (CDR TEMP) 'NIL))
7461        (ASSOC-EQ ':NON-LINEARP
7462                  (TABLE-ALIST 'ACL2-DEFAULTS-TABLE
7463                               WRLD))))
7464
7465(DEFUN MACRO-ALIASES (WRLD) (TABLE-ALIST 'MACRO-ALIASES-TABLE WRLD))
7466
7467(DEFUN NTH-ALIASES (WRLD) (TABLE-ALIST 'NTH-ALIASES-TABLE WRLD))
7468
7469(DEFUN DEFAULT-HINTS (WRLD)
7470       (CDR (ASSOC-EQ 'T
7471                      (TABLE-ALIST 'DEFAULT-HINTS-TABLE
7472                                   WRLD))))
7473
7474(DEFUN FIX-TRUE-LIST (X)
7475       (IF (CONSP X)
7476           (CONS (CAR X) (FIX-TRUE-LIST (CDR X)))
7477           'NIL))
7478
7479(DEFTHM PAIRLIS$-FIX-TRUE-LIST
7480        (EQUAL (PAIRLIS$ X (FIX-TRUE-LIST Y))
7481               (PAIRLIS$ X Y)))
7482
7483(DEFUN BOOLEAN-LISTP (LST)
7484       (IF (ATOM LST)
7485           (EQ LST 'NIL)
7486           (IF (IF (EQ (CAR LST) 'T)
7487                   (EQ (CAR LST) 'T)
7488                   (EQ (CAR LST) 'NIL))
7489               (BOOLEAN-LISTP (CDR LST))
7490               'NIL)))
7491
7492(DEFTHM BOOLEAN-LISTP-CONS
7493        (EQUAL (BOOLEAN-LISTP (CONS X Y))
7494               (IF (BOOLEANP X)
7495                   (BOOLEAN-LISTP Y)
7496                   'NIL)))
7497
7498(DEFTHM BOOLEAN-LISTP-FORWARD
7499        (IMPLIES (BOOLEAN-LISTP (CONS A LST))
7500                 (IF (BOOLEANP A)
7501                     (BOOLEAN-LISTP LST)
7502                     'NIL)))
7503
7504(DEFTHM BOOLEAN-LISTP-FORWARD-TO-SYMBOL-LISTP
7505        (IMPLIES (BOOLEAN-LISTP X)
7506                 (SYMBOL-LISTP X)))
7507
7508(DEFAXIOM COMPLETION-OF-+
7509          (EQUAL (BINARY-+ X Y)
7510                 (IF (ACL2-NUMBERP X)
7511                     (IF (ACL2-NUMBERP Y) (BINARY-+ X Y) X)
7512                     (IF (ACL2-NUMBERP Y) Y '0))))
7513
7514(DEFTHM DEFAULT-+-1
7515        (IMPLIES (NOT (ACL2-NUMBERP X))
7516                 (EQUAL (BINARY-+ X Y) (FIX Y))))
7517
7518(DEFTHM DEFAULT-+-2
7519        (IMPLIES (NOT (ACL2-NUMBERP Y))
7520                 (EQUAL (BINARY-+ X Y) (FIX X))))
7521
7522(DEFAXIOM COMPLETION-OF-*
7523          (EQUAL (BINARY-* X Y)
7524                 (IF (ACL2-NUMBERP X)
7525                     (IF (ACL2-NUMBERP Y) (BINARY-* X Y) '0)
7526                     '0)))
7527
7528(DEFTHM DEFAULT-*-1
7529        (IMPLIES (NOT (ACL2-NUMBERP X))
7530                 (EQUAL (BINARY-* X Y) '0)))
7531
7532(DEFTHM DEFAULT-*-2
7533        (IMPLIES (NOT (ACL2-NUMBERP Y))
7534                 (EQUAL (BINARY-* X Y) '0)))
7535
7536(DEFAXIOM COMPLETION-OF-UNARY-MINUS
7537          (EQUAL (UNARY-- X)
7538                 (IF (ACL2-NUMBERP X) (UNARY-- X) '0)))
7539
7540(DEFTHM DEFAULT-UNARY-MINUS
7541        (IMPLIES (NOT (ACL2-NUMBERP X))
7542                 (EQUAL (UNARY-- X) '0)))
7543
7544(DEFAXIOM COMPLETION-OF-UNARY-/
7545          (EQUAL (UNARY-/ X)
7546                 (IF (IF (ACL2-NUMBERP X)
7547                         (NOT (EQUAL X '0))
7548                         'NIL)
7549                     (UNARY-/ X)
7550                     '0)))
7551
7552(DEFTHM DEFAULT-UNARY-/
7553        (IMPLIES (IF (NOT (ACL2-NUMBERP X))
7554                     (NOT (ACL2-NUMBERP X))
7555                     (EQUAL X '0))
7556                 (EQUAL (UNARY-/ X) '0)))
7557
7558(DEFAXIOM COMPLETION-OF-<
7559          (EQUAL (< X Y)
7560                 (IF (IF (RATIONALP X) (RATIONALP Y) 'NIL)
7561                     (< X Y)
7562                     ((LAMBDA (X1 Y1)
7563                              (IF (< (REALPART X1) (REALPART Y1))
7564                                  (< (REALPART X1) (REALPART Y1))
7565                                  (IF (EQUAL (REALPART X1) (REALPART Y1))
7566                                      (< (IMAGPART X1) (IMAGPART Y1))
7567                                      'NIL)))
7568                      (IF (ACL2-NUMBERP X) X '0)
7569                      (IF (ACL2-NUMBERP Y) Y '0)))))
7570
7571(DEFTHM DEFAULT-<-1
7572        (IMPLIES (NOT (ACL2-NUMBERP X))
7573                 (EQUAL (< X Y) (< '0 Y))))
7574
7575(DEFTHM DEFAULT-<-2
7576        (IMPLIES (NOT (ACL2-NUMBERP Y))
7577                 (EQUAL (< X Y) (< X '0))))
7578
7579(DEFAXIOM COMPLETION-OF-CAR (EQUAL (CAR X) (IF (CONSP X) (CAR X) 'NIL)))
7580
7581(DEFTHM DEFAULT-CAR (IMPLIES (NOT (CONSP X)) (EQUAL (CAR X) 'NIL)))
7582
7583(DEFAXIOM COMPLETION-OF-CDR (EQUAL (CDR X) (IF (CONSP X) (CDR X) 'NIL)))
7584
7585(DEFTHM DEFAULT-CDR (IMPLIES (NOT (CONSP X)) (EQUAL (CDR X) 'NIL)))
7586
7587(DEFTHM CONS-CAR-CDR
7588        (EQUAL (CONS (CAR X) (CDR X))
7589               (IF (CONSP X) X (CONS 'NIL 'NIL))))
7590
7591(DEFAXIOM COMPLETION-OF-CHAR-CODE
7592          (EQUAL (CHAR-CODE X)
7593                 (IF (CHARACTERP X) (CHAR-CODE X) '0)))
7594
7595(DEFTHM DEFAULT-CHAR-CODE
7596        (IMPLIES (NOT (CHARACTERP X))
7597                 (EQUAL (CHAR-CODE X) '0)))
7598
7599(DEFAXIOM COMPLETION-OF-CODE-CHAR
7600          (EQUAL (CODE-CHAR X)
7601                 (IF (IF (INTEGERP X)
7602                         (IF (NOT (< X '0)) (< X '256) 'NIL)
7603                         'NIL)
7604                     (CODE-CHAR X)
7605                     (CODE-CHAR '0))))
7606
7607(DEFAXIOM COMPLETION-OF-COMPLEX
7608          (EQUAL (COMPLEX X Y)
7609                 (COMPLEX (IF (RATIONALP X) X '0)
7610                          (IF (RATIONALP Y) Y '0))))
7611
7612(DEFTHM DEFAULT-COMPLEX-1
7613        (IMPLIES (NOT (RATIONALP X))
7614                 (EQUAL (COMPLEX X Y) (COMPLEX '0 Y))))
7615
7616(DEFTHM DEFAULT-COMPLEX-2
7617        (IMPLIES (NOT (RATIONALP Y))
7618                 (EQUAL (COMPLEX X Y)
7619                        (IF (RATIONALP X) X '0))))
7620
7621(DEFTHM COMPLEX-0 (EQUAL (COMPLEX X '0) (RFIX X)))
7622
7623(DEFTHM ADD-DEF-COMPLEX
7624        (EQUAL (BINARY-+ X Y)
7625               (COMPLEX (BINARY-+ (REALPART X) (REALPART Y))
7626                        (BINARY-+ (IMAGPART X) (IMAGPART Y)))))
7627
7628(DEFTHM REALPART-+
7629        (EQUAL (REALPART (BINARY-+ X Y))
7630               (BINARY-+ (REALPART X) (REALPART Y))))
7631
7632(DEFTHM IMAGPART-+
7633        (EQUAL (IMAGPART (BINARY-+ X Y))
7634               (BINARY-+ (IMAGPART X) (IMAGPART Y))))
7635
7636(DEFAXIOM COMPLETION-OF-COERCE
7637          (EQUAL (COERCE X Y)
7638                 (IF (EQUAL Y 'LIST)
7639                     (IF (STRINGP X) (COERCE X 'LIST) 'NIL)
7640                     (COERCE (MAKE-CHARACTER-LIST X)
7641                             'STRING))))
7642
7643(DEFTHM DEFAULT-COERCE-1
7644        (IMPLIES (NOT (STRINGP X))
7645                 (EQUAL (COERCE X 'LIST) 'NIL)))
7646
7647(DEFTHM MAKE-CHARACTER-LIST-MAKE-CHARACTER-LIST
7648        (EQUAL (MAKE-CHARACTER-LIST (MAKE-CHARACTER-LIST X))
7649               (MAKE-CHARACTER-LIST X)))
7650
7651(DEFTHM DEFAULT-COERCE-2
7652        (IMPLIES (IF (SYNP 'NIL
7653                           '(SYNTAXP (NOT (EQUAL Y ''STRING)))
7654                           '(IF (NOT (EQUAL Y ''STRING)) 'T 'NIL))
7655                     (NOT (EQUAL Y 'LIST))
7656                     'NIL)
7657                 (EQUAL (COERCE X Y)
7658                        (COERCE X 'STRING))))
7659
7660(DEFTHM DEFAULT-COERCE-3
7661        (IMPLIES (NOT (CONSP X))
7662                 (EQUAL (COERCE X 'STRING) '"")))
7663
7664(DEFAXIOM COMPLETION-OF-DENOMINATOR
7665          (EQUAL (DENOMINATOR X)
7666                 (IF (RATIONALP X) (DENOMINATOR X) '1)))
7667
7668(DEFTHM DEFAULT-DENOMINATOR
7669        (IMPLIES (NOT (RATIONALP X))
7670                 (EQUAL (DENOMINATOR X) '1)))
7671
7672(DEFAXIOM COMPLETION-OF-IMAGPART
7673          (EQUAL (IMAGPART X)
7674                 (IF (ACL2-NUMBERP X) (IMAGPART X) '0)))
7675
7676(DEFTHM DEFAULT-IMAGPART
7677        (IMPLIES (NOT (ACL2-NUMBERP X))
7678                 (EQUAL (IMAGPART X) '0)))
7679
7680(DEFAXIOM COMPLETION-OF-INTERN-IN-PACKAGE-OF-SYMBOL
7681          (EQUAL (INTERN-IN-PACKAGE-OF-SYMBOL X Y)
7682                 (IF (IF (STRINGP X) (SYMBOLP Y) 'NIL)
7683                     (INTERN-IN-PACKAGE-OF-SYMBOL X Y)
7684                     'NIL)))
7685
7686(DEFAXIOM COMPLETION-OF-NUMERATOR
7687          (EQUAL (NUMERATOR X)
7688                 (IF (RATIONALP X) (NUMERATOR X) '0)))
7689
7690(DEFTHM DEFAULT-NUMERATOR
7691        (IMPLIES (NOT (RATIONALP X))
7692                 (EQUAL (NUMERATOR X) '0)))
7693
7694(DEFAXIOM COMPLETION-OF-REALPART
7695          (EQUAL (REALPART X)
7696                 (IF (ACL2-NUMBERP X) (REALPART X) '0)))
7697
7698(DEFTHM DEFAULT-REALPART
7699        (IMPLIES (NOT (ACL2-NUMBERP X))
7700                 (EQUAL (REALPART X) '0)))
7701
7702(DEFAXIOM COMPLETION-OF-SYMBOL-NAME
7703          (EQUAL (SYMBOL-NAME X)
7704                 (IF (SYMBOLP X) (SYMBOL-NAME X) '"")))
7705
7706(DEFTHM DEFAULT-SYMBOL-NAME
7707        (IMPLIES (NOT (SYMBOLP X))
7708                 (EQUAL (SYMBOL-NAME X) '"")))
7709
7710(DEFAXIOM COMPLETION-OF-SYMBOL-PACKAGE-NAME
7711          (EQUAL (SYMBOL-PACKAGE-NAME X)
7712                 (IF (SYMBOLP X)
7713                     (SYMBOL-PACKAGE-NAME X)
7714                     '"")))
7715
7716(DEFTHM DEFAULT-SYMBOL-PACKAGE-NAME
7717        (IMPLIES (NOT (SYMBOLP X))
7718                 (EQUAL (SYMBOL-PACKAGE-NAME X) '"")))
7719
7720(DEFUN DOUBLE-REWRITE (X) X)
7721
7722(DEFUN
7723 WITH-PROVER-TIME-LIMIT (TIME FORM)
7724 (PROG2$
7725  (IF
7726   ((LAMBDA (TIME)
7727            (IF (RATIONALP TIME) (< '0 TIME) 'NIL))
7728    (IF (IF (CONSP TIME) (NULL (CDR TIME)) 'NIL)
7729        (CAR TIME)
7730        TIME))
7731   ((LAMBDA (TIME)
7732            (IF (RATIONALP TIME) (< '0 TIME) 'NIL))
7733    (IF (IF (CONSP TIME) (NULL (CDR TIME)) 'NIL)
7734        (CAR TIME)
7735        TIME))
7736   (ILLEGAL
7737    'WITH-PROVER-TIME-LIMIT
7738    '"The first argument to with-prover-time-limit must evaluate ~
7739                        to a non-negative rational number but that value is ~
7740                        ~x0."
7741    (CONS (CONS '#\0 TIME) 'NIL)))
7742  FORM))
7743
7744(DEFUN TIME-LIMIT4-REACHED-P (MSG) 'NIL)
7745
7746(DEFUN
7747 TILDE-@-GUARD-CHECKING-PHRASE (VAL)
7748 (CONS
7749  '"The first argument to ~x0 must evaluate to one of ~v1.  But such an ~
7750        argument has evaluated to ~x2."
7751  (CONS (CONS '#\0 'WITH-GUARD-CHECKING)
7752        (CONS (CONS '#\1 '(T NIL :NOWARN :ALL :NONE))
7753              (CONS (CONS '#\2 VAL) 'NIL)))))
7754
7755(DEFUN
7756     WITH-GUARD-CHECKING (VAL FORM)
7757     (PROG2$ (IF (MEMBER-EQ VAL '(T NIL :NOWARN :ALL :NONE))
7758                 (MEMBER-EQ VAL '(T NIL :NOWARN :ALL :NONE))
7759                 (HARD-ERROR 'WITH-GUARD-CHECKING
7760                             '"~@0"
7761                             (CONS (CONS '#\0
7762                                         (TILDE-@-GUARD-CHECKING-PHRASE VAL))
7763                                   'NIL)))
7764             FORM))
7765
7766(DEFUN ABORT! NIL 'NIL)
7767
7768(DEFUN P! NIL 'NIL)
7769
7770(DEFUN FMT-TO-COMMENT-WINDOW (STR ALIST COL EVISC-TUPLE) 'NIL)
7771
7772(DEFUN FMT-TO-COMMENT-WINDOW! (STR ALIST COL EVISC-TUPLE) 'NIL)
7773
7774(DEFUN PAIRLIS2 (X Y)
7775       (IF (ENDP Y)
7776           'NIL
7777           (CONS (CONS (CAR X) (CAR Y))
7778                 (PAIRLIS2 (CDR X) (CDR Y)))))
7779
7780(DEFUN WORMHOLE1 (NAME INPUT FORM LD-SPECIALS) 'NIL)
7781
7782(DEFUN WORMHOLE-P (STATE) (READ-ACL2-ORACLE STATE))
7783
7784(DEFUN DUPLICATES (LST)
7785       (IF (ENDP LST)
7786           'NIL
7787           (IF (MEMBER-EQ (CAR LST) (CDR LST))
7788               (ADD-TO-SET-EQ (CAR LST)
7789                              (DUPLICATES (CDR LST)))
7790               (DUPLICATES (CDR LST)))))
7791
7792(DEFUN ADD-TO-SET-EQUAL (X L) (IF (MEMBER-EQUAL X L) L (CONS X L)))
7793
7794(DEFUN INTERSECTION-EQ (L1 L2)
7795       (IF (ENDP L1)
7796           'NIL
7797           (IF (MEMBER-EQ (CAR L1) L2)
7798               (CONS (CAR L1)
7799                     (INTERSECTION-EQ (CDR L1) L2))
7800               (INTERSECTION-EQ (CDR L1) L2))))
7801
7802(DEFUN INTERSECTION-EQUAL (L1 L2)
7803       (IF (ENDP L1)
7804           'NIL
7805           (IF (MEMBER-EQUAL (CAR L1) L2)
7806               (CONS (CAR L1)
7807                     (INTERSECTION-EQUAL (CDR L1) L2))
7808               (INTERSECTION-EQUAL (CDR L1) L2))))
7809
7810(DEFUN EVENS (L) (IF (ENDP L) 'NIL (CONS (CAR L) (EVENS (CDR (CDR L))))))
7811
7812(DEFUN ODDS (L) (EVENS (CDR L)))
7813
7814(DEFUN SET-EQUALP-EQUAL (LST1 LST2)
7815       (IF (SUBSETP-EQUAL LST1 LST2)
7816           (SUBSETP-EQUAL LST2 LST1)
7817           'NIL))
7818
7819(DEFUN
7820     RECORD-ERROR (NAME REC)
7821     (HARD-ERROR 'RECORD-ERROR
7822                 '"An attempt was made to treat ~x0 as a record of type ~x1."
7823                 (CONS (CONS '#\0 REC)
7824                       (CONS (CONS '#\1 NAME) 'NIL))))
7825
7826(DEFUN
7827 RECORD-ACCESSOR-FUNCTION-NAME
7828 (NAME FIELD)
7829 (INTERN-IN-PACKAGE-OF-SYMBOL
7830  (COERCE
7831     (BINARY-APPEND
7832          (COERCE '"Access " 'LIST)
7833          (BINARY-APPEND (COERCE (SYMBOL-NAME NAME) 'LIST)
7834                         (BINARY-APPEND (COERCE '" record field " 'LIST)
7835                                        (COERCE (SYMBOL-NAME FIELD) 'LIST))))
7836     'STRING)
7837  NAME))
7838
7839(DEFUN
7840 MFC-CLAUSE (MFC)
7841 (IF
7842  (IF
7843   (TRUE-LISTP MFC)
7844   (IF
7845    (TRUE-LISTP
7846     ((LAMBDA
7847           (RCNST)
7848           (CAR (CDR (CDR (CDR (CDR (CDR (CDR (CDR (CDR (CDR RCNST)))))))))))
7849      MFC))
7850    (IF
7851     (CONSP
7852      (NTH
7853       '4
7854       ((LAMBDA
7855           (RCNST)
7856           (CAR (CDR (CDR (CDR (CDR (CDR (CDR (CDR (CDR (CDR RCNST)))))))))))
7857        MFC)))
7858     (PSEUDO-TERM-LISTP
7859      ((LAMBDA (CURRENT-CLAUSE)
7860               (CDR (CAR (CDR (CDR (CDR (CDR CURRENT-CLAUSE)))))))
7861       ((LAMBDA
7862           (RCNST)
7863           (CAR (CDR (CDR (CDR (CDR (CDR (CDR (CDR (CDR (CDR RCNST)))))))))))
7864        MFC)))
7865     'NIL)
7866    'NIL)
7867   'NIL)
7868  ((LAMBDA (CURRENT-CLAUSE)
7869           (CDR (CAR (CDR (CDR (CDR (CDR CURRENT-CLAUSE)))))))
7870   ((LAMBDA
7871         (RCNST)
7872         (CAR (CDR (CDR (CDR (CDR (CDR (CDR (CDR (CDR (CDR RCNST)))))))))))
7873    MFC))
7874  'NIL))
7875
7876(DEFUN MFC-RDEPTH (MFC)
7877       (IF (TRUE-LISTP MFC)
7878           ((LAMBDA (RDEPTH) (CAR RDEPTH)) MFC)
7879           'NIL))
7880
7881(DEFUN TYPE-ALIST-ENTRYP (X)
7882       (IF (CONSP X)
7883           (IF (PSEUDO-TERMP (CAR X))
7884               (IF (CONSP (CDR X))
7885                   (IF (INTEGERP (CAR (CDR X)))
7886                       (IF (NOT (< (CAR (CDR X)) '-8192))
7887                           (NOT (< '8191 (CAR (CDR X))))
7888                           'NIL)
7889                       'NIL)
7890                   'NIL)
7891               'NIL)
7892           'NIL))
7893
7894(DEFUN TYPE-ALISTP (X)
7895       (IF (CONSP X)
7896           (IF (TYPE-ALIST-ENTRYP (CAR X))
7897               (TYPE-ALISTP (CDR X))
7898               'NIL)
7899           (EQ X 'NIL)))
7900
7901(DEFUN MFC-TYPE-ALIST (MFC)
7902       (IF (IF (TRUE-LISTP MFC)
7903               (TYPE-ALISTP ((LAMBDA (TYPE-ALIST)
7904                                     (CAR (CDR TYPE-ALIST)))
7905                             MFC))
7906               'NIL)
7907           ((LAMBDA (TYPE-ALIST)
7908                    (CAR (CDR TYPE-ALIST)))
7909            MFC)
7910           'NIL))
7911
7912(DEFUN
7913 MFC-ANCESTORS (MFC)
7914 (IF
7915  (IF
7916    (TRUE-LISTP MFC)
7917    (TRUE-LISTP ((LAMBDA (ANCESTORS)
7918                         (CAR (CDR (CDR (CDR (CDR (CDR (CDR ANCESTORS))))))))
7919                 MFC))
7920    'NIL)
7921  ((LAMBDA (ANCESTORS)
7922           (CAR (CDR (CDR (CDR (CDR (CDR (CDR ANCESTORS))))))))
7923   MFC)
7924  'NIL))
7925
7926(DEFTHM PSEUDO-TERM-LISTP-MFC-CLAUSE (PSEUDO-TERM-LISTP (MFC-CLAUSE MFC)))
7927
7928(DEFTHM TYPE-ALISTP-MFC-TYPE-ALIST (TYPE-ALISTP (MFC-TYPE-ALIST MFC)))
7929
7930(DEFUN BAD-ATOM (X)
7931       (NOT (IF (CONSP X)
7932                (CONSP X)
7933                (IF (ACL2-NUMBERP X)
7934                    (ACL2-NUMBERP X)
7935                    (IF (SYMBOLP X)
7936                        (SYMBOLP X)
7937                        (IF (CHARACTERP X)
7938                            (CHARACTERP X)
7939                            (STRINGP X)))))))
7940
7941(DEFTHM BAD-ATOM-COMPOUND-RECOGNIZER
7942        (IFF (BAD-ATOM X)
7943             (NOT (IF (CONSP X)
7944                      (CONSP X)
7945                      (IF (ACL2-NUMBERP X)
7946                          (ACL2-NUMBERP X)
7947                          (IF (SYMBOLP X)
7948                              (SYMBOLP X)
7949                              (IF (CHARACTERP X)
7950                                  (CHARACTERP X)
7951                                  (STRINGP X))))))))
7952
7953(DEFAXIOM BOOLEANP-BAD-ATOM<=
7954          (IF (EQUAL (BAD-ATOM<= X Y) 'T)
7955              (EQUAL (BAD-ATOM<= X Y) 'T)
7956              (EQUAL (BAD-ATOM<= X Y) 'NIL)))
7957
7958(DEFAXIOM BAD-ATOM<=-ANTISYMMETRIC
7959          (IMPLIES (IF (BAD-ATOM X)
7960                       (IF (BAD-ATOM Y)
7961                           (IF (BAD-ATOM<= X Y)
7962                               (BAD-ATOM<= Y X)
7963                               'NIL)
7964                           'NIL)
7965                       'NIL)
7966                   (EQUAL X Y)))
7967
7968(DEFAXIOM BAD-ATOM<=-TRANSITIVE
7969          (IMPLIES (IF (BAD-ATOM<= X Y)
7970                       (IF (BAD-ATOM<= Y Z)
7971                           (IF (BAD-ATOM X)
7972                               (IF (BAD-ATOM Y) (BAD-ATOM Z) 'NIL)
7973                               'NIL)
7974                           'NIL)
7975                       'NIL)
7976                   (BAD-ATOM<= X Z)))
7977
7978(DEFAXIOM BAD-ATOM<=-TOTAL
7979          (IMPLIES (IF (BAD-ATOM X) (BAD-ATOM Y) 'NIL)
7980                   (IF (BAD-ATOM<= X Y)
7981                       (BAD-ATOM<= X Y)
7982                       (BAD-ATOM<= Y X))))
7983
7984(DEFUN
7985 ALPHORDER (X Y)
7986 (IF (RATIONALP X)
7987     (IF (RATIONALP Y) (NOT (< Y X)) 'T)
7988     (IF (RATIONALP Y)
7989         'NIL
7990         (IF (COMPLEX-RATIONALP X)
7991             (IF (COMPLEX-RATIONALP Y)
7992                 (IF (< (REALPART X) (REALPART Y))
7993                     (< (REALPART X) (REALPART Y))
7994                     (IF (= (REALPART X) (REALPART Y))
7995                         (NOT (< (IMAGPART Y) (IMAGPART X)))
7996                         'NIL))
7997                 'T)
7998             (IF (COMPLEX-RATIONALP Y)
7999                 'NIL
8000                 (IF (CHARACTERP X)
8001                     (IF (CHARACTERP Y)
8002                         (NOT (< (CHAR-CODE Y) (CHAR-CODE X)))
8003                         'T)
8004                     (IF (CHARACTERP Y)
8005                         'NIL
8006                         (IF (STRINGP X)
8007                             (IF (STRINGP Y)
8008                                 (IF (STRING<= X Y) 'T 'NIL)
8009                                 'T)
8010                             (IF (STRINGP Y)
8011                                 'NIL
8012                                 (IF (SYMBOLP X)
8013                                     (IF (SYMBOLP Y) (NOT (SYMBOL-< Y X)) 'T)
8014                                     (IF (SYMBOLP Y)
8015                                         'NIL
8016                                         (BAD-ATOM<= X Y))))))))))))
8017
8018(DEFUN LEXORDER (X Y)
8019       (IF (ATOM X)
8020           (IF (ATOM Y) (ALPHORDER X Y) 'T)
8021           (IF (ATOM Y)
8022               'NIL
8023               (IF (EQUAL (CAR X) (CAR Y))
8024                   (LEXORDER (CDR X) (CDR Y))
8025                   (LEXORDER (CAR X) (CAR Y))))))
8026
8027(DEFTHM ALPHORDER-REFLEXIVE (IMPLIES (NOT (CONSP X)) (ALPHORDER X X)))
8028
8029(DEFTHM ALPHORDER-TRANSITIVE
8030        (IMPLIES (IF (ALPHORDER X Y)
8031                     (IF (ALPHORDER Y Z)
8032                         (IF (NOT (CONSP X))
8033                             (IF (NOT (CONSP Y))
8034                                 (NOT (CONSP Z))
8035                                 'NIL)
8036                             'NIL)
8037                         'NIL)
8038                     'NIL)
8039                 (ALPHORDER X Z)))
8040
8041(DEFTHM ALPHORDER-ANTI-SYMMETRIC
8042        (IMPLIES (IF (NOT (CONSP X))
8043                     (IF (NOT (CONSP Y))
8044                         (IF (ALPHORDER X Y)
8045                             (ALPHORDER Y X)
8046                             'NIL)
8047                         'NIL)
8048                     'NIL)
8049                 (EQUAL X Y)))
8050
8051(DEFTHM ALPHORDER-TOTAL
8052        (IMPLIES (IF (NOT (CONSP X))
8053                     (NOT (CONSP Y))
8054                     'NIL)
8055                 (IF (ALPHORDER X Y)
8056                     (ALPHORDER X Y)
8057                     (ALPHORDER Y X))))
8058
8059(DEFTHM LEXORDER-REFLEXIVE (LEXORDER X X))
8060
8061(DEFTHM LEXORDER-ANTI-SYMMETRIC
8062        (IMPLIES (IF (LEXORDER X Y) (LEXORDER Y X) 'NIL)
8063                 (EQUAL X Y)))
8064
8065(DEFTHM LEXORDER-TRANSITIVE
8066        (IMPLIES (IF (LEXORDER X Y) (LEXORDER Y Z) 'NIL)
8067                 (LEXORDER X Z)))
8068
8069(DEFTHM LEXORDER-TOTAL (IF (LEXORDER X Y) (LEXORDER X Y) (LEXORDER Y X)))
8070
8071(DEFUN MERGE-LEXORDER (L1 L2 ACC)
8072       (IF (ENDP L1)
8073           (REVAPPEND ACC L2)
8074           (IF (ENDP L2)
8075               (REVAPPEND ACC L1)
8076               (IF (LEXORDER (CAR L1) (CAR L2))
8077                   (MERGE-LEXORDER (CDR L1)
8078                                   L2 (CONS (CAR L1) ACC))
8079                   (MERGE-LEXORDER L1 (CDR L2)
8080                                   (CONS (CAR L2) ACC))))))
8081
8082(DEFTHM TRUE-LISTP-MERGE-SORT-LEXORDER
8083        (IMPLIES (IF (TRUE-LISTP L1)
8084                     (TRUE-LISTP L2)
8085                     'NIL)
8086                 (TRUE-LISTP (MERGE-LEXORDER L1 L2 ACC))))
8087
8088(DEFUN MERGE-SORT-LEXORDER (L)
8089       (IF (ENDP (CDR L))
8090           L
8091           (MERGE-LEXORDER (MERGE-SORT-LEXORDER (EVENS L))
8092                           (MERGE-SORT-LEXORDER (ODDS L))
8093                           'NIL)))
8094
8095(DEFUN IF* (X Y Z) (IF X Y Z))
8096
8097(DEFUN RESIZE-LIST (LST N DEFAULT-VALUE)
8098       (IF (IF (INTEGERP N) (< '0 N) 'NIL)
8099           (CONS (IF (ATOM LST) DEFAULT-VALUE (CAR LST))
8100                 (RESIZE-LIST (IF (ATOM LST) LST (CDR LST))
8101                              (BINARY-+ '-1 N)
8102                              DEFAULT-VALUE))
8103           'NIL))
8104
8105(DEFUN
8106   E/D-FN (THEORY E/D-LIST ENABLE-P)
8107   (IF (ATOM E/D-LIST)
8108       THEORY
8109       (IF ENABLE-P
8110           (E/D-FN (CONS 'UNION-THEORIES
8111                         (CONS THEORY
8112                               (CONS (CONS 'QUOTE (CONS (CAR E/D-LIST) 'NIL))
8113                                     'NIL)))
8114                   (CDR E/D-LIST)
8115                   'NIL)
8116           (E/D-FN (CONS 'SET-DIFFERENCE-THEORIES
8117                         (CONS THEORY
8118                               (CONS (CONS 'QUOTE (CONS (CAR E/D-LIST) 'NIL))
8119                                     'NIL)))
8120                   (CDR E/D-LIST)
8121                   'T))))
8122
8123(DEFUN MOD-EXPT (BASE EXP MOD) (MOD (EXPT BASE EXP) MOD))
8124
8125(DEFUN CONJOIN2 (T1 T2)
8126       (IF (EQUAL T1 ''NIL)
8127           ''NIL
8128           (IF (EQUAL T2 ''NIL)
8129               ''NIL
8130               (IF (EQUAL T1 ''T)
8131                   T2
8132                   (IF (EQUAL T2 ''T)
8133                       T1
8134                       (CONS 'IF
8135                             (CONS T1 (CONS T2 (CONS ''NIL 'NIL)))))))))
8136
8137(DEFUN CONJOIN (L)
8138       (IF (ENDP L)
8139           ''T
8140           (IF (ENDP (CDR L))
8141               (CAR L)
8142               (CONJOIN2 (CAR L) (CONJOIN (CDR L))))))
8143
8144(DEFUN DISJOIN2 (T1 T2)
8145       (IF (EQUAL T1 ''T)
8146           ''T
8147           (IF (EQUAL T2 ''T)
8148               ''T
8149               (IF (EQUAL T1 ''NIL)
8150                   T2
8151                   (IF (EQUAL T2 ''NIL)
8152                       T1
8153                       (CONS 'IF
8154                             (CONS T1 (CONS ''T (CONS T2 'NIL)))))))))
8155
8156(DEFUN DISJOIN (LST)
8157       (IF (ENDP LST)
8158           ''NIL
8159           (IF (ENDP (CDR LST))
8160               (CAR LST)
8161               (DISJOIN2 (CAR LST)
8162                         (DISJOIN (CDR LST))))))
8163
8164(DEFUN DISJOIN-LST (CLAUSE-LIST)
8165       (IF (ENDP CLAUSE-LIST)
8166           'NIL
8167           (CONS (DISJOIN (CAR CLAUSE-LIST))
8168                 (DISJOIN-LST (CDR CLAUSE-LIST)))))
8169
8170(DEFUN CONJOIN-CLAUSES (CLAUSE-LIST) (CONJOIN (DISJOIN-LST CLAUSE-LIST)))
8171
8172(DEFUN CLAUSES-RESULT (TUPLE)
8173       (IF (CAR TUPLE)
8174           (CONS 'NIL 'NIL)
8175           (CAR (CDR TUPLE))))
8176
8177(DEFUN
8178    SPLICE-KEYWORD-ALIST
8179    (KEY NEW-SEGMENT KEYWORD-ALIST)
8180    (IF (ENDP KEYWORD-ALIST)
8181        'NIL
8182        (IF (EQ KEY (CAR KEYWORD-ALIST))
8183            (BINARY-APPEND NEW-SEGMENT (CDR (CDR KEYWORD-ALIST)))
8184            (CONS (CAR KEYWORD-ALIST)
8185                  (CONS (CAR (CDR KEYWORD-ALIST))
8186                        (SPLICE-KEYWORD-ALIST KEY NEW-SEGMENT
8187                                              (CDR (CDR KEYWORD-ALIST))))))))
8188
8189(DEFUN
8190 SEARCH-FN-GUARD
8191 (SEQ1 SEQ2 FROM-END TEST
8192       START1 START2 END1 END2 END1P END2P)
8193 (IF
8194  (IF
8195   (NOT (MEMBER-EQ TEST '(EQUAL CHAR-EQUAL)))
8196   (HARD-ERROR
8197    'SEARCH
8198    '"For the macro ~x0, only the :test values ~x1 and ~x2 are ~
8199                   supported; ~x3 is not.  If you need other tests supported, ~
8200                   please contact the ACL2 implementors."
8201    (CONS (CONS '#\0 'SEARCH)
8202          (CONS (CONS '#\1 'EQUAL)
8203                (CONS (CONS '#\2 'CHAR-EQUAL)
8204                      (CONS (CONS '#\3 TEST) 'NIL)))))
8205   (IF
8206    (IF (STRINGP SEQ1) (STRINGP SEQ2) 'NIL)
8207    (IF
8208     (IF (STANDARD-CHAR-LISTP (COERCE SEQ1 'LIST))
8209         (STANDARD-CHAR-LISTP (COERCE SEQ2 'LIST))
8210         'NIL)
8211     (IF (STANDARD-CHAR-LISTP (COERCE SEQ1 'LIST))
8212         (STANDARD-CHAR-LISTP (COERCE SEQ2 'LIST))
8213         'NIL)
8214     (HARD-ERROR
8215      'SEARCH
8216      '"When ~x0 is called on two strings, they must both ~
8217                       consist of standard characters.  However, this is not ~
8218                       the case for ~x1."
8219      (CONS (CONS '#\0 'SEARCH)
8220            (CONS (CONS '#\1
8221                        (IF (STANDARD-CHAR-LISTP (COERCE SEQ1 'LIST))
8222                            SEQ2 SEQ1))
8223                  'NIL))))
8224    (IF
8225     (EQ TEST 'CHAR-EQUAL)
8226     (HARD-ERROR
8227      'SEARCH
8228      '"For the macro ~x0, the :test ~x1 is only supported for ~
8229                   string arguments.  If you need this test supported for ~
8230                   true lists, please contact the ACL2 implementors."
8231      (CONS (CONS '#\0 'SEARCH)
8232            (CONS (CONS '#\1 'CHAR-EQUAL) 'NIL)))
8233     (IF
8234      (IF (TRUE-LISTP SEQ1)
8235          (TRUE-LISTP SEQ2)
8236          'NIL)
8237      'T
8238      (HARD-ERROR
8239       'SEARCH
8240       '"The first two arguments of ~x0 must both evaluate to true ~
8241                   lists or must both evaluate to strings."
8242       (CONS (CONS '#\0 'SEARCH) 'NIL))))))
8243  ((LAMBDA (END1 END2 SEQ2 SEQ1 START2 START1)
8244           (IF (NATP START1)
8245               (IF (NATP START2)
8246                   (IF (NATP END1)
8247                       (IF (NATP END2)
8248                           (IF (NOT (< END1 START1))
8249                               (IF (NOT (< END2 START2))
8250                                   (IF (NOT (< (LENGTH SEQ1) END1))
8251                                       (NOT (< (LENGTH SEQ2) END2))
8252                                       'NIL)
8253                                   'NIL)
8254                               'NIL)
8255                           'NIL)
8256                       'NIL)
8257                   'NIL)
8258               'NIL))
8259   (IF END1P END1 (LENGTH SEQ1))
8260   (IF END2P END2 (LENGTH SEQ2))
8261   SEQ2 SEQ1 START2 START1)
8262  'NIL))
8263
8264(DEFUN SEARCH-FROM-START
8265       (SEQ1 SEQ2 START2 END2)
8266       ((LAMBDA (BOUND2 SEQ2 SEQ1 START2 END2)
8267                (IF (IF (NOT (INTEGERP END2))
8268                        (NOT (INTEGERP END2))
8269                        (NOT (INTEGERP START2)))
8270                    'NIL
8271                    (IF (EQUAL SEQ1 (SUBSEQ SEQ2 START2 BOUND2))
8272                        START2
8273                        (IF (NOT (< BOUND2 END2))
8274                            'NIL
8275                            (SEARCH-FROM-START SEQ1 SEQ2 (BINARY-+ '1 START2)
8276                                               END2)))))
8277        (BINARY-+ START2 (LENGTH SEQ1))
8278        SEQ2 SEQ1 START2 END2))
8279
8280(DEFUN
8281 SEARCH-FROM-END
8282 (SEQ1 SEQ2 START2 END2 ACC)
8283 (IF
8284  (IF (NOT (INTEGERP END2))
8285      (NOT (INTEGERP END2))
8286      (NOT (INTEGERP START2)))
8287  'NIL
8288  ((LAMBDA
8289        (BOUND2 ACC END2 START2 SEQ2 SEQ1)
8290        ((LAMBDA (MATCHP BOUND2 END2 SEQ1 SEQ2 ACC START2)
8291                 ((LAMBDA (NEW-ACC START2 SEQ2 SEQ1 END2 BOUND2)
8292                          (IF (NOT (< BOUND2 END2))
8293                              NEW-ACC
8294                              (SEARCH-FROM-END SEQ1 SEQ2 (BINARY-+ '1 START2)
8295                                               END2 NEW-ACC)))
8296                  (IF MATCHP START2 ACC)
8297                  START2 SEQ2 SEQ1 END2 BOUND2))
8298         (EQUAL SEQ1 (SUBSEQ SEQ2 START2 BOUND2))
8299         BOUND2 END2 SEQ1 SEQ2 ACC START2))
8300   (BINARY-+ START2 (LENGTH SEQ1))
8301   ACC END2 START2 SEQ2 SEQ1)))
8302
8303(DEFUN
8304 SEARCH-FN
8305 (SEQ1 SEQ2 FROM-END TEST
8306       START1 START2 END1 END2 END1P END2P)
8307 ((LAMBDA
8308   (END1 SEQ1 START1
8309         START2 FROM-END TEST SEQ2 END2 END2P)
8310   ((LAMBDA
8311     (END2 TEST
8312           SEQ2 FROM-END START2 END1 START1 SEQ1)
8313     ((LAMBDA
8314       (SEQ1 END2
8315             START2 END1 START1 FROM-END SEQ2 TEST)
8316       ((LAMBDA (MV FROM-END START1 END1 START2 END2)
8317                ((LAMBDA (SEQ1 SEQ2 FROM-END START1 END1 START2 END2)
8318                         (IF (NOT (< (BINARY-+ END2 (UNARY-- START2))
8319                                     (BINARY-+ END1 (UNARY-- START1))))
8320                             (IF FROM-END
8321                                 (SEARCH-FROM-END SEQ1 SEQ2 START2 END2 'NIL)
8322                                 (SEARCH-FROM-START SEQ1 SEQ2 START2 END2))
8323                             'NIL))
8324                 (MV-NTH '0 MV)
8325                 (MV-NTH '1 MV)
8326                 FROM-END START1 END1 START2 END2))
8327        (IF (EQ TEST 'CHAR-EQUAL)
8328            (CONS (STRING-DOWNCASE SEQ1)
8329                  (CONS (STRING-DOWNCASE SEQ2) 'NIL))
8330            (CONS SEQ1 (CONS SEQ2 'NIL)))
8331        FROM-END START1 END1 START2 END2))
8332      (SUBSEQ SEQ1 START1 END1)
8333      END2
8334      START2 END1 START1 FROM-END SEQ2 TEST))
8335    (IF END2P END2 (LENGTH SEQ2))
8336    TEST
8337    SEQ2 FROM-END START2 END1 START1 SEQ1))
8338  (IF END1P END1 (LENGTH SEQ1))
8339  SEQ1 START1
8340  START2 FROM-END TEST SEQ2 END2 END2P))
8341
8342(DEFUN TIME$-LOGIC (REAL-MINTIME RUN-MINTIME MINALLOC MSG ARGS X) X)
8343
8344(DEFUN GC$-FN (ARGS) 'NIL)
8345
8346(DEFUN GET-WORMHOLE-STATUS (NAME STATE) (READ-ACL2-ORACLE STATE))
8347
8348(ENCAP ((TOO-MANY-IFS-POST-REWRITE-WRAPPER 2)))
8349
8350(DEFUN TOO-MANY-IFS-POST-REWRITE-PRELIM (ARGS VAL) 'NIL)
8351