File: defpkgs.lisp

package info (click to toggle)
acl2 4.0-3
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 64,016 kB
  • ctags: 78,502
  • sloc: lisp: 816,995; makefile: 3,297; sh: 1,630; perl: 1,141; ansic: 358; cpp: 245; csh: 125; java: 12
file content (477 lines) | stat: -rw-r--r-- 26,779 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
; ACL2 Version 4.0 -- A Computational Logic for Applicative Common Lisp
; Copyright (C) 2010  University of Texas at Austin

; This version of ACL2 is a descendent of ACL2 Version 1.9, Copyright
; (C) 1997 Computational Logic, Inc.  See the documentation topic NOTE-2-0.

; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.

; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
; GNU General Public License for more details.

; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

; Written by:  Matt Kaufmann               and J Strother Moore
; email:       Kaufmann@cs.utexas.edu      and Moore@cs.utexas.edu
; Department of Computer Sciences
; University of Texas at Austin
; Austin, TX 78712-1188 U.S.A.

; This file, defpkgs.lisp, illustrates the idea that defpkg forms
; should be off in files all by themselves.  We require defpkg forms
; to be in files all by themselves to support the compilation of
; files.  Files with defpkg forms should only be loaded, never
; compiled.  Of course, during the compilation of other files, it will
; be necessary for defpkg files to be loaded at the appropriate time.
; The idea of putting defpkg forms in separate files is in the spirit
; of the CLTL2 idea of putting DEFPACKAGE forms in separate files.  By
; keeping package creation separate from compilation, one avoids many
; pitfalls and inconsistencies between Common Lisp implementations.

(in-package "ACL2")

; Someday we may choose to give a more careful treatment to the issue of
; providing handy lists of symbols to export from the ACL2 package.  The
; constant *acl2-exports* below is a rough, but perhaps adequate, first cut.
; The following forms allow us to create some other lists, based on what is
; currently documentated.  Our thought is that the set of currently documented
; topics has some correspondence with what one may want to export from ACL2,
; but for now we provide this utility only as a comment.

#||
(verify-termination symbol-class)

(defun member-eq-t (a lst)
  (or (eq lst t)
      (member-eq a lst)))

(defun filter-topics
  (in-sections out-sections mode doc-alist wrld acc)
  (declare (xargs :guard (and (member-eq mode '(:logic :program
                                                       ;; nil for non-functions
                                                       nil))
                              (or (eq in-sections t)
                                  (symbol-listp in-sections))
                              (symbol-listp out-sections))
                  :verify-guards nil))

; Need to compile this.

  (cond
   ((endp doc-alist) acc)
   ((and (symbolp (caar doc-alist))
         (not (equal (symbol-package-name (caar doc-alist)) "ACL2-PC"))
         (member-eq-t (cadr (car doc-alist)) in-sections)
         (not (member-eq (cadr (car doc-alist)) out-sections))
         (let ((fn-symb-p (function-symbolp (caar doc-alist) wrld)))
           (cond ((eq mode :logic)
                  (if fn-symb-p
                      (eq (fdefun-mode (caar doc-alist) wrld) :logic)
                    (or (getprop (caar doc-alist) 'macro-body nil 'current-acl2-world wrld)
                        (getprop (caar doc-alist) 'const nil 'current-acl2-world wrld))))
                 ((eq mode :program)
                  ;; really means "all but logic"
                  (and fn-symb-p
                       (eq (fdefun-mode (caar doc-alist) wrld) :program)))
                 (t
                  ;; topics other than functions, macros, and constants
                  (not (or (getprop (caar doc-alist) 'macro-body nil 'current-acl2-world wrld)
                           (getprop (caar doc-alist) 'const nil 'current-acl2-world wrld)
                           fn-symb-p))))))
    (filter-topics in-sections out-sections mode (cdr doc-alist) wrld
                   (cons (caar doc-alist) acc)))
   (t
    (filter-topics in-sections out-sections mode (cdr doc-alist) wrld acc))))

