• 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-error

      Control error vs. warning when :match-free is missing

      Legal Forms:
      (set-match-free-error nil)
      :set-match-free-error nil
      (set-match-free-error t)
      :set-match-free-error t

      As described elsewhere (see free-variables), when a rewrite, linear, or forward-chaining rule has free variables in its hypotheses, the user can specify whether to try all bindings (``:all'') or just the first (``:once'') when relieving its hypotheses, as a basis for relieving subsequent hypotheses. This direction of :all or :once is generally provided by specifying either :match-free :once or :match-free :all in the :rule-classes of the rule.

      But suppose that neither of these is specified for such a rule. (Note: set-match-free-error is not relevant for type-prescription rules.) Also suppose that set-match-free-default has not specified a default of :once or :all (see set-match-free-default). In this case a warning will occur except when in the context of include-book. If you prefer to see an error in such cases, except in the context of certify-book, execute (set-match-free-error t). If there is no error, then a default of :all is used.

      Note: This is NOT an event! Instead, set-match-free-error sets the state global 'match-free-error (see state and see assign). Thus, this form cannot be put into a book. If you are tempted to put it into a book, consider the fact that it really isn't needed there, since the absence of :match-free does not cause an error in the context of certify-book or include-book. If you still feel the need for such a form, consider using set-match-free-default to provide a default, at least within the scope of the current book (if any); see set-match-free-default.