• 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
        • Set
        • Soft
        • C
          • Syntax-for-tools
            • Disambiguator
            • Abstract-syntax
            • Parser
            • Validator
            • Printer
              • Print-exprs/decls/stmts
              • Print-expr
              • Pristate
                • Pristatep
                • Pristate-fix
                  • Pristate-equiv
                  • Make-pristate
                  • Pristate->indent-level
                  • Pristate->options
                  • Pristate->bytes-rev
                  • Change-pristate
                • Print-fileset
                • Print-dec/oct/hex-const
                • Priopt
                • Print-fundef
                • Print-s-char
                • Print-c-char
                • Print-typequal/attribspec-list-list
                • Print-ident
                • Print-ident-list
                • Print-hex-core-fconst
                • Print-dec-core-fconst
                • Print-oct-digit-achar
                • Print-hex-frac-const
                • Print-hex-digit-achar
                • Print-dec-frac-const
                • Print-dec-digit-achar
                • Print-strunispec
                • Print-file
                • Print-astring
                • Print-asm-name-spec
                • Print-asm-clobber-list
                • Print-stringlit-list
                • Print-inc/dec-op-list
                • Print-cprefix-option
                • Print-binop
                • Print-univ-char-name
                • Print-type-qual
                • Print-transunit
                • Print-simple-escape
                • Print-s-char-list
                • Print-isuffix-option
                • Print-indent
                • Print-fsuffix-option
                • Print-extdecl-list
                • Print-eprefix-option
                • Print-dec-expo-option
                • Print-char
                • Print-c-char-list
                • Print-attrib-name
                • Print-asm-qual-list
                • Print-stor-spec
                • Print-oct-escape
                • Print-escape
                • Print-dec-expo-prefix
                • Print-cconst
                • Print-bin-expo-prefix
                • Dec-pristate-indent
                • Print-stringlit
                • Print-sign-option
                • Print-isuffix
                • Print-fun-spec
                • Print-fconst
                • Print-extdecl
                • Print-dec-expo
                • Print-block
                • Print-bin-expo
                • Print-asm-qual
                • Print-asm-clobber
                • Print-new-line
                • Print-lsuffix
                • Print-inc/dec-op
                • Print-hex-quad
                • Print-fsuffix
                • Print-eprefix
                • Print-cprefix
                • Print-usuffix
                • Print-unop
                • Print-iconst
                • Print-hprefix
                • Print-const
                • Print-chars
                • Print-sign
                • Print-oct-digit-achars
                • Print-hex-digit-achars
                • Print-dec-digit-achars
                • Print-stmt
                • Print-expr-list
                • Init-pristate
                • Print-structdecl-list
                • Inc-pristate-indent
                • Print-param-declor
                • Print-dirdeclor
                • Default-priopt
                • Print-structdeclor
                • Print-initer
                • Print-decl-inline
                • Print-structdecl
                • Print-genassoc-list
                • Print-enumspec
                • Print-absdeclor
                • Print-typequal/attribspec-list
                • Print-desiniter-list
                • Print-const-expr
                • Print-attrib
                • Print-tyname
                • Print-structdeclor-list
                • Print-spec/qual-list
                • Print-param-declon-list
                • Print-param-declon
                • Print-initdeclor-list
                • Print-designor-list
                • Print-decl-spec-list
                • Print-decl-list
                • Print-attrib-spec-list
                • Print-asm-output-list
                • Print-asm-input-list
                • Print-typequal/attribspec
                • Print-statassert
                • Print-spec/qual
                • Print-member-designor
                • Print-initdeclor
                • Print-enumer-list
                • Print-dirabsdeclor
                • Print-desiniter
                • Print-decl-spec
                • Print-decl
                • Print-block-item-list
                • Print-attrib-spec
                • Print-attrib-list
                • Print-asm-output
                • Print-align-spec
                • Print-type-spec
                • Print-label
                • Print-genassoc
                • Print-enumer
                • Print-designor
                • Print-declor
                • Print-block-item
                • Print-asm-stmt
                • Print-asm-input
              • Formalized-subset
              • Mapping-to-language-definition
              • Input-files
              • Defpred
              • Output-files
              • Abstract-syntax-operations
              • Validation-information
              • Implementation-environments
              • Concrete-syntax
              • Unambiguity
              • Ascii-identifiers
              • Preprocessing
              • Abstraction-mapping
            • Atc
            • Language
            • Representation
            • Transformation-tools
            • Insertion-sort
            • Pack
          • 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
    • Pristate

    Pristate-fix

    Fixing function for pristate structures.

    Signature
    (pristate-fix x) → new-x
    Arguments
    x — Guard (pristatep x).
    Returns
    new-x — Type (pristatep new-x).

    Definitions and Theorems

    Function: pristate-fix$inline

    (defun pristate-fix$inline (x)
      (declare (xargs :guard (pristatep x)))
      (let ((__function__ 'pristate-fix))
        (declare (ignorable __function__))
        (mbe :logic
             (b* ((bytes-rev (byte-list-fix (cdr (std::da-nth 0 x))))
                  (indent-level (nfix (cdr (std::da-nth 1 x))))
                  (options (priopt-fix (cdr (std::da-nth 2 x)))))
               (list (cons 'bytes-rev bytes-rev)
                     (cons 'indent-level indent-level)
                     (cons 'options options)))
             :exec x)))

    Theorem: pristatep-of-pristate-fix

    (defthm pristatep-of-pristate-fix
      (b* ((new-x (pristate-fix$inline x)))
        (pristatep new-x))
      :rule-classes :rewrite)

    Theorem: pristate-fix-when-pristatep

    (defthm pristate-fix-when-pristatep
      (implies (pristatep x)
               (equal (pristate-fix x) x)))

    Function: pristate-equiv$inline

    (defun pristate-equiv$inline (acl2::x acl2::y)
      (declare (xargs :guard (and (pristatep acl2::x)
                                  (pristatep acl2::y))))
      (equal (pristate-fix acl2::x)
             (pristate-fix acl2::y)))

    Theorem: pristate-equiv-is-an-equivalence

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

    Theorem: pristate-equiv-implies-equal-pristate-fix-1

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

    Theorem: pristate-fix-under-pristate-equiv

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

    Theorem: equal-of-pristate-fix-1-forward-to-pristate-equiv

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

    Theorem: equal-of-pristate-fix-2-forward-to-pristate-equiv

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

    Theorem: pristate-equiv-of-pristate-fix-1-forward

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

    Theorem: pristate-equiv-of-pristate-fix-2-forward

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