• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
      • Apt
      • Zfc
      • Acre
      • Milawa
      • Smtlink
        • Z3-installation
        • Smt-hint
        • Tutorial
        • Status
        • Developer
          • Verified
            • Uninterpreted-fn-cp
            • Smt-hint-interface
            • Function-expansion
            • Smt-config
            • Fty-support
            • Smt-computed-hints
            • Add-hypo-cp
            • Smt-hint-please
            • Type-extract-cp
            • Smt-extract
            • Smtlink-process-user-hint
              • Process-smtlink-hints
              • Function-syntax
              • Smtlink-hint-syntax
              • Argument-lst-syntax
                • Argument-syntax-p
                • Argument-lst-syntax-p
                • Argument-lst-syntax-fix
                • Argument-syntax-fix
                • Smt-typep
              • Hypothesis-lst-syntax
              • Translate-cmp-smtlink
              • Process-hint-clause-processor
              • Smt-solver-params
              • Hints-syntax
              • True-set-equiv-relation
            • Smt-basics
            • Smt-type-hyp
            • Smt-magic-fix
          • Trusted
      • 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
  • Smtlink-process-user-hint

Argument-lst-syntax

Definitions and Theorems

Function: smt-typep

(defun smt-typep (term)
  (declare (xargs :guard t))
  (let ((acl2::__function__ 'smt-typep))
    (declare (ignorable acl2::__function__))
    (symbolp term)))

Theorem: booleanp-of-smt-typep

(defthm booleanp-of-smt-typep
  (b* ((valid-type? (smt-typep term)))
    (booleanp valid-type?))
  :rule-classes :rewrite)

Function: argument-syntax-p

(defun argument-syntax-p (term)
  (declare (xargs :guard t))
  (let ((acl2::__function__ 'argument-syntax-p))
    (declare (ignorable acl2::__function__))
    (or (and (atom term) (equal term nil))
        (and (true-listp term)
             (car term)
             (not (cdr term))
             (symbolp (car term)))
        (and (true-listp term)
             (car term)
             (cadr term)
             (not (cddr term))
             (symbolp (car term))
             (smt-typep (cadr term)))
        (and (true-listp term)
             (car term)
             (cadr term)
             (not (cddddr term))
             (symbolp (car term))
             (smt-typep (cadr term))
             (equal ':hints (caddr term))
             (hints-syntax-p (cadddr term))))))

Theorem: booleanp-of-argument-syntax-p

(defthm booleanp-of-argument-syntax-p
  (b* ((syntax-good? (argument-syntax-p term)))
    (booleanp syntax-good?))
  :rule-classes :rewrite)

Function: argument-syntax-fix

(defun argument-syntax-fix (term)
  (declare (xargs :guard (argument-syntax-p term)))
  (let ((acl2::__function__ 'argument-syntax-fix))
    (declare (ignorable acl2::__function__))
    (mbe :logic (if (argument-syntax-p term) term nil)
         :exec term)))

Theorem: argument-syntax-p-of-argument-syntax-fix

(defthm argument-syntax-p-of-argument-syntax-fix
  (b* ((fixed-term (argument-syntax-fix term)))
    (argument-syntax-p fixed-term))
  :rule-classes :rewrite)

Function: argument-syntax-equiv$inline

(defun argument-syntax-equiv$inline (acl2::x acl2::y)
  (declare (xargs :guard (and (argument-syntax-p acl2::x)
                              (argument-syntax-p acl2::y))))
  (equal (argument-syntax-fix acl2::x)
         (argument-syntax-fix acl2::y)))

Theorem: argument-syntax-equiv-is-an-equivalence

(defthm argument-syntax-equiv-is-an-equivalence
  (and (booleanp (argument-syntax-equiv x y))
       (argument-syntax-equiv x x)
       (implies (argument-syntax-equiv x y)
                (argument-syntax-equiv y x))
       (implies (and (argument-syntax-equiv x y)
                     (argument-syntax-equiv y z))
                (argument-syntax-equiv x z)))
  :rule-classes (:equivalence))

Theorem: argument-syntax-equiv-implies-equal-argument-syntax-fix-1

(defthm argument-syntax-equiv-implies-equal-argument-syntax-fix-1
  (implies (argument-syntax-equiv acl2::x x-equiv)
           (equal (argument-syntax-fix acl2::x)
                  (argument-syntax-fix x-equiv)))
  :rule-classes (:congruence))

Theorem: argument-syntax-fix-under-argument-syntax-equiv

(defthm argument-syntax-fix-under-argument-syntax-equiv
  (argument-syntax-equiv (argument-syntax-fix acl2::x)
                         acl2::x)
  :rule-classes (:rewrite :rewrite-quoted-constant))

Theorem: equal-of-argument-syntax-fix-1-forward-to-argument-syntax-equiv

(defthm
    equal-of-argument-syntax-fix-1-forward-to-argument-syntax-equiv
  (implies (equal (argument-syntax-fix acl2::x)
                  acl2::y)
           (argument-syntax-equiv acl2::x acl2::y))
  :rule-classes :forward-chaining)

Theorem: equal-of-argument-syntax-fix-2-forward-to-argument-syntax-equiv

(defthm
    equal-of-argument-syntax-fix-2-forward-to-argument-syntax-equiv
  (implies (equal acl2::x (argument-syntax-fix acl2::y))
           (argument-syntax-equiv acl2::x acl2::y))
  :rule-classes :forward-chaining)

Theorem: argument-syntax-equiv-of-argument-syntax-fix-1-forward

(defthm argument-syntax-equiv-of-argument-syntax-fix-1-forward
  (implies (argument-syntax-equiv (argument-syntax-fix acl2::x)
                                  acl2::y)
           (argument-syntax-equiv acl2::x acl2::y))
  :rule-classes :forward-chaining)

Theorem: argument-syntax-equiv-of-argument-syntax-fix-2-forward

(defthm argument-syntax-equiv-of-argument-syntax-fix-2-forward
  (implies
       (argument-syntax-equiv acl2::x (argument-syntax-fix acl2::y))
       (argument-syntax-equiv acl2::x acl2::y))
  :rule-classes :forward-chaining)

Function: argument-lst-syntax-p

(defun argument-lst-syntax-p (term)
  (declare (xargs :guard t))
  (let ((acl2::__function__ 'argument-lst-syntax-p))
    (declare (ignorable acl2::__function__))
    (b* (((if (atom term)) (equal term nil))
         ((cons first rest) term))
      (and (argument-syntax-p first)
           (argument-lst-syntax-p rest)))))

Theorem: booleanp-of-argument-lst-syntax-p

(defthm booleanp-of-argument-lst-syntax-p
  (b* ((syntax-good? (argument-lst-syntax-p term)))
    (booleanp syntax-good?))
  :rule-classes :rewrite)

Function: argument-lst-syntax-fix

(defun argument-lst-syntax-fix (term)
  (declare (xargs :guard (argument-lst-syntax-p term)))
  (let ((acl2::__function__ 'argument-lst-syntax-fix))
    (declare (ignorable acl2::__function__))
    (mbe :logic
         (if (consp term)
             (cons (argument-syntax-fix (car term))
                   (argument-lst-syntax-fix (cdr term)))
           nil)
         :exec term)))

Theorem: argument-lst-syntax-p-of-argument-lst-syntax-fix

(defthm argument-lst-syntax-p-of-argument-lst-syntax-fix
  (b* ((fixed-term (argument-lst-syntax-fix term)))
    (argument-lst-syntax-p fixed-term))
  :rule-classes :rewrite)

Function: argument-lst-syntax-equiv$inline

(defun argument-lst-syntax-equiv$inline (acl2::x acl2::y)
  (declare (xargs :guard (and (argument-lst-syntax-p acl2::x)
                              (argument-lst-syntax-p acl2::y))))
  (equal (argument-lst-syntax-fix acl2::x)
         (argument-lst-syntax-fix acl2::y)))

Theorem: argument-lst-syntax-equiv-is-an-equivalence

(defthm argument-lst-syntax-equiv-is-an-equivalence
  (and (booleanp (argument-lst-syntax-equiv x y))
       (argument-lst-syntax-equiv x x)
       (implies (argument-lst-syntax-equiv x y)
                (argument-lst-syntax-equiv y x))
       (implies (and (argument-lst-syntax-equiv x y)
                     (argument-lst-syntax-equiv y z))
                (argument-lst-syntax-equiv x z)))
  :rule-classes (:equivalence))

Theorem: argument-lst-syntax-equiv-implies-equal-argument-lst-syntax-fix-1

(defthm
  argument-lst-syntax-equiv-implies-equal-argument-lst-syntax-fix-1
  (implies (argument-lst-syntax-equiv acl2::x x-equiv)
           (equal (argument-lst-syntax-fix acl2::x)
                  (argument-lst-syntax-fix x-equiv)))
  :rule-classes (:congruence))

Theorem: argument-lst-syntax-fix-under-argument-lst-syntax-equiv

(defthm argument-lst-syntax-fix-under-argument-lst-syntax-equiv
  (argument-lst-syntax-equiv (argument-lst-syntax-fix acl2::x)
                             acl2::x)
  :rule-classes (:rewrite :rewrite-quoted-constant))

Theorem: equal-of-argument-lst-syntax-fix-1-forward-to-argument-lst-syntax-equiv

(defthm
 equal-of-argument-lst-syntax-fix-1-forward-to-argument-lst-syntax-equiv
 (implies (equal (argument-lst-syntax-fix acl2::x)
                 acl2::y)
          (argument-lst-syntax-equiv acl2::x acl2::y))
 :rule-classes :forward-chaining)

Theorem: equal-of-argument-lst-syntax-fix-2-forward-to-argument-lst-syntax-equiv

(defthm
 equal-of-argument-lst-syntax-fix-2-forward-to-argument-lst-syntax-equiv
 (implies (equal acl2::x
                 (argument-lst-syntax-fix acl2::y))
          (argument-lst-syntax-equiv acl2::x acl2::y))
 :rule-classes :forward-chaining)

Theorem: argument-lst-syntax-equiv-of-argument-lst-syntax-fix-1-forward

(defthm
     argument-lst-syntax-equiv-of-argument-lst-syntax-fix-1-forward
  (implies
       (argument-lst-syntax-equiv (argument-lst-syntax-fix acl2::x)
                                  acl2::y)
       (argument-lst-syntax-equiv acl2::x acl2::y))
  :rule-classes :forward-chaining)

Theorem: argument-lst-syntax-equiv-of-argument-lst-syntax-fix-2-forward

(defthm
     argument-lst-syntax-equiv-of-argument-lst-syntax-fix-2-forward
  (implies
       (argument-lst-syntax-equiv acl2::x
                                  (argument-lst-syntax-fix acl2::y))
       (argument-lst-syntax-equiv acl2::x acl2::y))
  :rule-classes :forward-chaining)

Subtopics

Argument-syntax-p
Recognizer for argument-syntax.
Argument-lst-syntax-p
Recognizer for argument-lst-syntax.
Argument-lst-syntax-fix
Fixing function for argument-lst-syntax.
Argument-syntax-fix
Fixing function for argument-syntax-p.
Smt-typep
Types allowed in Smtlink.