• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
      • Theories
      • Rule-classes
        • Type-prescription
        • Rewrite
          • Force
          • Hide
          • Syntaxp
          • Free-variables
            • Add-match-free-override
            • Set-match-free-default
              • Free-variables-type-prescription
              • Set-match-free-error
              • Free-variables-examples
            • Bind-free
            • Loop-stopper
            • Backchain-limit
            • Double-rewrite
            • Rewrite-lambda-object
            • Rewriting-versus-cleaning-up-lambda-objects
            • Random-remarks-on-rewriting
            • Set-rw-cache-state
            • Case-split
            • Rewrite-lambda-object-actions
            • Syntactically-clean-lambda-objects-theory
            • Hands-off-lambda-objects-theory
            • Rewrite-lambda-objects-theory
            • Simple
            • Rewrite-stack-limit
            • Rewrite-equiv
            • Assume-true-false-aggressive-p
            • Remove-trivial-equivalences-enabled-p
            • Rewrite-lambda-modep
            • Rewrite-if-avoid-swap
            • Set-rw-cache-state!
            • Rw-cache-state
          • Meta
          • Linear
          • Definition
          • Clause-processor
          • Tau-system
          • Forward-chaining
          • Equivalence
          • Congruence
          • Free-variables
            • Add-match-free-override
            • Set-match-free-default
              • Free-variables-type-prescription
              • Set-match-free-error
              • Free-variables-examples
            • Executable-counterpart
            • Induction
            • Type-reasoning
            • Compound-recognizer
            • Rewrite-quoted-constant
            • Elim
            • Well-founded-relation-rule
            • Built-in-clause
            • Well-formedness-guarantee
            • Patterned-congruence
            • Rule-classes-introduction
            • Refinement
            • Guard-holders
            • Type-set-inverter
            • Generalize
            • Corollary
            • Induction-heuristics
            • Well-founded-relation
            • Backchaining
            • Default-backchain-limit
          • Proof-builder
          • Recursion-and-induction
          • Hons-and-memoization
          • Events
          • Parallelism
          • History
          • Programming
          • Operational-semantics
          • Real
          • Start-here
          • Miscellaneous
          • Output-controls
          • Bdd
          • Macros
          • Installation
          • Mailing-lists
        • Interfacing-tools
        • Hardware-verification
        • Software-verification
        • Math
        • Testing-utilities
      • Free-variables

      Set-match-free-default

      Provide default for :match-free in future rules

      General Forms:
      (set-match-free-default :once)
      (set-match-free-default :all)
      (set-match-free-default nil)

      Note: This utility does not apply to type-prescription rules; for a related topic pertinent to such rules, see free-variables-type-prescription.

      As described elsewhere (see free-variables), a rewrite, linear, or forward-chaining rule may have free variables in its hypotheses, and ACL2 can be directed either to try all bindings (``:all'') or just the first (``:once'') when relieving that hypothesis, as a basis for relieving subsequent hypotheses. This directing of :all or :once is generally provided by specifying either :match-free :once or :match-free :all in the :rule-classes of the rule. If neither of these is specified, then the most recent set-match-free-default is used by ACL2 to fill in this missing :match-free field. See rule-classes. Except: If the last set-match-free-default specifies nil, then ACL2 reverts to the behavior it had at start-up, as described in Remarks (2) and (3) below.

      Note: This is an event! It does not print the usual event summary but nevertheless changes the ACL2 logical world and is so recorded. It uses the ACL2-defaults-table, and hence its effect is local to the book or encapsulate form in which it occurs.

      Remarks.

      (1) The use of set-match-free-default has no effect on existing rules. In order to change the behavior of existing rules with respect to free-variable matching, see add-match-free-override.

      (2) If you submit a rewrite, linear, or forward-chaining rule with a free variable in a hypothesis, and no default setting was previously specified with set-match-free-default or the default setting is nil, and the rule is not within a book being processed with include-book, certify-book, or rebuild, then a warning or error is caused. In order to make this an error instead of a warning, see set-match-free-error.

      (3) If you submit a rewrite, linear, or forward-chaining rule with a free variable in a hypothesis, and no default setting has been previously specified with set-match-free-default or the default setting is nil, and no error is caused (see (2) above), then the default :all is used.