• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Community
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
      • Kestrel-books
      • X86isa
        • Program-execution
        • Sdm-instruction-set-summary
        • Tlb
          • Tlb-key
            • !tlb-key->implicit-supervisor-access
            • Tlb-key-fast
            • Tlb-key-p
            • !tlb-key->r-w-x
            • !tlb-key->vpn
            • !tlb-key->smep
            • !tlb-key->smap
            • !tlb-key->cpl
            • !tlb-key->nxe
            • Tlb-key->implicit-supervisor-access
            • !tlb-key->wp
            • !tlb-key->ac
            • Tlb-key->vpn
            • Tlb-key->smep
            • Tlb-key->smap
            • Tlb-key->r-w-x
            • Tlb-key->cpl
            • Tlb-key-fix
            • Tlb-key->wp
            • Tlb-key->nxe
            • Tlb-key->ac
              • Good-tlb-key-p
            • Tlbp
            • Tlb-entryp
          • Running-linux
          • Introduction
          • Asmtest
          • X86isa-build-instructions
          • Publications
          • Contributors
          • Machine
          • Implemented-opcodes
          • To-do
          • Proof-utilities
          • Peripherals
          • Model-validation
          • Modelcalls
          • Concrete-simulation-examples
          • Utils
          • Debugging-code-proofs
        • Axe
        • Execloader
      • Math
      • Testing-utilities
    • Tlb-key

    Tlb-key->ac

    Access the |X86ISA|::|AC| field of a tlb-key bit structure.

    Signature
    (tlb-key->ac x) → ac
    Arguments
    x — Guard (tlb-key-p x).
    Returns
    ac — Type (bitp ac).

    Definitions and Theorems

    Function: tlb-key->ac$inline

    (defun tlb-key->ac$inline (x)
     (declare (xargs :guard (tlb-key-p x)))
     (mbe
        :logic
        (let ((x (tlb-key-fix x)))
          (part-select x :low 3 :width 1))
        :exec (the (unsigned-byte 1)
                   (logand (the (unsigned-byte 1) 1)
                           (the (unsigned-byte 43)
                                (ash (the (unsigned-byte 46) x) -3))))))

    Theorem: bitp-of-tlb-key->ac

    (defthm bitp-of-tlb-key->ac
      (b* ((ac (tlb-key->ac$inline x)))
        (bitp ac))
      :rule-classes :rewrite)

    Theorem: tlb-key->ac$inline-of-tlb-key-fix-x

    (defthm tlb-key->ac$inline-of-tlb-key-fix-x
      (equal (tlb-key->ac$inline (tlb-key-fix x))
             (tlb-key->ac$inline x)))

    Theorem: tlb-key->ac$inline-tlb-key-equiv-congruence-on-x

    (defthm tlb-key->ac$inline-tlb-key-equiv-congruence-on-x
      (implies (tlb-key-equiv x x-equiv)
               (equal (tlb-key->ac$inline x)
                      (tlb-key->ac$inline x-equiv)))
      :rule-classes :congruence)

    Theorem: tlb-key->ac-of-tlb-key

    (defthm tlb-key->ac-of-tlb-key
     (equal (tlb-key->ac (tlb-key wp smep
                                  smap ac nxe implicit-supervisor-access
                                  r-w-x cpl vpn))
            (bfix ac)))

    Theorem: tlb-key->ac-of-write-with-mask

    (defthm tlb-key->ac-of-write-with-mask
     (implies
      (and
        (fty::bitstruct-read-over-write-hyps x tlb-key-equiv-under-mask)
        (tlb-key-equiv-under-mask x y fty::mask)
        (equal (logand (lognot fty::mask) 8) 0))
      (equal (tlb-key->ac x)
             (tlb-key->ac y))))