• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
      • Gl
      • Witness-cp
      • Ccg
      • Install-not-normalized
      • Rewrite$
      • Fgl
      • Removable-runes
      • Efficiency
      • Rewrite-bounds
      • Bash
      • Def-dag-measure
      • Bdd
      • Remove-hyps
      • Contextual-rewriting
      • Simp
      • Rewrite$-hyps
      • Bash-term-to-dnf
      • Use-trivial-ancestors-check
      • Minimal-runes
        • Clause-processor-tools
        • Fn-is-body
        • Without-subsumption
        • Rewrite-equiv-hint
        • Def-bounds
        • Rewrite$-context
        • Try-gl-concls
        • Hint-utils
      • 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.