• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
      • Apt
      • 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
        • Instructions
        • States
          • Stat
          • Stat-validp
          • Write-memory-unsigned64
          • Write-memory-unsigned32
          • Write-memory-unsigned8
          • Write-memory-unsigned16
          • Read-xreg-unsigned
          • Write-xreg-32
          • States64
          • Write-xreg
          • Read-memory-unsigned8
          • Read-memory-unsigned64
          • Read-memory-unsigned32
          • Read-memory-unsigned16
          • Read-xreg-signed
          • Read-xreg-unsigned32
          • States32
            • Write32-xreg
            • Xregfile32
            • Write32-mem-ubyte16-lendian
            • State32
            • Memory32
            • Write32-mem-ubyte32-lendian
            • Write32-pc
            • Write32-mem-ubyte8
            • Read32-mem-ubyte16-lendian
            • Read32-xreg-unsigned
              • Read32-mem-ubyte8
              • Read32-mem-ubyte32-lendian
              • Read32-xreg-signed
              • Inc32-pc
              • Read32-pc
              • Error32p
              • Error32
              • *mem32-size*
            • Write-pc
            • Read-xreg-signed32
            • Read-pc
            • Inc4-pc
          • Decoding
          • Encoding
          • Features
          • Semantics
          • Execution
        • 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
    • States32

    Read32-xreg-unsigned

    Read an unsigned 32-bit integer from an x register.

    Signature
    (read32-xreg-unsigned reg stat) → val
    Arguments
    reg — Guard (ubyte5p reg).
    stat — Guard (state32p stat).
    Returns
    val — Type (ubyte32p val).

    The register index consists of 5 bits. If the index is 0, we return 0, because x0 is always (implicitly) 0. Otherwise, we read the whole register (decreasing the index by 1), which is unsigned.

    Definitions and Theorems

    Function: read32-xreg-unsigned

    (defun read32-xreg-unsigned (reg stat)
      (declare (xargs :guard (and (ubyte5p reg) (state32p stat))))
      (let ((__function__ 'read32-xreg-unsigned))
        (declare (ignorable __function__))
        (b* ((reg (ubyte5-fix reg)))
          (if (= reg 0)
              0
            (nth (1- reg)
                 (state32->xregfile stat))))))

    Theorem: ubyte32p-of-read32-xreg-unsigned

    (defthm ubyte32p-of-read32-xreg-unsigned
      (b* ((val (read32-xreg-unsigned reg stat)))
        (ubyte32p val))
      :rule-classes :rewrite)

    Theorem: read32-xreg-unsigned-of-ubyte5-fix-reg

    (defthm read32-xreg-unsigned-of-ubyte5-fix-reg
      (equal (read32-xreg-unsigned (ubyte5-fix reg)
                                   stat)
             (read32-xreg-unsigned reg stat)))

    Theorem: read32-xreg-unsigned-ubyte5-equiv-congruence-on-reg

    (defthm read32-xreg-unsigned-ubyte5-equiv-congruence-on-reg
      (implies (ubyte5-equiv reg reg-equiv)
               (equal (read32-xreg-unsigned reg stat)
                      (read32-xreg-unsigned reg-equiv stat)))
      :rule-classes :congruence)

    Theorem: read32-xreg-unsigned-of-state32-fix-stat

    (defthm read32-xreg-unsigned-of-state32-fix-stat
      (equal (read32-xreg-unsigned reg (state32-fix stat))
             (read32-xreg-unsigned reg stat)))

    Theorem: read32-xreg-unsigned-state32-equiv-congruence-on-stat

    (defthm read32-xreg-unsigned-state32-equiv-congruence-on-stat
      (implies (state32-equiv stat stat-equiv)
               (equal (read32-xreg-unsigned reg stat)
                      (read32-xreg-unsigned reg stat-equiv)))
      :rule-classes :congruence)