• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
      • Theories
      • Rule-classes
      • Proof-builder
        • Instructions
        • Proof-builder-commands
          • ACL2-pc::rewrite
          • ACL2-pc::apply-linear
          • ACL2-pc::sequence
          • Proof-builder-commands-short-list
          • ACL2-pc::=
          • ACL2-pc::s
          • ACL2-pc::exit
            • ACL2-pc::type-alist
            • ACL2-pc::in-theory
            • ACL2-pc::equiv
            • ACL2-pc::comm
            • ACL2-pc::casesplit
            • ACL2-pc::add-abbreviation
            • ACL2-pc::dv
            • ACL2-pc::hyps
            • ACL2-pc::prove-termination
            • ACL2-pc::prove-guard
            • ACL2-pc::x
            • ACL2-pc::fancy-use
            • ACL2-pc::dive
            • ACL2-pc::generalize
            • ACL2-pc::lisp
            • ACL2-pc::show-rewrites
            • ACL2-pc::claim
            • ACL2-pc::put
            • ACL2-pc::split
            • ACL2-pc::geneqv
            • ACL2-pc::prove
            • ACL2-pc::help
            • ACL2-pc::save
            • ACL2-pc::do-all
            • ACL2-pc::demote
            • ACL2-pc::wrap1
            • ACL2-pc::show-abbreviations
            • ACL2-pc::promote
            • ACL2-pc::retrieve
            • ACL2-pc::reduce
            • ACL2-pc::forwardchain
            • ACL2-pc::doc
            • ACL2-pc::bash
            • ACL2-pc::p-top
            • ACL2-pc::print
            • ACL2-pc::expand
            • ACL2-pc::bk
            • ACL2-pc::wrap
            • ACL2-pc::remove-abbreviations
            • ACL2-pc::reduce-by-induction
            • ACL2-pc::induct
            • ACL2-pc::unsave
            • ACL2-pc::undo
            • ACL2-pc::top
            • ACL2-pc::restore
            • ACL2-pc::replay
            • ACL2-pc::psog
            • ACL2-pc::p
            • ACL2-pc::nx
            • ACL2-pc::noise
            • ACL2-pc::contrapose
            • ACL2-pc::wrap-induct
            • ACL2-pc::pso!
            • ACL2-pc::pso
            • ACL2-pc::up
            • ACL2-pc::then
            • ACL2-pc::th
            • ACL2-pc::sl
            • ACL2-pc::show-type-prescriptions
            • ACL2-pc::bdd
            • ACL2-pc::repeat
            • ACL2-pc::pr
            • ACL2-pc::pl
            • ACL2-pc::finish
            • ACL2-pc::commands
            • ACL2-pc::change-goal
            • ACL2-pc::use
            • ACL2-pc::show-linears
            • ACL2-pc::s-prop
            • ACL2-pc::runes
            • ACL2-pc::protect
            • ACL2-pc::instantiate
            • ACL2-pc::insist-all-proved
            • ACL2-pc::fail
            • ACL2-pc::clause-processor
            • ACL2-pc::bookmark
            • ACL2-pc::retain
            • ACL2-pc::quiet!
            • ACL2-pc::pro
            • ACL2-pc::orelse
            • ACL2-pc::goals
            • ACL2-pc::drop
            • ACL2-pc::do-strict
            • ACL2-pc::print-all-concs
            • ACL2-pc::do-all-no-prompt
            • ACL2-pc::x-dumb
            • ACL2-pc::succeed
            • ACL2-pc::print-all-goals
            • ACL2-pc::pp
            • ACL2-pc::noise!
            • ACL2-pc::nil
            • ACL2-pc::negate
            • ACL2-pc::illegal
            • ACL2-pc::elim
            • ACL2-pc::sls
            • ACL2-pc::quiet
            • ACL2-pc::claim-simple
            • ACL2-pc::cg
            • ACL2-pc::pro-or-skip
            • ACL2-pc::ex
            • ACL2-pc::comment
            • ACL2-pc::ACL2-wrap
            • ACL2-pc::when-not-proved
            • ACL2-pc::skip
            • ACL2-pc::retain-or-skip
            • ACL2-pc::repeat-until-done
            • ACL2-pc::free
            • ACL2-pc::drop-or-skip
            • ACL2-pc::cg-or-skip
            • ACL2-pc::by
            • ACL2-pc::split-in-theory
            • ACL2-pc::st
            • ACL2-pc::sr
            • ACL2-pc::print-main
            • ACL2-pc::lemmas-used
            • ACL2-pc::cl-proc
            • ACL2-pc::al
            • ACL2-pc::run-instr-on-new-goals
            • ACL2-pc::run-instr-on-goal
            • ACL2-pc::repeat-rec
            • ACL2-pc::r
            • ACL2-pc::contradict
          • Proof-builder-commands-short-list
          • Dive-into-macros-table
          • Verify
          • Define-pc-macro
          • Macro-command
          • Define-pc-help
          • Toggle-pc-macro
          • Define-pc-meta
          • Retrieve
          • Unsave
          • Proof-checker
        • Hons-and-memoization
        • Events
        • History
        • Parallelism
        • Programming
        • Start-here
        • Real
        • Debugging
        • Miscellaneous
        • Output-controls
        • Macros
        • Interfacing-tools
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Testing-utilities
      • Math
    • Proof-builder-commands
    • Proof-builder-commands-short-list

    ACL2-pc::exit

    (meta) exit the interactive proof-builder

    Examples:
    exit                        -- exit the interactive proof-builder
    (exit t)                    -- exit after printing a bogus defthm event
    (exit append-associativity) -- exit and create a defthm
                                   event named append-associativity
    
    General Forms:
    
    exit --  Exit without storing an event.
    
    (exit t) -- Exit after printing a bogus defthm event, showing :INSTRUCTIONS.
    
    (exit event-name &optional rule-classes do-it-flg) --
    Exit, and perhaps store an event

    The command exit returns you to the ACL2 loop. At a later time, (acl2::verify) may be executed to get back into the same interactive proof-builder state, as long as there hasn't been an intervening use of the proof-builder (otherwise see ACL2-pc::save).

    When given one or more arguments as shown above, exit still returns you to the ACL2 loop, but first, if the interactive proof is complete, then it attempts create a defthm event with the specified event-name and rule-classes (which defaults to (:rewrite) if not supplied). The event will be printed to the terminal, and then normally the user will be queried whether an event should really be created. However, if the final optional argument do-it-flg is supplied and not nil, then an event will be made without a query.

    For example, the form

    (exit top-pop-elim (:elim :rewrite) t)

    causes a defthm event named top-pop-elim to be created with rule-classes (:elim :rewrite), without a query to the user (because of the argument t).

    Remark: it is permitted for event-name to be nil. In that case, the name of the event will be the name supplied during the original call of verify. (See verify and ACL2-pc::commands.) Also in that case, if rule-classes is not supplied then it defaults to the rule-classes supplied in the original call of verify.

    Comments on ``success'' and ``failure''. An exit instruction will always ``fail'', so for example, if it appears as an argument of a do-strict instruction then none of the later (instruction) arguments will be executed. Moreover, the ``failure'' will be ``hard'' if an event is successfully created or if the instruction is simply exit; otherwise it will be ``soft''. See ACL2-pc::sequence for an explanation of hard and soft ``failures''. An obscure but potentially important fact is that if the ``failure'' is hard, then the error signal is a special signal that the top-level interactive loop can interpret as a request to exit. Thus for example, a sequencing command that turns an error triple (mv erp val state) into (mv t val state) would never cause an exit from the interactive loop.

    If the proof is not complete, then neither (exit event-name ...) nor (exit t) will cause an exit from the interactive loop. However, in that case either one will print out the original user-supplied goal (the one that was supplied with the call to verify) and the current list of instructions.