This file is indexed.

/usr/share/acl2-6.3/books/tools/include-raw.cert is in acl2-books-certs 6.3-5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
(IN-PACKAGE "ACL2")
"ACL2 Version 6.3"
:BEGIN-PORTCULLIS-CMDS
(DEFPKG "XDOC" (SET-DIFFERENCE-EQ (UNION-EQ (UNION-EQ *ACL2-EXPORTS* *COMMON-LISP-SYMBOLS-FROM-MAIN-LISP-PACKAGE*) (QUOTE (B* QUIT EXIT VALUE DEFXDOC DEFXDOC-RAW MACRO-ARGS XDOC-EXTEND DEFSECTION DEFSECTION-PROGN CUTIL LNFIX SET-DEFAULT-PARENTS GETPROP FORMALS JUSTIFICATION DEF-BODIES CURRENT-ACL2-WORLD DEF-BODY ACCESS THEOREM UNTRANSLATED-THEOREM GUARD XDOC XDOC! UNQUOTE UNDOCUMENTED ASSERT! TOP EXPLODE IMPLODE))) (QUOTE NIL)) NIL ((:SYSTEM . "xdoc/portcullis.lisp") (:SYSTEM . "xdoc/top.lisp")) T)
:END-PORTCULLIS-CMDS
:EXPANSION-ALIST
((2 RECORD-EXPANSION (DEFXDOC INCLUDE-RAW :PARENTS (SET-RAW-MODE PROGN! DEFTTAG) :SHORT "A better way to load raw Lisp code than directly using @(see progn!)
or @(see set-raw-mode)." :LONG "<p>Sometimes you want to include raw Lisp code in an ACL2 book to
achieve better performance or do fancy things like connect to external
programs.  With <see topic='@(url defttag)'>trust tags</see>, you can do this.
Unfortunately, the built-in mechanisms (@(see progn!) and @(see set-raw-mode))
have some portability problems related to compilation, file paths, read tables,
non-ACL2 objects, and so on; see below for some examples.</p>

<h3>Using Include-Raw</h3>

<p>Using @('include-raw') solves some of these problems.  Here are some
examples of how to use it:</p>

@({
 (include-book \"tools/include-raw\" :dir :system)

 (defttag :my-ttag) ; required before calling include-raw

 (include-raw \"my-raw-lisp-file.lsp\")

 (include-raw \"another-raw-lisp-file.lsp\"
              :do-not-compile t)
})

<p>When you use @('include-raw'), your raw Lisp code goes into a separate file.
If your book is named @('foo.lisp'), then this file should typically be named
@('foo-raw.lsp').  Why?</p>

<ul>

<li>The @('.lsp') extension helps build systems realize that the raw file is
not a proper ACL2 book and should not be certified.</li>

<li>The @('-raw') part helps to avoid running into a problem: on most Lisps,
compiling @('foo.lisp') or @('foo.lsp') results in the same compiled file,
e.g., @('foo.fasl') or similar.  So it is a mistake to use the same base name
for a raw Lisp file with a @('.lsp') extension and an ACL2 book with @('.lisp')
extension.</li>

</ul>

<p>The path of the raw Lisp file must be given relative to the book containing
the @('include-raw') form.  Typically we put the raw Lisp file in the same
directory as its book.</p>

<p>By default, the raw Lisp file will be compiled and loaded when the
containing book is certified.  When including the book, the compiled file will
be loaded if possible, otherwise the original file will be loaded instead.  By
default, if either compilation or loading fails, an error will occur.</p>


<h3>Benefits</h3>

<p>Keeping raw Lisp code in a separate file means you can use various kinds of
Lisp syntax that are not allowed in ACL2.  Otherwise you have to jump through
awful hoops like having to @(see intern)ing the names of functions like
@('ccl::static-cons') that you want to call.  It's also nice to be able to use
floats, etc.</p>

<p>Using @('include-raw') instead of something like @('load') after a
@('set-raw-mode') means you get predictable path behavior.  Otherwise, unless
you go out of your way to save the @(see cbd) with a @(see make-event), you can
end up with @(see include-book) failing when you try to load your book from
other directories.</p>

<p>Using @('include-raw') means that by default your definitions get compiled,
which can help to avoid stack overflows on some Lisps that don't compile
definitions automatically.  This isn't the case for definitions submitted
inside a @(see progn!).  It also helps defend against the @(see comp) command
undoing your raw Lisp definitions.</p>


<h3>Optional Arguments</h3>

<p>The optional keywords @(':on-compile-fail') and/or @(':on-load-fail') may be
used to suppress the error for failed compilation or loading, respectively;
their argument is a term which will be evaluated in lieu of producing an error.
When evaluating this term, the variable @('condition') is bound to a value
describing the failure; see Common Lisp documentation on @('handler-case').
Note: for non-ansi-compliant Common Lisp implementations, such as GCL 2.6.*, no
such error handling is provided.  Here is an example:</p>

@({
 (include-raw \"a-raw-lisp-file.lsp\"
              :on-compile-fail
              (format t \"Compilation failed with message ~a~%\"
                      condition)
              :on-load-fail
              (cw \"Oh well, the load failed~%\")
              :host-readtable t)
})


<p>The optional keyword @(':do-not-compile') may be used to suppress
compilation.  In this case, during book certification the file will just be
loaded using @('load').  Similarly, during @('include-book') we will only load
the lisp file, and not try to load a compiled file.</p>

<p>The optional keyword @(':host-readtable') may be used to make sure that the
original @('*readtable*') for this Lisp is being used, instead of the ACL2
readtable, while reading the file.  This may sometimes be necessary to avoid
differences between ACL2's reader and what raw Lisp code is expecting.</p>") (WITH-OUTPUT :OFF (EVENT SUMMARY) (PROGN (TABLE XDOC (QUOTE DOC) (CONS (QUOTE ((:NAME . INCLUDE-RAW) (:BASE-PKG . ACL2-PKG-WITNESS) (:PARENTS SET-RAW-MODE PROGN! DEFTTAG) (:SHORT . "A better way to load raw Lisp code than directly using @(see progn!)
or @(see set-raw-mode).") (:LONG . "<p>Sometimes you want to include raw Lisp code in an ACL2 book to
achieve better performance or do fancy things like connect to external
programs.  With <see topic='@(url defttag)'>trust tags</see>, you can do this.
Unfortunately, the built-in mechanisms (@(see progn!) and @(see set-raw-mode))
have some portability problems related to compilation, file paths, read tables,
non-ACL2 objects, and so on; see below for some examples.</p>

<h3>Using Include-Raw</h3>

<p>Using @('include-raw') solves some of these problems.  Here are some
examples of how to use it:</p>

@({
 (include-book \"tools/include-raw\" :dir :system)

 (defttag :my-ttag) ; required before calling include-raw

 (include-raw \"my-raw-lisp-file.lsp\")

 (include-raw \"another-raw-lisp-file.lsp\"
              :do-not-compile t)
})

<p>When you use @('include-raw'), your raw Lisp code goes into a separate file.
If your book is named @('foo.lisp'), then this file should typically be named
@('foo-raw.lsp').  Why?</p>

<ul>

<li>The @('.lsp') extension helps build systems realize that the raw file is
not a proper ACL2 book and should not be certified.</li>

<li>The @('-raw') part helps to avoid running into a problem: on most Lisps,
compiling @('foo.lisp') or @('foo.lsp') results in the same compiled file,
e.g., @('foo.fasl') or similar.  So it is a mistake to use the same base name
for a raw Lisp file with a @('.lsp') extension and an ACL2 book with @('.lisp')
extension.</li>

</ul>

<p>The path of the raw Lisp file must be given relative to the book containing
the @('include-raw') form.  Typically we put the raw Lisp file in the same
directory as its book.</p>

<p>By default, the raw Lisp file will be compiled and loaded when the
containing book is certified.  When including the book, the compiled file will
be loaded if possible, otherwise the original file will be loaded instead.  By
default, if either compilation or loading fails, an error will occur.</p>


<h3>Benefits</h3>

<p>Keeping raw Lisp code in a separate file means you can use various kinds of
Lisp syntax that are not allowed in ACL2.  Otherwise you have to jump through
awful hoops like having to @(see intern)ing the names of functions like
@('ccl::static-cons') that you want to call.  It's also nice to be able to use
floats, etc.</p>

<p>Using @('include-raw') instead of something like @('load') after a
@('set-raw-mode') means you get predictable path behavior.  Otherwise, unless
you go out of your way to save the @(see cbd) with a @(see make-event), you can
end up with @(see include-book) failing when you try to load your book from
other directories.</p>

<p>Using @('include-raw') means that by default your definitions get compiled,
which can help to avoid stack overflows on some Lisps that don't compile
definitions automatically.  This isn't the case for definitions submitted
inside a @(see progn!).  It also helps defend against the @(see comp) command
undoing your raw Lisp definitions.</p>


<h3>Optional Arguments</h3>

<p>The optional keywords @(':on-compile-fail') and/or @(':on-load-fail') may be
used to suppress the error for failed compilation or loading, respectively;
their argument is a term which will be evaluated in lieu of producing an error.
When evaluating this term, the variable @('condition') is bound to a value
describing the failure; see Common Lisp documentation on @('handler-case').
Note: for non-ansi-compliant Common Lisp implementations, such as GCL 2.6.*, no
such error handling is provided.  Here is an example:</p>

@({
 (include-raw \"a-raw-lisp-file.lsp\"
              :on-compile-fail
              (format t \"Compilation failed with message ~a~%\"
                      condition)
              :on-load-fail
              (cw \"Oh well, the load failed~%\")
              :host-readtable t)
})


<p>The optional keyword @(':do-not-compile') may be used to suppress
compilation.  In this case, during book certification the file will just be
loaded using @('load').  Similarly, during @('include-book') we will only load
the lisp file, and not try to load a compiled file.</p>

<p>The optional keyword @(':host-readtable') may be used to make sure that the
original @('*readtable*') for this Lisp is being used, instead of the ACL2
readtable, while reading the file.  This may sometimes be necessary to avoid
differences between ACL2's reader and what raw Lisp code is expecting.</p>") (:FROM . "[books]/tools/include-raw.lisp"))) (XDOC::GET-XDOC-TABLE WORLD))) (VALUE-TRIPLE (QUOTE (DEFXDOC INCLUDE-RAW)))))))
NIL
(("/usr/share/acl2-6.3/books/tools/include-raw.lisp" "include-raw" "include-raw" ((:SKIPPED-PROOFSP) (:AXIOMSP) (:TTAGS)) . 438153625) ("/usr/share/acl2-6.3/books/xdoc/top.lisp" "xdoc/top" "top" ((:SKIPPED-PROOFSP) (:AXIOMSP) (:TTAGS)) . 1214825095) ("/usr/share/acl2-6.3/books/xdoc/book-thms.lisp" "book-thms" "book-thms" ((:SKIPPED-PROOFSP) (:AXIOMSP) (:TTAGS)) . 1105796063) ("/usr/share/acl2-6.3/books/xdoc/base.lisp" "base" "base" ((:SKIPPED-PROOFSP) (:AXIOMSP) (:TTAGS)) . 454271148) ("/usr/share/acl2-6.3/books/xdoc/portcullis.lisp" "portcullis" "portcullis" ((:SKIPPED-PROOFSP) (:AXIOMSP) (:TTAGS)) . 1473208573))
1347540178