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