• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
      • Break-rewrite
      • Proof-builder
      • Accumulated-persistence
      • Cgen
      • Forward-chaining-reports
      • Proof-tree
      • Print-gv
      • Dmr
      • With-brr-data
      • Splitter
      • Guard-debug
      • Set-debugger-enable
      • Redo-flat
      • Time-tracker
      • Set-check-invariant-risk
      • Removable-runes
      • Efficiency
      • Explain-near-miss
      • Tail-biting
      • Failed-forcing
      • Sneaky
      • Invariant-risk
      • Failure
      • Measure-debug
      • Dead-events
      • Compare-objects
      • Prettygoals
      • Remove-hyps
      • Type-prescription-debugging
      • Pstack
      • Trace
      • Set-register-invariant-risk
      • Walkabout
      • Disassemble$
      • Nil-goal
      • Cw-gstack
      • Set-guard-msg
      • Find-lemmas
      • Watch
      • Quick-and-dirty-subsumption-replacement-step
      • Profile-all
      • Profile-ACL2
      • Set-print-gv-defaults
      • Minimal-runes
        • Spacewalk
        • Try-gl-concls
        • Near-misses
      • Std
      • Proof-automation
      • Macro-libraries
      • ACL2
        • Theories
        • Rule-classes
        • Proof-builder
        • Recursion-and-induction
        • Hons-and-memoization
        • Events
        • Parallelism
        • History
        • Programming
        • Operational-semantics
        • Real
        • Start-here
        • Debugging
          • Break-rewrite
          • Proof-builder
          • Accumulated-persistence
          • Cgen
          • Forward-chaining-reports
          • Proof-tree
          • Print-gv
          • Dmr
          • With-brr-data
          • Splitter
          • Guard-debug
          • Set-debugger-enable
          • Redo-flat
          • Time-tracker
          • Set-check-invariant-risk
          • Removable-runes
          • Efficiency
          • Explain-near-miss
          • Tail-biting
          • Failed-forcing
          • Sneaky
          • Invariant-risk
          • Failure
          • Measure-debug
          • Dead-events
          • Compare-objects
          • Prettygoals
          • Remove-hyps
          • Type-prescription-debugging
          • Pstack
          • Trace
          • Set-register-invariant-risk
          • Walkabout
          • Disassemble$
          • Nil-goal
          • Cw-gstack
          • Set-guard-msg
          • Find-lemmas
          • Watch
          • Quick-and-dirty-subsumption-replacement-step
          • Profile-all
          • Profile-ACL2
          • Set-print-gv-defaults
          • Minimal-runes
            • Spacewalk
            • Try-gl-concls
            • Near-misses
          • Miscellaneous
          • Output-controls
          • Macros
          • Interfacing-tools
        • Interfacing-tools
        • Hardware-verification
        • Software-verification
        • Math
        • Testing-utilities
      • Proof-automation
      • Debugging

      Minimal-runes

      Compute runes to leave enabled

      Example Form:
      (minimal-runes (defun proper-cons-nest-p (x)
                       (declare (xargs :guard (pseudo-termp x)))
                       (cond ((symbolp x) nil)
                             ((fquotep x) (true-listp (cadr x)))
                             ((eq (ffn-symb x) 'cons)
                              (proper-cons-nest-p (fargn x 2)))
                             (t nil)))
                       :verbose-p :minimal)
      
      General Form:
      (minimal-runes event-form
                     :verbose-p  v ; default = :normal ;
                     :multiplier m ; default = 1 ;
                     :name       n ; default = nil ;
                     )

      where event-form is an embeddable event (see events); v is nil, :minimal, :normal, or t; m is a positive rational number; and n is nil or a logical-name. The value returned is an error-triple (mv erp runes state), where erp is typically nil and runes is a list of runes that suffice to admit the indicated event-form; moreover, if the multiplier m is less than 1, then the event is admitted with fewer prover steps.

      This utility is essentially identical to removable-runes — indeed, they share the same algorithm — except that instead of returning a list of runes to disable, it returns a list of runes sufficient for admitting the event. See removable-runes for detailed documentation. There is one other difference: minimal-runes has an extra keyword argument, :name. If :name is supplied then its value must be a symbol, n, that is a logical-name. In that case, the list of runes returned is modified by first removing all those in (current-theory n); see current-theory.