• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
      • Kestrel-books
        • Crypto-hdwallet
        • Apt
        • Error-checking
        • Fty-extensions
        • Isar
        • Kestrel-utilities
          • Omaps
          • Directed-untranslate
          • Include-book-paths
          • Ubi
          • Numbered-names
          • Digits-any-base
          • Context-message-pair
          • With-auto-termination
          • Make-termination-theorem
          • Theorems-about-true-list-lists
          • Checkpoint-list
          • Sublis-expr+
          • Integers-from-to
          • Prove$
          • Defthm<w
          • System-utilities-non-built-in
          • Integer-range-fix
          • Minimize-ruler-extenders
          • Add-const-to-untranslate-preprocess
          • Unsigned-byte-fix
          • Signed-byte-fix
          • Defthmr
          • Paired-names
          • Unsigned-byte-list-fix
          • Signed-byte-list-fix
          • Show-books
          • Skip-in-book
          • Typed-tuplep
          • List-utilities
          • Checkpoint-list-pretty
          • Defunt
          • Keyword-value-list-to-alist
          • Magic-macroexpand
          • Top-command-number-fn
          • Bits-as-digits-in-base-2
          • Show-checkpoint-list
          • Ubyte11s-as-digits-in-base-2048
          • Named-formulas
            • Named-formulas-to-thm-events
            • Named-formula-to-thm-event
            • Prove-named-formulas
            • Prove-named-formula
              • Ensure-named-formulas
            • Bytes-as-digits-in-base-256
            • String-utilities
            • Make-keyword-value-list-from-keys-and-value
            • Defmacroq
            • Integer-range-listp
            • Apply-fn-if-known
            • Trans-eval-error-triple
            • Checkpoint-info-list
            • Previous-subsumer-hints
            • Fms!-lst
            • Zp-listp
            • Trans-eval-state
            • Injections
            • Doublets-to-alist
            • Theorems-about-osets
            • Typed-list-utilities
            • Book-runes-alist
            • User-interface
            • Bits/ubyte11s-digit-grouping
            • Bits/bytes-digit-grouping
            • Message-utilities
            • Subsetp-eq-linear
            • Oset-utilities
            • Strict-merge-sort-<
            • Miscellaneous-enumerations
            • Maybe-unquote
            • Thm<w
            • Defthmd<w
            • Io-utilities
          • Set
          • Soft
          • C
          • Bv
          • Imp-language
          • Event-macros
          • Java
          • Bitcoin
          • Ethereum
          • Yul
          • Zcash
          • ACL2-programming-language
          • Prime-fields
          • Json
          • Syntheto
          • File-io-light
          • Cryptography
          • Number-theory
          • Lists-light
          • Axe
          • Builtins
          • Solidity
          • Helpers
          • Htclient
          • Typed-lists-light
          • Arithmetic-light
        • X86isa
        • Axe
        • Execloader
      • Math
      • Testing-utilities
    • Named-formulas

    Prove-named-formula

    Try to prove a named formula.

    Signature
    (prove-named-formula name formula hints verbose state) 
      → 
    (mv success msg state)
    Arguments
    name — Name of the formula to prove.
        Guard (symbolp name).
    formula — Formula to prove (an untranslated term).
    hints — Hints to prove the formula.
        Guard (true-listp hints).
    verbose — Print progress messages or not.
        Guard (booleanp verbose).
    Returns
    success — A booleanp.
    msg — A msgp.

    Besides returning an indication of success or failure, return a structured message (printable with ~@). When the proof fails, the message is an error message. When the proof succeeds, currently the message is empty, but future versions of this function could return some non-empty message instead.

    Note that prove$ always returns a nil error flag, so the code below ignores that result.

    If the verbose argument is t, also print a progress message to indicate that the proof of the named formula is being attempted, and then to indicate the outcome of the attempt.

    Parentheses are printed around the progress message to ease navigation in an Emacs buffer.

    Definitions and Theorems

    Function: prove-named-formula

    (defun prove-named-formula (name formula hints verbose state)
      (declare (xargs :stobjs (state)))
      (declare (xargs :guard (and (symbolp name)
                                  (true-listp hints)
                                  (booleanp verbose))))
      (let ((__function__ 'prove-named-formula))
        (declare (ignorable __function__))
        (b* (((run-when verbose)
              (cw "~%(Proving ~x0:~%~x1~|" name formula))
             ((mv & yes/no state)
              (prove$ formula :hints hints)))
          (if yes/no (b* (((run-when verbose) (cw "Done.)~%")))
                       (mv t "" state))
            (b* (((run-when verbose) (cw "Failed.)~%")))
              (mv nil
                  (msg "Unable to prove ~x0:~%~x1~|"
                       name formula)
                  state))))))