(comp 'filter-topics)

; Now consider the following table (`P' is "Programming", `A' is "Arrays").
; "In" lists doc sections that we may want included, while "Out" lists those
; to be excluded.  Mode :logic is what we may want to export if we choose to
; stay in defun-mode :logic; :program is what is left.

; In    Out  Mode
; P,A   ()   :logic
; P,A   ()   :program
; P,A   ()   nil
; T     P,A  :logic
; T     P,A  :program
; T     P,A  nil

Thus we have:

In    Out  Mode
P,A   ()   :logic
(filter-topics '(programming arrays) nil :logic
               (global-val 'documentation-alist (w state)) (w state) nil)

In    Out  Mode
P,A   ()   :program
(filter-topics '(programming arrays) nil :program
               (global-val 'documentation-alist (w state)) (w state) nil)

In    Out  Mode
P,A   ()   :logic
(filter-topics '(programming arrays) nil nil
               (global-val 'documentation-alist (w state)) (w state) nil)

In    Out  Mode
T     P,A  :logic

(filter-topics t '(programming arrays) :logic
               (global-val 'documentation-alist (w state)) (w state) nil)

In    Out  Mode
T     P,A  :program
(filter-topics t '(programming arrays) :program
               (global-val 'documentation-alist (w state)) (w state) nil)

In    Out  Mode
T     P,A  nil
(filter-topics t '(programming arrays) nil
               (global-val 'documentation-alist (w state)) (w state) nil)
||#

; The following ``policy'' was used to determine this setting of *acl2-exports*.
; First, if the user wishes to program in ACL2, he or she will import
; *common-lisp-symbols-from-main-lisp-package* in addition to *acl2-exports*.
; So this list was set primarily with theorem proving in mind.

; Prior to ACL2 Version_2.4, the list was short.  It contained 55 symbols.
; Before the release of ACL2 Version_2.5 we added symbols to the list.  The
; symbols added were, in some cases dependent on the :DOC topics as of
; 2.5.

; (a) all :logic mode functions
; (b) most of the symbols users had imported into packages in books/,
; (c) selected :program mode functions with :DOC topics,
; (d) all macros with :DOC topics,
; (e) selected constants with :DOC topics,
; (f) certain other constants
; (g) symbols used to write defuns and theorems, gathered by looking
;     at the documentation for DECLARE, HINTS, RULE-CLASSES, MACROS

; This is still not very systematic, because there is a fundamental
; tension: if we make it conveniently large we import symbols the user
; might wish to define.

(defconst *acl2-exports*

; Let's keep this list sorted (more efficient for defpkg when users choose to
; import these symbols, to avoid having to sort it then).

  (sort-symbol-listp
   (append
    *hons-primitives* ; even for non-hons version, for compatibility of the two
    '(& &ALLOW-OTHER-KEYS &AUX &BODY &KEY &OPTIONAL &REST &WHOLE *
        *ACL2-EXPORTS* *COMMON-LISP-SPECIALS-AND-CONSTANTS*
        *COMMON-LISP-SYMBOLS-FROM-MAIN-LISP-PACKAGE* *MAIN-LISP-PACKAGE-NAME*
        *STANDARD-CHARS* *STANDARD-CI* *STANDARD-CO* *STANDARD-OI* + - / /= 1+
        1- 32-BIT-INTEGER-LISTP 32-BIT-INTEGER-LISTP-FORWARD-TO-INTEGER-LISTP
        32-BIT-INTEGER-STACK 32-BIT-INTEGER-STACK-LENGTH
        32-BIT-INTEGER-STACK-LENGTH1 32-BIT-INTEGERP
        32-BIT-INTEGERP-FORWARD-TO-INTEGERP < <-ON-OTHERS <= = > >= ?-FN @
        ABORT! ABS ACCUMULATED-PERSISTENCE ACL2-COUNT
        ACL2-INPUT-CHANNEL-PACKAGE ACL2-NUMBERP ACL2-ORACLE
        ACL2-OUTPUT-CHANNEL-PACKAGE ACL2-PACKAGE ACONS ACTIVE-RUNEP ADD-BINOP
        ADD-DEFAULT-HINTS ADD-DEFAULT-HINTS! ADD-INVISIBLE-FNS ADD-MACRO-ALIAS
        ADD-NTH-ALIAS ADD-PAIR ADD-PAIR-PRESERVES-ALL-BOUNDP ADD-TIMERS
        ADD-TO-SET-EQ ADD-TO-SET-EQL ADD-TO-SET-EQUAL ALISTP
        ALISTP-FORWARD-TO-TRUE-LISTP ALL-BOUNDP ALL-BOUNDP-PRESERVES-ASSOC
        ALL-VARS ALL-VARS1 ALL-VARS1-LST ALPHA-CHAR-P
        ALPHA-CHAR-P-FORWARD-TO-CHARACTERP AND AND-MACRO APPEND
        AREF-32-BIT-INTEGER-STACK AREF-T-STACK AREF1 AREF2 ARGS ARRAY1P
        ARRAY1P-CONS ARRAY1P-FORWARD ARRAY1P-LINEAR ARRAY2P ARRAY2P-CONS
        ARRAY2P-FORWARD ARRAY2P-LINEAR ASET-32-BIT-INTEGER-STACK ASET-T-STACK
        ASET1 ASET2 ASH ASSERT$ ASSIGN ASSOC ASSOC-ADD-PAIR ASSOC-EQ
        ASSOC-EQ-EQUAL ASSOC-EQ-EQUAL-ALISTP ASSOC-EQUAL ASSOC-KEYWORD
        ASSOC-STRING-EQUAL ASSOC2 ASSOCIATIVITY-OF-* ASSOCIATIVITY-OF-+ ASSUME
        ATOM ATOM-LISTP ATOM-LISTP-FORWARD-TO-TRUE-LISTP BIG-CLOCK-ENTRY
        BIG-CLOCK-NEGATIVE-P BINARY-* BINARY-+ BINARY-APPEND BIND-FREE
        BINOP-TABLE BIT BOOLEAN-LISTP BOOLEAN-LISTP-CONS BOOLEAN-LISTP-FORWARD
        BOOLEAN-LISTP-FORWARD-TO-SYMBOL-LISTP BOOLEANP BOOLEANP-CHARACTERP
        BOOLEANP-COMPOUND-RECOGNIZER BOUNDED-INTEGER-ALISTP
        BOUNDED-INTEGER-ALISTP-FORWARD-TO-EQLABLE-ALISTP
        BOUNDED-INTEGER-ALISTP2 BOUNDP-GLOBAL BOUNDP-GLOBAL1 BRR BRR@
        BUILD-STATE1 BUTLAST CAAAAR CAAADR CAAAR CAADAR CAADDR CAADR CAAR
        CADAAR CADADR CADAR CADDAR CADDDR CADDR CADR CAR CAR-CDR-ELIM CAR-CONS
        CASE CASE-LIST CASE-LIST-CHECK CASE-MATCH CASE-SPLIT CASE-TEST CBD
        CDAAAR CDAADR CDAAR CDADAR CDADDR CDADR CDAR CDDAAR CDDADR CDDAR
        CDDDAR CDDDDR CDDDR CDDR CDR CDR-CONS CDRN CEILING CERTIFY-BOOK
        CERTIFY-BOOK! CHAR CHAR-CODE CHAR-CODE-CODE-CHAR-IS-IDENTITY
        CHAR-CODE-LINEAR CHAR-DOWNCASE CHAR-EQUAL CHAR-UPCASE CHAR< CHAR<=
        CHAR> CHAR>= CHARACTER CHARACTER-LISTP CHARACTER-LISTP-APPEND
        CHARACTER-LISTP-COERCE CHARACTER-LISTP-FORWARD-TO-EQLABLE-LISTP
        CHARACTER-LISTP-REMOVE-DUPLICATES-EQL CHARACTER-LISTP-REVAPPEND
        CHARACTER-LISTP-STRING-DOWNCASE-1 CHARACTER-LISTP-STRING-UPCASE1-1
        CHARACTERP CHARACTERP-CHAR-DOWNCASE CHARACTERP-CHAR-UPCASE
        CHARACTERP-NTH CHARACTERP-PAGE CHARACTERP-RUBOUT CHARACTERP-TAB
        CHECK-VARS-NOT-FREE CHECKPOINT-FORCED-GOALS CLAUSE CLOSE-INPUT-CHANNEL
        CLOSE-OUTPUT-CHANNEL CLOSE-TRACE-FILE
        CLOSURE CODE-CHAR CODE-CHAR-CHAR-CODE-IS-IDENTITY
        CODE-CHAR-TYPE COERCE COERCE-INVERSE-1 COERCE-INVERSE-2
        COERCE-OBJECT-TO-STATE COERCE-STATE-TO-OBJECT COMMUTATIVITY-OF-*
        COMMUTATIVITY-OF-+ COMP COMPLETION-OF-* COMPLETION-OF-+
        COMPLETION-OF-< COMPLETION-OF-CAR COMPLETION-OF-CDR
        COMPLETION-OF-CHAR-CODE COMPLETION-OF-CODE-CHAR COMPLETION-OF-COERCE
        COMPLETION-OF-COMPLEX COMPLETION-OF-DENOMINATOR COMPLETION-OF-IMAGPART
        COMPLETION-OF-INTERN-IN-PACKAGE-OF-SYMBOL COMPLETION-OF-NUMERATOR
        COMPLETION-OF-REALPART COMPLETION-OF-SYMBOL-NAME
        COMPLETION-OF-SYMBOL-PACKAGE-NAME COMPLETION-OF-UNARY-/
        COMPLETION-OF-UNARY-MINUS COMPLEX COMPLEX-0 COMPLEX-DEFINITION
        COMPLEX-EQUAL COMPLEX-IMPLIES1 COMPLEX-RATIONALP COMPRESS1 COMPRESS11
        COMPRESS2 COMPRESS21 COMPRESS211 CONCATENATE COND COND-CLAUSESP
        COND-MACRO CONJUGATE CONS CONS-EQUAL CONSP CONSP-ASSOC CONSP-ASSOC-EQ
        CURRENT-PACKAGE CURRENT-THEORY CW CW-GSTACK DECLARE
        DECREMENT-BIG-CLOCK DEFABBREV DEFAULT DEFAULT-*-1 DEFAULT-*-2
        DEFAULT-+-1 DEFAULT-+-2 DEFAULT-<-1 DEFAULT-<-2 DEFAULT-CAR
        DEFAULT-CDR DEFAULT-CHAR-CODE DEFAULT-COERCE-1 DEFAULT-COERCE-2
        DEFAULT-COERCE-3 DEFAULT-COMPILE-FNS DEFAULT-COMPLEX-1
        DEFAULT-COMPLEX-2 DEFAULT-DEFUN-MODE DEFAULT-DEFUN-MODE-FROM-STATE
        DEFAULT-DENOMINATOR DEFAULT-IMAGPART DEFAULT-MEASURE-FUNCTION
        DEFAULT-NUMERATOR DEFAULT-REALPART DEFAULT-SYMBOL-NAME
        DEFAULT-SYMBOL-PACKAGE-NAME DEFAULT-UNARY-/ DEFAULT-UNARY-MINUS
        DEFAULT-VERIFY-GUARDS-EAGERNESS DEFAULT-WELL-FOUNDED-RELATION DEFAXIOM
        DEFCHOOSE DEFCONG DEFCONST DEFDOC DEFEQUIV DEFEVALUATOR DEFEXEC
        DEFINE-PC-ATOMIC-MACRO DEFINE-PC-HELP DEFINE-PC-MACRO DEFLABEL
        DEFMACRO DEFPKG DEFREFINEMENT DEFSTOBJ DEFSTUB DEFTHEORY DEFTHM
        DEFTHMD DEFTTAG
        DEFUN DEFUN-NX DEFUN-SK DEFUND DEFUND-NX DEFUNS
        DELETE-PAIR DENOMINATOR
        DIGIT-CHAR-P DIGIT-TO-CHAR DIMENSIONS DISABLE DISABLE-FORCING
        DISABLEDP DISTRIBUTIVITY DOC DOC! DOCS DOUBLE-REWRITE DUPLICATES E/D
        E0-ORD-< E0-ORDINALP EC-CALL EIGHTH ELIMINATE-DESTRUCTORS
        ELIMINATE-IRRELEVANCE ENABLE ENABLE-FORCING ENCAPSULATE ENDP EQ EQL
        EQLABLE-ALISTP EQLABLE-ALISTP-FORWARD-TO-ALISTP EQLABLE-LISTP
        EQLABLE-LISTP-FORWARD-TO-ATOM-LISTP EQLABLEP EQLABLEP-RECOG EQUAL
        EQUAL-CHAR-CODE ER ER-PROGN ER-PROGN-FN EVENP EVENS EVENT
        EXECUTABLE-COUNTERPART-THEORY EXPLODE-ATOM EXPLODE-NONNEGATIVE-INTEGER
        EXPT EXPT-TYPE-PRESCRIPTION-NON-ZERO-BASE EXTEND-32-BIT-INTEGER-STACK
        EXTEND-T-STACK EXTEND-WORLD EXTRA-INFO FERTILIZE FGETPROP FIFTH
        FILE-CLOCK FILE-CLOCK-P FILE-CLOCK-P-FORWARD-TO-INTEGERP FIRST
        FIRST-N-AC FIX FIX-TRUE-LIST FLOOR FMS FMT FMT-TO-COMMENT-WINDOW FMT1
        FORCE FOURTH FUNCTION-SYMBOLP FUNCTION-THEORY GENERALIZE GET-GLOBAL
        GET-TIMER GETPROP-DEFAULT GETPROPS GETPROPS1 GLOBAL-TABLE
        GLOBAL-TABLE-CARS GLOBAL-TABLE-CARS1 GLOBAL-VAL GOOD-BYE
        GRANULARITY ; for parallelism primitives
        GROUND-ZERO HARD-ERROR HAS-PROPSP HAS-PROPSP1 HEADER HELP HIDE
        I-AM-HERE ID IDATES IDENTITY IF IF* IFF IFF-IMPLIES-EQUAL-IMPLIES-1
        IFF-IMPLIES-EQUAL-IMPLIES-2 IFF-IMPLIES-EQUAL-NOT
        IFF-IS-AN-EQUIVALENCE IFIX IGNORE ILLEGAL IMAGPART IMAGPART-COMPLEX
        IMMEDIATE-FORCE-MODEP IMPLIES IMPROPER-CONSP IN-ARITHMETIC-THEORY
        IN-PACKAGE IN-THEORY INCLUDE-BOOK INCOMPATIBLE INCREMENT-TIMER INDUCT
        INT= INTEGER INTEGER-0 INTEGER-1 INTEGER-ABS INTEGER-IMPLIES-RATIONAL
        INTEGER-LENGTH INTEGER-LISTP INTEGER-LISTP-FORWARD-TO-RATIONAL-LISTP
        INTEGER-STEP INTEGERP INTERN INTERN$ INTERN-IN-PACKAGE-OF-SYMBOL
        INTERN-IN-PACKAGE-OF-SYMBOL-SYMBOL-NAME INTERSECTION-EQ
        INTERSECTION-THEORIES INTERSECTP-EQ INTERSECTP-EQUAL INVERSE-OF-*
        INVERSE-OF-+ INVISIBLE-FNS-TABLE KEYWORD-PACKAGE KEYWORD-VALUE-LISTP
        KEYWORD-VALUE-LISTP-ASSOC-KEYWORD
        KEYWORD-VALUE-LISTP-FORWARD-TO-TRUE-LISTP KEYWORDP
        KEYWORDP-FORWARD-TO-SYMBOLP KNOWN-PACKAGE-ALIST KNOWN-PACKAGE-ALISTP
        KNOWN-PACKAGE-ALISTP-FORWARD-TO-TRUE-LIST-LISTP-AND-ALISTP LAMBDA LAST
        LD LD-ERROR-ACTION LD-ERROR-TRIPLES LD-KEYWORD-ALIASES
        LD-POST-EVAL-PRINT LD-PRE-EVAL-FILTER LD-PRE-EVAL-PRINT LD-PROMPT
        LD-QUERY-CONTROL-ALIST LD-REDEFINITION-ACTION LD-SKIP-PROOFSP
        LD-VERBOSE LEGAL-CASE-CLAUSESP LEN LEN-UPDATE-NTH LENGTH
        LET* LIST LIST* LIST*-MACRO LIST-ALL-PACKAGE-NAMES
        LIST-ALL-PACKAGE-NAMES-LST
        LIST-MACRO LISTP LOCAL LOGAND LOGANDC1 LOGANDC2 LOGBITP LOGCOUNT
        LOGEQV LOGIC LOGIOR LOGNAND LOGNOR LOGNOT LOGORC1 LOGORC2 LOGTEST
        LOGXOR LOWER-CASE-P LOWER-CASE-P-CHAR-DOWNCASE
        LOWER-CASE-P-FORWARD-TO-ALPHA-CHAR-P LOWEST-TERMS LP MACRO-ALIASES
        MAIN-TIMER MAIN-TIMER-TYPE-PRESCRIPTION MAKE-CHARACTER-LIST
        MAKE-CHARACTER-LIST-MAKE-CHARACTER-LIST MAKE-EVENT MAKE-FMT-BINDINGS
        MAKE-INPUT-CHANNEL MAKE-LIST MAKE-LIST-AC MAKE-MV-NTHS MAKE-ORD
        MAKE-OUTPUT-CHANNEL MAKE-VAR-LST MAKE-VAR-LST1 MAKUNBOUND-GLOBAL MAX
        MAXIMUM-LENGTH MAY-NEED-SLASHES MBE MBT MEMBER MEMBER-EQ MEMBER-EQUAL
        MEMBER-SYMBOL-NAME MFC MIN MINIMAL-THEORY MINUSP MOD MONITOR
        MONITORED-RUNES MORE MORE! MORE-DOC MUTUAL-RECURSION
        MUTUAL-RECURSION-GUARDP MV MV-LET MV-LIST MV-NTH NATP NEEDS-SLASHES
        NEWLINE NFIX NIL NIL-IS-NOT-CIRCULAR NINTH
        NO-DUPLICATESP NO-DUPLICATESP-EQUAL
        NONNEGATIVE-INTEGER-QUOTIENT NONNEGATIVE-PRODUCT NONZERO-IMAGPART NOT
        NQTHM-TO-ACL2 NTH NTH-0-CONS NTH-0-READ-RUN-TIME-TYPE-PRESCRIPTION
        NTH-ADD1 NTH-ALIASES NTH-UPDATE-NTH NTHCDR NULL NUMERATOR O-FINP
        O-FIRST-COEFF O-FIRST-EXPT O-INFP O-P O-RST O< O<= O> O>= OBSERVATION
        ODDP ODDS OK-IF OOPS OPEN-CHANNEL-LISTP OPEN-CHANNEL1
        OPEN-CHANNEL1-FORWARD-TO-TRUE-LISTP-AND-CONSP OPEN-CHANNELS-P
        OPEN-CHANNELS-P-FORWARD OPEN-INPUT-CHANNEL OPEN-INPUT-CHANNEL-ANY-P
        OPEN-INPUT-CHANNEL-ANY-P1 OPEN-INPUT-CHANNEL-P OPEN-INPUT-CHANNEL-P1
        OPEN-INPUT-CHANNELS OPEN-OUTPUT-CHANNEL OPEN-OUTPUT-CHANNEL!
        OPEN-OUTPUT-CHANNEL-ANY-P OPEN-OUTPUT-CHANNEL-ANY-P1
        OPEN-OUTPUT-CHANNEL-P OPEN-OUTPUT-CHANNEL-P1 OPEN-OUTPUT-CHANNELS
        OPEN-TRACE-FILE OR
        OR-MACRO ORDERED-SYMBOL-ALISTP ORDERED-SYMBOL-ALISTP-ADD-PAIR
        ORDERED-SYMBOL-ALISTP-ADD-PAIR-FORWARD
        ORDERED-SYMBOL-ALISTP-FORWARD-TO-SYMBOL-ALISTP
        ORDERED-SYMBOL-ALISTP-GETPROPS ORDERED-SYMBOL-ALISTP-REMOVE-FIRST-PAIR
        OTHERWISE OUR-DIGIT-CHAR-P PAIRLIS$ PAIRLIS2 PAND PARGS PBT PC PCB PCB!
        PCS PE PEEK-CHAR$ PF PL PLET PLUSP POP-TIMER POR POSITION POSITION-AC
        POSITION-EQ POSITION-EQ-AC POSITION-EQUAL POSITION-EQUAL-AC POSITIVE POSP
        POWER-EVAL PPROGN PR PR! PREPROCESS PRIN1$ PRIN1-WITH-SLASHES
        PRIN1-WITH-SLASHES1 PRINC$ PRINT-GV PRINT-OBJECT$
        PRINT-RATIONAL-AS-DECIMAL
        PRINT-TIMER PROG2$ PROGN PROGRAM PROOF-TREE PROOFS-CO PROPER-CONSP
        PROPS PROVE PSEUDO-TERM-LISTP PSEUDO-TERM-LISTP-FORWARD-TO-TRUE-LISTP
        PSEUDO-TERMP PSTACK PUFF PUFF* PUSH-TIMER PUSH-UNTOUCHABLE
        PUT-ASSOC-EQ PUT-ASSOC-EQUAL PUT-GLOBAL PUTPROP QUOTE QUOTEP
        R-EQLABLE-ALISTP RASSOC RASSOC-EQ RASSOC-EQUAL RATIO RATIONAL
        RATIONAL-IMPLIES1 RATIONAL-IMPLIES2 RATIONAL-LISTP
        RATIONAL-LISTP-FORWARD-TO-TRUE-LISTP RATIONALP RATIONALP-* RATIONALP-+
        RATIONALP-EXPT-TYPE-PRESCRIPTION RATIONALP-IMPLIES-ACL2-NUMBERP
        RATIONALP-UNARY-- RATIONALP-UNARY-/ READ-ACL2-ORACLE
        READ-ACL2-ORACLE-PRESERVES-STATE-P1 READ-BYTE$ READ-CHAR$
        READ-FILE-LISTP READ-FILE-LISTP-FORWARD-TO-TRUE-LIST-LISTP
        READ-FILE-LISTP1 READ-FILE-LISTP1-FORWARD-TO-TRUE-LISTP-AND-CONSP
        READ-FILES READ-FILES-P READ-FILES-P-FORWARD-TO-READ-FILE-LISTP
        READ-IDATE READ-OBJECT READ-RUN-TIME READ-RUN-TIME-PRESERVES-STATE-P1
        READABLE-FILE READABLE-FILE-FORWARD-TO-TRUE-LISTP-AND-CONSP
        READABLE-FILES READABLE-FILES-LISTP
        READABLE-FILES-LISTP-FORWARD-TO-TRUE-LIST-LISTP-AND-ALISTP
        READABLE-FILES-P READABLE-FILES-P-FORWARD-TO-READABLE-FILES-LISTP
        REAL/RATIONALP REALFIX REALPART REALPART-COMPLEX
        REALPART-IMAGPART-ELIM REBUILD REDEF REDEF! REDEF+ REM REMOVE
        REMOVE-BINOP REMOVE-DEFAULT-HINTS REMOVE-DEFAULT-HINTS!
        REMOVE-DUPLICATES REMOVE-DUPLICATES-EQL REMOVE-DUPLICATES-EQUAL
        REMOVE-EQ REMOVE-EQUAL REMOVE-FIRST-PAIR REMOVE-INVISIBLE-FNS
        REMOVE-MACRO-ALIAS REMOVE-NTH-ALIAS REMOVE-UNTOUCHABLE REMOVE1
        REMOVE1-EQ REMOVE1-EQUAL RESET-LD-SPECIALS RESET-PREHISTORY REST
        RETRACT-WORLD RETRIEVE REVAPPEND REVERSE RFIX ROUND SATISFIES SECOND
        SET-PRINT-BASE SET-PRINT-CASE SET-BACKCHAIN-LIMIT SET-BODY
        SET-BOGUS-DEFUN-HINTS-OK SET-BOGUS-MUTUAL-RECURSION-OK
        SET-CASE-SPLIT-LIMITATIONS SET-CBD SET-CHECKPOINT-SUMMARY-LIMIT
        SET-COMPILE-FNS SET-DEBUGGER-ENABLE SET-DEFAULT-BACKCHAIN-LIMIT
        SET-DEFAULT-HINTS SET-DEFAULT-HINTS!
        SET-DIFFERENCE-EQ SET-DIFFERENCE-EQUAL SET-DIFFERENCE-THEORIES
        SET-ENFORCE-REDUNDANCY SET-IGNORE-DOC-STRING-ERROR
        SET-EQUALP-EQUAL SET-GAG-MODE SET-GUARD-CHECKING SET-IGNORE-OK
        SET-INHIBIT-OUTPUT-LST SET-INHIBIT-WARNINGS SET-INHIBITED-SUMMARY-TYPES
        SET-INVISIBLE-FNS-TABLE SET-IRRELEVANT-FORMALS-OK
        SET-LD-KEYWORD-ALIASES SET-LD-REDEFINITION-ACTION SET-LD-SKIP-PROOFS
        SET-LD-SKIP-PROOFSP SET-LET*-ABSTRACTION SET-LET*-ABSTRACTIONP
        SET-MATCH-FREE-DEFAULT SET-MATCH-FREE-ERROR SET-MEASURE-FUNCTION
        SET-NON-LINEAR SET-NON-LINEARP
        SET-NU-REWRITER-MODE SET-PARALLEL-EVALUATION SET-PRINT-CLAUSE-IDS
        SET-RAW-MODE SET-RAW-MODE-ON! SET-RAW-PROOF-FORMAT
        SET-REWRITE-STACK-LIMIT SET-RULER-EXTENDERS
        SET-SAVED-OUTPUT SET-STATE-OK SET-TAINTED-OK
        SET-TAINTED-OKP SET-TIMER SET-TRACE-EVISC-TUPLE
        SET-VERIFY-GUARDS-EAGERNESS SET-W SET-WELL-FOUNDED-RELATION SEVENTH
        SGETPROP SHOW-ACCUMULATED-PERSISTENCE SHOW-BDD SHOW-BODIES
        SHRINK-32-BIT-INTEGER-STACK SHRINK-T-STACK SIGNED-BYTE SIGNUM SIMPLIFY
        SIXTH SKIP-PROOFS SOME-SLASHABLE STABLE-UNDER-SIMPLIFICATIONP
        STANDARD-CHAR STANDARD-CHAR-LISTP STANDARD-CHAR-LISTP-APPEND
        STANDARD-CHAR-LISTP-FORWARD-TO-CHARACTER-LISTP STANDARD-CHAR-P
        STANDARD-CHAR-P-NTH STANDARD-CO STANDARD-OI STANDARD-STRING-ALISTP
        STANDARD-STRING-ALISTP-FORWARD-TO-ALISTP START-PROOF-TREE STATE
        STATE-GLOBAL-LET*-CLEANUP STATE-GLOBAL-LET*-GET-GLOBALS
        STATE-GLOBAL-LET*-PUT-GLOBALS STATE-P
        STATE-P-IMPLIES-AND-FORWARD-TO-STATE-P1 STATE-P1 STATE-P1-FORWARD
        STATE-P1-UPDATE-MAIN-TIMER STATE-P1-UPDATE-NTH-2-WORLD STOP-PROOF-TREE
        STRING STRING-APPEND STRING-APPEND-LST STRING-DOWNCASE
        STRING-DOWNCASE1 STRING-EQUAL STRING-EQUAL1 STRING-IS-NOT-CIRCULAR
        STRING-LISTP STRING-UPCASE STRING-UPCASE1 STRING< STRING<-IRREFLEXIVE
        STRING<-L STRING<-L-ASYMMETRIC STRING<-L-IRREFLEXIVE
        STRING<-L-TRANSITIVE STRING<-L-TRICHOTOMY STRING<= STRING> STRING>=
        STRINGP STRINGP-SYMBOL-PACKAGE-NAME STRIP-CARS STRIP-CDRS SUBLIS
        SUBSEQ SUBSEQ-LIST SUBSETP SUBSETP-EQUAL SUBST SUBSTITUTE
        SUBSTITUTE-AC SUMMARY SYMBOL SYMBOL-< SYMBOL-<-ASYMMETRIC
        SYMBOL-<-IRREFLEXIVE SYMBOL-<-TRANSITIVE SYMBOL-<-TRICHOTOMY
        SYMBOL-ALISTP SYMBOL-ALISTP-FORWARD-TO-EQLABLE-ALISTP
        SYMBOL-DOUBLET-LISTP SYMBOL-EQUALITY SYMBOL-LISTP
        SYMBOL-LISTP-FORWARD-TO-TRUE-LISTP SYMBOL-NAME
        SYMBOL-NAME-INTERN-IN-PACKAGE-OF-SYMBOL SYMBOL-PACKAGE-NAME SYMBOLP
        SYMBOLP-INTERN-IN-PACKAGE-OF-SYMBOL SYNP SYNTAXP SYS-CALL
        SYS-CALL-STATUS T T-STACK T-STACK-LENGTH T-STACK-LENGTH1 TABLE
        TABLE-ALIST TAKE TENTH THE THE-ERROR THE-FIXNUM THE-FIXNUM! THEORY
        THEORY-INVARIANT THIRD THM TIME$ TIMER-ALISTP
        TIMER-ALISTP-FORWARD-TO-TRUE-LIST-LISTP-AND-SYMBOL-ALISTP
        TOGGLE-PC-MACRO TRACE! TRACE$
        TRACE* ; no longer defined by ACL2, but may well be defined in a book
        TRANS TRANS1 TRICHOTOMY
        TRUE-LIST-LISTP TRUE-LIST-LISTP-FORWARD-TO-TRUE-LISTP
        TRUE-LIST-LISTP-FORWARD-TO-TRUE-LISTP-ASSOC-EQ TRUE-LISTP
        TRUE-LISTP-CADR-ASSOC-EQ-FOR-OPEN-CHANNELS-P TRUE-LISTP-UPDATE-NTH
        TRUNCATE TYPE TYPED-IO-LISTP TYPED-IO-LISTP-FORWARD-TO-TRUE-LISTP U
        UBT UBT! UNARY-- UNARY-/ UNARY-FUNCTION-SYMBOL-LISTP UNICITY-OF-0
        UNICITY-OF-1 UNION-EQ UNION-EQUAL UNION-THEORIES UNIVERSAL-THEORY
        UNMONITOR UNSAVE UNSIGNED-BYTE UNTRACE$ UPDATE-32-BIT-INTEGER-STACK
        UPDATE-ACL2-ORACLE UPDATE-ACL2-ORACLE-PRESERVES-STATE-P1
        UPDATE-BIG-CLOCK-ENTRY UPDATE-FILE-CLOCK UPDATE-GLOBAL-TABLE
        UPDATE-IDATES UPDATE-LIST-ALL-PACKAGE-NAMES-LST UPDATE-NTH
        UPDATE-OPEN-INPUT-CHANNELS UPDATE-OPEN-OUTPUT-CHANNELS
        UPDATE-READ-FILES UPDATE-T-STACK UPDATE-USER-STOBJ-ALIST
        UPDATE-USER-STOBJ-ALIST1 UPDATE-WRITTEN-FILES UPPER-CASE-P
        UPPER-CASE-P-CHAR-UPCASE UPPER-CASE-P-FORWARD-TO-ALPHA-CHAR-P
        USER-STOBJ-ALIST USER-STOBJ-ALIST1 VALUE-TRIPLE
        VERBOSE-PSTACK VERIFY VERIFY-GUARDS
        VERIFY-TERMINATION W WARNING! WITH-OUTPUT WORLD PLIST-WORLDP
        PLIST-WORLDP-FORWARD-TO-ASSOC-EQ-EQUAL-ALISTP
        WORMHOLE-EVAL WORMHOLE WORMHOLE1
        WRITABLE-FILE-LISTP WRITABLE-FILE-LISTP-FORWARD-TO-TRUE-LIST-LISTP
        WRITABLE-FILE-LISTP1
        WRITABLE-FILE-LISTP1-FORWARD-TO-TRUE-LISTP-AND-CONSP WRITE-BYTE$
        WRITEABLE-FILES WRITEABLE-FILES-P
        WRITEABLE-FILES-P-FORWARD-TO-WRITABLE-FILE-LISTP WRITTEN-FILE
        WRITTEN-FILE-FORWARD-TO-TRUE-LISTP-AND-CONSP WRITTEN-FILE-LISTP
        WRITTEN-FILE-LISTP-FORWARD-TO-TRUE-LIST-LISTP-AND-ALISTP WRITTEN-FILES
        WRITTEN-FILES-P WRITTEN-FILES-P-FORWARD-TO-WRITTEN-FILE-LISTP XARGS
        XXXJOIN ZERO ZEROP ZIP ZP)))

  "This is the list of ACL2 symbols that the ordinary user is extremely
likely to want to include in the import list of any package created
because these symbols are the basic hooks for using ACL2.  However,
it is never necessary to do such importing: one can always use the
acl2:: prefix."

  )

(defpkg "ACL2-USER"
  (union-eq *acl2-exports*
            *common-lisp-symbols-from-main-lisp-package*)

  ":Doc-Section ACL2::Programming

  a package the ACL2 user may prefer~/

  This package imports the standard Common Lisp symbols that ACL2
  supports and also a few symbols from package ~c[\"ACL2\"] that are
  commonly used when interacting with ACL2.  You may prefer to select
  this as your current package so as to avoid colliding with ACL2
  system names.~/

  This package imports the symbols listed in
  ~c[*common-lisp-symbols-from-main-lisp-package*], which contains
  hundreds of CLTL function and macro names including those supported
  by ACL2 such as ~ilc[cons], ~ilc[car], and ~ilc[cdr].  It also imports the symbols in
  ~c[*acl2-exports*], which contains a few symbols that are frequently
  used while interacting with the ACL2 system, such as ~ilc[implies],
  ~ilc[defthm], and ~ilc[rewrite].  It imports nothing else.

  Thus, names such as ~ilc[alistp], ~ilc[member-equal], and ~ilc[type-set], which are
  defined in the ~c[\"ACL2\"] package are not present here.  If you find
  yourself frequently colliding with names that are defined in
  ~c[\"ACL2\"] you might consider selecting ~c[\"ACL2-USER\"] as your current
  package (~pl[in-package]).  If you select ~c[\"ACL2-USER\"] as the
  current package, you may then simply type ~ilc[member-equal] to refer to
  ~c[acl2-user::member-equal], which you may define as you see fit.  Of
  course, should you desire to refer to the ~c[\"ACL2\"] version of
  ~ilc[member-equal], you will have to use the ~c[\"ACL2::\"] prefix, e.g.,
  ~c[acl2::member-equal].

  If, while using ~c[\"ACL2-USER\"] as the current package, you find that
  there are symbols from ~c[\"ACL2\"] that you wish we had imported into
  it (because they are frequently used in interaction), please bring
  those symbols to our attention.  For example, should ~ilc[union-theories]
  and ~ilc[universal-theory] be imported?  Except for stabilizing on the
  ``frequently used'' names from ~c[\"ACL2\"], we intend never to define a
  symbol whose ~ilc[symbol-package-name] is ~c[\"ACL2-USER\"].")