• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
      • Kestrel-books
        • Crypto-hdwallet
        • Apt
          • Simplify-defun
          • Isodata
          • Tailrec
          • Schemalg
          • Restrict
            • Restrict-implementation
              • Restrict-event-generation
              • Restrict-fn
              • Restrict-macro-definition
              • Restrict-input-processing
          • Expdata
          • Casesplit
          • Simplify-term
          • Simplify-defun-sk
          • Parteval
          • Solve
          • Wrap-output
          • Propagate-iso
          • Simplify
          • Finite-difference
          • Drop-irrelevant-params
          • Copy-function
          • Lift-iso
          • Rename-params
          • Utilities
          • Simplify-term-programmatic
          • Simplify-defun-sk-programmatic
          • Simplify-defun-programmatic
          • Simplify-defun+
          • Common-options
          • Common-concepts
        • Error-checking
        • Fty-extensions
        • Isar
        • Kestrel-utilities
        • Set
        • Soft
        • C
        • Bv
        • Imp-language
        • Event-macros
        • Java
        • Bitcoin
        • Ethereum
        • Yul
        • Zcash
        • ACL2-programming-language
        • Prime-fields
        • Json
        • Syntheto
        • File-io-light
        • Cryptography
        • Number-theory
        • Lists-light
        • Axe
        • Builtins
        • Solidity
        • Helpers
        • Htclient
        • Typed-lists-light
        • Arithmetic-light
      • X86isa
      • Axe
      • Execloader
    • Math
    • Testing-utilities
  • Restrict

Restrict-implementation

Implementation of restrict.

The implementation functions have arguments and results consistently named as follows (unless otherwise stated, explicitly or implicitly, in the functions):

  • state is the ACL2 state.
  • wrld is the ACL2 world.
  • ctx is the context used for errors.
  • old is the homonymous input to the event macro if it has no type; otherwise, it is the (possibly different) typed value resulting from processing that input.
  • restriction is the homonymous input to the event macro if it has no type; otherwise, it is the (possibly different) typed value resulting from processing that input.
  • undefined is the homonymous input to the event macro if it has no type; otherwise, it is the (possibly different) typed value resulting from processing that input.
  • new-name is the homonymous input to the event macro.
  • new-enable is the homonymous input to the event macro if it has no type; otherwise, it is the (possibly different) typed value resulting from processing that input.
  • old-to-new-name is the homonymous input to the event macro.
  • old-to-new-enable is the homonymous input to the event macro if it has no type; otherwise, it is the (possibly different) typed value resulting from processing that input.
  • new-to-old-name is the homonymous input to the event macro.
  • new-to-old-enable is the homonymous input to the event macro if it has no type; otherwise, it is the (possibly different) typed value resulting from processing that input.
  • verify-guards is the homonymous input to the event macro if it has no type; otherwise, it is the (possibly different) typed value resulting from processing that input.
  • hints is the homonymous input to the event macro if it has no type; otherwise, it is the (possibly different) typed value resulting from processing that input.
  • print is the homonymous input to the event macro.
  • show-only is the homonymous input to the event macro.
  • call is the call of the event macro.
  • new is the homonymous function symbol described in the user documentation.
  • old-to-new is the homonymous theorem symbol described in the user documentation.
  • new-to-old is the homonymous theorem symbol described in the user documentation.
  • stub? is the stub called ?f in the documentation if old is a reflexive function, or nil otherwise.
  • appcond-thm-names is an alist from the keywords that identify the applicability conditions to the corresponding generated theorem names.
  • old-unnorm is the name of the generated theorem that installs the non-normalized definition of the target function.
  • new-unnorm is the name of the generated theorem that installs the non-normalized definition of the new function.
  • names-to-avoid is a cumulative list of names of generated events, used to ensure the absence of name clashes in the generated events.

Implementation functions' arguments and results that are not listed above are described in, or clear from, those functions' documentation.

Subtopics

Restrict-event-generation
Event generation performed by restrict.
Restrict-fn
Check redundancy, process the inputs, and generate the event to submit.
Restrict-macro-definition
Definition of the restrict macro.
Restrict-input-processing
Input processing performed by restrict.