• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
      • Kestrel-books
        • Crypto-hdwallet
        • Apt
        • Error-checking
        • Fty-extensions
          • Defbyte
            • Defbytelist
              • Defbytelist-standard-instances
                • Ubyte8-list
                • Ubyte4-list
                • Ubyte32-list
                • Ubyte256-list
                • Ubyte128-list
                • Ubyte64-list
                • Ubyte3-list
                • Ubyte2-list
                • Ubyte16-list
                • Ubyte11-list
                • Ubyte1-list
                  • Ubyte1-list-fix
                    • Ubyte1-list-equiv
                    • Ubyte1-listp
                  • Sbyte8-list
                  • Sbyte64-list
                  • Sbyte4-list
                  • Sbyte32-list
                  • Sbyte3-list
                  • Sbyte256-list
                  • Sbyte2-list
                  • Sbyte16-list
                  • Sbyte128-list
                  • Sbyte1-list
                  • Defubytelist
                  • Defsbytelist
                • Defbytelist-implementation
              • Defbyte-standard-instances
              • Defbyte-ihs-theorems
              • Defbyte-implementation
            • Defresult
            • Fold
            • Specific-types
            • Defsubtype
            • Defset
            • Defflatsum
            • Deflist-of-len
            • Pos-list
            • Defomap
            • Defbytelist
              • Defbytelist-standard-instances
                • Ubyte8-list
                • Ubyte4-list
                • Ubyte32-list
                • Ubyte256-list
                • Ubyte128-list
                • Ubyte64-list
                • Ubyte3-list
                • Ubyte2-list
                • Ubyte16-list
                • Ubyte11-list
                • Ubyte1-list
                  • Ubyte1-list-fix
                    • Ubyte1-list-equiv
                    • Ubyte1-listp
                  • Sbyte8-list
                  • Sbyte64-list
                  • Sbyte4-list
                  • Sbyte32-list
                  • Sbyte3-list
                  • Sbyte256-list
                  • Sbyte2-list
                  • Sbyte16-list
                  • Sbyte128-list
                  • Sbyte1-list
                  • Defubytelist
                  • Defsbytelist
                • Defbytelist-implementation
              • Defbyte-standard-instances
              • Deffixtype-alias
              • Defbytelist-standard-instances
                • Ubyte8-list
                • Ubyte4-list
                • Ubyte32-list
                • Ubyte256-list
                • Ubyte128-list
                • Ubyte64-list
                • Ubyte3-list
                • Ubyte2-list
                • Ubyte16-list
                • Ubyte11-list
                • Ubyte1-list
                  • Ubyte1-list-fix
                    • Ubyte1-list-equiv
                    • Ubyte1-listp
                  • Sbyte8-list
                  • Sbyte64-list
                  • Sbyte4-list
                  • Sbyte32-list
                  • Sbyte3-list
                  • Sbyte256-list
                  • Sbyte2-list
                  • Sbyte16-list
                  • Sbyte128-list
                  • Sbyte1-list
                  • Defubytelist
                  • Defsbytelist
                • Defunit
                • Byte-list
                • Database
                • Byte
                • String-option
                • Pos-option
                • Nibble
                • Nat-option
                • Ubyte32-option
                • Byte-list20
                • Byte-list32
                • Byte-list64
                • Pseudo-event-form
                • Natoption/natoptionlist
                • Nati
                • Character-list
                • Nat/natlist
                • Maybe-string
                • Nibble-list
                • Natoption/natoptionlist-result
                • Nat/natlist-result
                • Nat-option-list-result
                • Set
                • String-result
                • String-list-result
                • Nat-result
                • Nat-option-result
                • Nat-list-result
                • Maybe-string-result
                • Integer-result
                • Character-result
                • Character-list-result
                • Boolean-result
                • Map
                • Dependencies
                • Bag
                • Pos-set
                • Hex-digit-char-list
                • Dec-digit-char-list
                • Pseudo-event-form-list
                • Nat-option-list
                • Character-any-map
                • Any-nat-map
                • Symbol-set
                • String-set
                • Nat-set
                • Character-set
                • Oct-digit-char-list
                • Bin-digit-char-list
                • Bit-list
              • Isar
              • Kestrel-utilities
              • Set
              • C
              • Soft
              • Bv
              • Imp-language
              • Ethereum
              • Event-macros
              • Java
              • Riscv
              • Bitcoin
              • Zcash
              • Yul
              • ACL2-programming-language
              • Prime-fields
              • Json
              • Syntheto
              • File-io-light
              • Cryptography
              • Number-theory
              • Axe
              • Lists-light
              • Builtins
              • Solidity
              • Helpers
              • Htclient
              • Typed-lists-light
              • Arithmetic-light
            • X86isa
            • Axe
            • Execloader
          • Math
          • Testing-utilities
        • Ubyte1-list

        Ubyte1-list-fix

        (ubyte1-list-fix x) is a usual fty list fixing function.

        Signature
        (ubyte1-list-fix x) → fty::newx
        Arguments
        x — Guard (ubyte1-listp x).
        Returns
        fty::newx — Type (ubyte1-listp fty::newx).

        In the logic, we apply ubyte1-fix to each member of the x. In the execution, none of that is actually necessary and this is just an inlined identity function.

        Definitions and Theorems

        Function: ubyte1-list-fix$inline

        (defun ubyte1-list-fix$inline (x)
          (declare (xargs :guard (ubyte1-listp x)))
          (let ((__function__ 'ubyte1-list-fix))
            (declare (ignorable __function__))
            (mbe :logic
                 (if (atom x)
                     nil
                   (cons (ubyte1-fix (car x))
                         (ubyte1-list-fix (cdr x))))
                 :exec x)))

        Theorem: ubyte1-listp-of-ubyte1-list-fix

        (defthm ubyte1-listp-of-ubyte1-list-fix
          (b* ((fty::newx (ubyte1-list-fix$inline x)))
            (ubyte1-listp fty::newx))
          :rule-classes :rewrite)

        Theorem: ubyte1-list-fix-when-ubyte1-listp

        (defthm ubyte1-list-fix-when-ubyte1-listp
          (implies (ubyte1-listp x)
                   (equal (ubyte1-list-fix x) x)))

        Function: ubyte1-list-equiv$inline

        (defun ubyte1-list-equiv$inline (x y)
          (declare (xargs :guard (and (ubyte1-listp x)
                                      (ubyte1-listp y))))
          (equal (ubyte1-list-fix x)
                 (ubyte1-list-fix y)))

        Theorem: ubyte1-list-equiv-is-an-equivalence

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

        Theorem: ubyte1-list-equiv-implies-equal-ubyte1-list-fix-1

        (defthm ubyte1-list-equiv-implies-equal-ubyte1-list-fix-1
          (implies (ubyte1-list-equiv x x-equiv)
                   (equal (ubyte1-list-fix x)
                          (ubyte1-list-fix x-equiv)))
          :rule-classes (:congruence))

        Theorem: ubyte1-list-fix-under-ubyte1-list-equiv

        (defthm ubyte1-list-fix-under-ubyte1-list-equiv
          (ubyte1-list-equiv (ubyte1-list-fix x)
                             x)
          :rule-classes (:rewrite :rewrite-quoted-constant))

        Theorem: equal-of-ubyte1-list-fix-1-forward-to-ubyte1-list-equiv

        (defthm equal-of-ubyte1-list-fix-1-forward-to-ubyte1-list-equiv
          (implies (equal (ubyte1-list-fix x) y)
                   (ubyte1-list-equiv x y))
          :rule-classes :forward-chaining)

        Theorem: equal-of-ubyte1-list-fix-2-forward-to-ubyte1-list-equiv

        (defthm equal-of-ubyte1-list-fix-2-forward-to-ubyte1-list-equiv
          (implies (equal x (ubyte1-list-fix y))
                   (ubyte1-list-equiv x y))
          :rule-classes :forward-chaining)

        Theorem: ubyte1-list-equiv-of-ubyte1-list-fix-1-forward

        (defthm ubyte1-list-equiv-of-ubyte1-list-fix-1-forward
          (implies (ubyte1-list-equiv (ubyte1-list-fix x)
                                      y)
                   (ubyte1-list-equiv x y))
          :rule-classes :forward-chaining)

        Theorem: ubyte1-list-equiv-of-ubyte1-list-fix-2-forward

        (defthm ubyte1-list-equiv-of-ubyte1-list-fix-2-forward
          (implies (ubyte1-list-equiv x (ubyte1-list-fix y))
                   (ubyte1-list-equiv x y))
          :rule-classes :forward-chaining)

        Theorem: car-of-ubyte1-list-fix-x-under-ubyte1-equiv

        (defthm car-of-ubyte1-list-fix-x-under-ubyte1-equiv
          (ubyte1-equiv (car (ubyte1-list-fix x))
                        (car x)))

        Theorem: car-ubyte1-list-equiv-congruence-on-x-under-ubyte1-equiv

        (defthm car-ubyte1-list-equiv-congruence-on-x-under-ubyte1-equiv
          (implies (ubyte1-list-equiv x x-equiv)
                   (ubyte1-equiv (car x) (car x-equiv)))
          :rule-classes :congruence)

        Theorem: cdr-of-ubyte1-list-fix-x-under-ubyte1-list-equiv

        (defthm cdr-of-ubyte1-list-fix-x-under-ubyte1-list-equiv
          (ubyte1-list-equiv (cdr (ubyte1-list-fix x))
                             (cdr x)))

        Theorem: cdr-ubyte1-list-equiv-congruence-on-x-under-ubyte1-list-equiv

        (defthm
              cdr-ubyte1-list-equiv-congruence-on-x-under-ubyte1-list-equiv
          (implies (ubyte1-list-equiv x x-equiv)
                   (ubyte1-list-equiv (cdr x)
                                      (cdr x-equiv)))
          :rule-classes :congruence)

        Theorem: cons-of-ubyte1-fix-x-under-ubyte1-list-equiv

        (defthm cons-of-ubyte1-fix-x-under-ubyte1-list-equiv
          (ubyte1-list-equiv (cons (ubyte1-fix x) y)
                             (cons x y)))

        Theorem: cons-ubyte1-equiv-congruence-on-x-under-ubyte1-list-equiv

        (defthm cons-ubyte1-equiv-congruence-on-x-under-ubyte1-list-equiv
          (implies (ubyte1-equiv x x-equiv)
                   (ubyte1-list-equiv (cons x y)
                                      (cons x-equiv y)))
          :rule-classes :congruence)

        Theorem: cons-of-ubyte1-list-fix-y-under-ubyte1-list-equiv

        (defthm cons-of-ubyte1-list-fix-y-under-ubyte1-list-equiv
          (ubyte1-list-equiv (cons x (ubyte1-list-fix y))
                             (cons x y)))

        Theorem: cons-ubyte1-list-equiv-congruence-on-y-under-ubyte1-list-equiv

        (defthm
             cons-ubyte1-list-equiv-congruence-on-y-under-ubyte1-list-equiv
          (implies (ubyte1-list-equiv y y-equiv)
                   (ubyte1-list-equiv (cons x y)
                                      (cons x y-equiv)))
          :rule-classes :congruence)

        Theorem: consp-of-ubyte1-list-fix

        (defthm consp-of-ubyte1-list-fix
          (equal (consp (ubyte1-list-fix x))
                 (consp x)))

        Theorem: ubyte1-list-fix-under-iff

        (defthm ubyte1-list-fix-under-iff
          (iff (ubyte1-list-fix x) (consp x)))

        Theorem: ubyte1-list-fix-of-cons

        (defthm ubyte1-list-fix-of-cons
          (equal (ubyte1-list-fix (cons a x))
                 (cons (ubyte1-fix a)
                       (ubyte1-list-fix x))))

        Theorem: len-of-ubyte1-list-fix

        (defthm len-of-ubyte1-list-fix
          (equal (len (ubyte1-list-fix x))
                 (len x)))

        Theorem: ubyte1-list-fix-of-append

        (defthm ubyte1-list-fix-of-append
          (equal (ubyte1-list-fix (append std::a std::b))
                 (append (ubyte1-list-fix std::a)
                         (ubyte1-list-fix std::b))))

        Theorem: ubyte1-list-fix-of-repeat

        (defthm ubyte1-list-fix-of-repeat
          (equal (ubyte1-list-fix (repeat n x))
                 (repeat n (ubyte1-fix x))))

        Theorem: list-equiv-refines-ubyte1-list-equiv

        (defthm list-equiv-refines-ubyte1-list-equiv
          (implies (list-equiv x y)
                   (ubyte1-list-equiv x y))
          :rule-classes :refinement)

        Theorem: nth-of-ubyte1-list-fix

        (defthm nth-of-ubyte1-list-fix
          (equal (nth n (ubyte1-list-fix x))
                 (if (< (nfix n) (len x))
                     (ubyte1-fix (nth n x))
                   nil)))

        Theorem: ubyte1-list-equiv-implies-ubyte1-list-equiv-append-1

        (defthm ubyte1-list-equiv-implies-ubyte1-list-equiv-append-1
          (implies (ubyte1-list-equiv x fty::x-equiv)
                   (ubyte1-list-equiv (append x y)
                                      (append fty::x-equiv y)))
          :rule-classes (:congruence))

        Theorem: ubyte1-list-equiv-implies-ubyte1-list-equiv-append-2

        (defthm ubyte1-list-equiv-implies-ubyte1-list-equiv-append-2
          (implies (ubyte1-list-equiv y fty::y-equiv)
                   (ubyte1-list-equiv (append x y)
                                      (append x fty::y-equiv)))
          :rule-classes (:congruence))

        Theorem: ubyte1-list-equiv-implies-ubyte1-list-equiv-nthcdr-2

        (defthm ubyte1-list-equiv-implies-ubyte1-list-equiv-nthcdr-2
          (implies (ubyte1-list-equiv l l-equiv)
                   (ubyte1-list-equiv (nthcdr n l)
                                      (nthcdr n l-equiv)))
          :rule-classes (:congruence))

        Theorem: ubyte1-list-equiv-implies-ubyte1-list-equiv-take-2

        (defthm ubyte1-list-equiv-implies-ubyte1-list-equiv-take-2
          (implies (ubyte1-list-equiv l l-equiv)
                   (ubyte1-list-equiv (take n l)
                                      (take n l-equiv)))
          :rule-classes (:congruence))