• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
      • Apt
        • Simplify-defun
        • Isodata
        • Tailrec
        • Schemalg
        • Restrict
        • Expdata
        • Casesplit
        • Simplify-term
        • Simplify-defun-sk
        • Parteval
        • Solve
        • Wrap-output
        • Propagate-iso
        • Simplify
        • Finite-difference
        • Drop-irrelevant-params
        • Copy-function
        • Lift-iso
        • Rename-params
        • Utilities
        • Simplify-term-programmatic
        • Simplify-defun-sk-programmatic
        • Simplify-defun-programmatic
        • Simplify-defun+
        • Common-options
          • Untranslate-specifier
          • Print-specifier
          • Hints-specifier
            • Ensure-is-hints-specifier
            • Canonical-hints-specifier-p
            • Canonicalize-hints-specifier
              • Hints-specifier-p
          • Common-concepts
        • Zfc
        • Acre
        • Milawa
        • Smtlink
        • Abnf
        • Vwsim
        • Isar
        • Wp-gen
        • Dimacs-reader
        • Pfcs
        • Legacy-defrstobj
        • Proof-checker-array
        • Soft
        • C
        • Farray
        • Rp-rewriter
        • Instant-runoff-voting
        • Imp-language
        • Sidekick
        • Leftist-trees
        • Java
        • Taspi
        • Bitcoin
        • Riscv
        • Des
        • Ethereum
        • X86isa
        • Sha-2
        • Yul
        • Zcash
        • Proof-checker-itp13
        • Regex
        • ACL2-programming-language
        • Json
        • Jfkr
        • Equational
        • Cryptography
        • Poseidon
        • Where-do-i-place-my-book
        • Axe
        • Bigmems
        • Builtins
        • Execloader
        • Aleo
        • Solidity
        • Paco
        • Concurrent-programs
        • Bls12-377-curves
      • Debugging
      • Std
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Math
      • Testing-utilities
    • Hints-specifier

    Canonicalize-hints-specifier

    Turn a hints specifier into an equivalent canonical one.

    Signature
    (canonicalize-hints-specifier x legal-kwds) → cx
    Returns
    cx — Type (canonical-hints-specifier-p cx legal-kwds), given the guard.

    If the hints specifier is already canonical, it is left unchanged. Otherwise, the abbreviation is “expanded”.

    Definitions and Theorems

    Function: canonicalize-hints-specifier

    (defun canonicalize-hints-specifier (x legal-kwds)
      (declare (xargs :guard (and (keyword-listp legal-kwds)
                                  (no-duplicatesp-eq legal-kwds)
                                  (hints-specifier-p x legal-kwds))))
      (let ((__function__ 'canonicalize-hints-specifier))
        (declare (ignorable __function__))
        (cond ((canonical-hints-specifier-p x legal-kwds)
               x)
              (t (acl2::make-keyword-value-list-from-keys-and-value
                      legal-kwds x)))))

    Theorem: return-type-of-canonicalize-hints-specifier

    (defthm return-type-of-canonicalize-hints-specifier
     (implies
      (and
         (keyword-listp legal-kwds)
         ((lambda (acl2::x)
            (return-last
                 'acl2::mbe1-raw
                 (acl2::no-duplicatesp-eq-exec acl2::x)
                 (return-last
                      'progn
                      (acl2::no-duplicatesp-eq-exec$guard-check acl2::x)
                      (no-duplicatesp-equal acl2::x))))
          legal-kwds)
         (hints-specifier-p x legal-kwds))
      (b* ((cx (canonicalize-hints-specifier x legal-kwds)))
        (canonical-hints-specifier-p cx legal-kwds)))
     :rule-classes :rewrite)