• 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
            • Write64-xreg
            • Write64-xreg-32
            • Write64-mem-ubyte64-lendian
            • Write64-mem-ubyte16-lendian
            • Xregfile64
            • State64
            • Memory64
            • Write64-mem-ubyte32-lendian
            • Write64-pc
            • Write64-mem-ubyte8
            • Read64-mem-ubyte64-lendian
            • Read64-mem-ubyte16-lendian
            • Read64-mem-ubyte32-lendian
            • Read64-xreg-unsigned
              • Read64-mem-ubyte8
              • Read64-xreg-unsigned32
              • Read64-xreg-signed32
              • Read64-xreg-signed
              • Inc64-pc
              • Read64-pc
              • Error64p
              • Error64
              • *mem64-size*
            • Write-xreg
            • Read-memory-unsigned8
            • Read-memory-unsigned64
            • Read-memory-unsigned32
            • Read-memory-unsigned16
            • Read-xreg-signed
            • Read-xreg-unsigned32
            • States32
            • 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
    • States64

    Read64-xreg-unsigned

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

    Signature
    (read64-xreg-unsigned reg stat) → val
    Arguments
    reg — Guard (ubyte5p reg).
    stat — Guard (state64p stat).
    Returns
    val — Type (ubyte64p 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: read64-xreg-unsigned

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

    Theorem: ubyte64p-of-read64-xreg-unsigned

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

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

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

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

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

    Theorem: read64-xreg-unsigned-of-state64-fix-stat

    (defthm read64-xreg-unsigned-of-state64-fix-stat
      (equal (read64-xreg-unsigned reg (state64-fix stat))
             (read64-xreg-unsigned reg stat)))

    Theorem: read64-xreg-unsigned-state64-equiv-congruence-on-stat

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