EVENTS
functions that extend the logic
Major Section:  ACL2 Documentation
Some Related Topics
- 
- ASSERT-EVENT -- assert that a given form returns a non-- nilvalue
- COMP -- compile some ACL2 functions
- DEFABBREV -- a convenient form of macro definition for simple expansions
- DEFABSSTOBJ -- define a new abstract single-threaded object 
- 
- DEFATTACH -- execute constrained functions using corresponding attached functions
- 
- DEFCHOOSE -- define a Skolem (witnessing) function
- 
- DEFCONST -- define a constant
- 
- DEFEQUIV -- prove that a function is an equivalence relation
- DEFEVALUATOR -- introduce an evaluator function
- DEFEXEC -- attach a terminating executable function to a definition
- 
- 
- DEFMACRO -- define a macro
- DEFMACRO-LAST -- define a macro that returns its last argument, but with side effects
- DEFN -- definition with guard - t
- 
- DEFPKG -- define a new symbol package
- DEFPROXY -- define a non-executable - :- program-mode function for attachment
- DEFPUN -- define a tail-recursive function symbol
- DEFREFINEMENT -- prove that - equiv1refines- equiv2
- DEFSTOBJ -- define a new single-threaded object 
- DEFSTUB -- stub-out a function symbol
- 
- 
- DEFTHM -- prove and name a theorem
- DEFTHMD -- prove and name a theorem and then disable it
- DEFTTAG -- introduce a trust tag (ttag)
- DEFUN -- define a function symbol
- DEFUN-INLINE -- define a potentially inlined function symbol and associated macro
- DEFUN-NOTINLINE -- define a not-to-be-inlined function symbol and associated macro
- DEFUN-NX -- define a non-executable function symbol
- DEFUN-SK -- define a function whose body has an outermost quantifier
- DEFUND -- define a function symbol and then disable it
- DEFUND-INLINE -- define a potentially disabled, inlined function symbol and associated macro
- DEFUND-NOTINLINE -- define a disabled, not-to-be-inlined function symbol and associated macro
- ENCAPSULATE -- hide some events and/or constrain some functions
- EVISC-TABLE -- support for abbreviated output
- IN-ARITHMETIC-THEORY -- designate theory for some rewriting done for non-linear arithmetic
- IN-THEORY -- designate ``current'' theory (enabling its rules)
- 
- LOCAL -- hiding an event in an encapsulation or book
- MAKE-EVENT -- evaluate (expand) a given form and then evaluate the result
- MEMOIZE -- turn on memoization for a specified function
- MUTUAL-RECURSION -- define some mutually recursive functions
- PROFILE -- turn on profiling for one function
- 
- PROGN! -- evaluate some forms, not necessarily events
- REGENERATE-TAU-DATABASE -- regenerate the tau database relative to the current enabled theory
- 
- 
- 
- SET-BODY -- set the definition body
- TABLE -- user-managed tables
- 
- UNMEMOIZE -- turn off memoization for the specified function
- VALUE-TRIPLE -- compute a value, optionally checking that it is not - nil
- 
- 
- VERIFY-TERMINATION -- convert a function from :program mode to :logic mode
Any extension of the syntax of ACL2 (i.e., the definition of a new
constant or macro), the axioms (i.e., the definition of a function),
or the rule database (i.e., the proof of a theorem), constitutes a
logical ``event.''  Events change the ACL2 logical world
(see world).  Indeed, the only way to change the ACL2
world is via the successful evaluation of an event function.
Every time the world is changed by an event, a landmark is left
on the world and it is thus possible to identify the world
``as of'' the evaluation of a given event.  An event may introduce
new logical names.  Some events introduce no new names (e.g.,
verify-guards), some introduce exactly one (e.g., defmacro and
defthm), and some may introduce many (e.g., encapsulate ).
ACL2 typically completes processing of an event by printing a summary.
Unless proofs are skipped (see ld-skip-proofsp) or summary output is
inhibited (see set-inhibit-output-lst), information about the proof attempt
(if any) is printed that includes a list of rules used, a summary of
warnings, and the number of ``prover steps'' (if any;
see with-prover-step-limit).  A breakdown of the time used is also printed,
which by default is runtime (cpu time), but can be changed to realtime
(wall clock time); see get-internal-time.
See embedded-event-form for a discussion of events permitted in
books.
 
 