An 192-bit unsigned bitstruct type.
This is a bitstruct type introduced by fty::defbitstruct, represented as a unsigned 192-bit integer.
Function:
(defun elf64_sym-p (x) (declare (xargs :guard t)) (let ((__function__ 'elf64_sym-p)) (declare (ignorable __function__)) (mbe :logic (unsigned-byte-p 192 x) :exec (and (natp x) (< x 6277101735386680763835789423207666416102355444464034512896)))))
Theorem:
(defthm elf64_sym-p-when-unsigned-byte-p (implies (unsigned-byte-p 192 x) (elf64_sym-p x)))
Theorem:
(defthm unsigned-byte-p-when-elf64_sym-p (implies (elf64_sym-p x) (unsigned-byte-p 192 x)))
Theorem:
(defthm elf64_sym-p-compound-recognizer (implies (elf64_sym-p x) (natp x)) :rule-classes :compound-recognizer)
Function:
(defun elf64_sym-fix (x) (declare (xargs :guard (elf64_sym-p x))) (let ((__function__ 'elf64_sym-fix)) (declare (ignorable __function__)) (mbe :logic (loghead 192 x) :exec x)))
Theorem:
(defthm elf64_sym-p-of-elf64_sym-fix (b* ((fty::fixed (elf64_sym-fix x))) (elf64_sym-p fty::fixed)) :rule-classes :rewrite)
Theorem:
(defthm elf64_sym-fix-when-elf64_sym-p (implies (elf64_sym-p x) (equal (elf64_sym-fix x) x)))
Function:
(defun elf64_sym-equiv$inline (x y) (declare (xargs :guard (and (elf64_sym-p x) (elf64_sym-p y)))) (equal (elf64_sym-fix x) (elf64_sym-fix y)))
Theorem:
(defthm elf64_sym-equiv-is-an-equivalence (and (booleanp (elf64_sym-equiv x y)) (elf64_sym-equiv x x) (implies (elf64_sym-equiv x y) (elf64_sym-equiv y x)) (implies (and (elf64_sym-equiv x y) (elf64_sym-equiv y z)) (elf64_sym-equiv x z))) :rule-classes (:equivalence))
Theorem:
(defthm elf64_sym-equiv-implies-equal-elf64_sym-fix-1 (implies (elf64_sym-equiv x x-equiv) (equal (elf64_sym-fix x) (elf64_sym-fix x-equiv))) :rule-classes (:congruence))
Theorem:
(defthm elf64_sym-fix-under-elf64_sym-equiv (elf64_sym-equiv (elf64_sym-fix x) x) :rule-classes (:rewrite :rewrite-quoted-constant))
Function:
(defun elf64_sym (name info other shndx value size) (declare (xargs :guard (and (elf_bits32-p name) (elf_bits8-p info) (elf_bits8-p other) (elf_bits16-p shndx) (elf_bits64-p value) (elf_bits64-p size)))) (let ((__function__ 'elf64_sym)) (declare (ignorable __function__)) (b* ((name (mbe :logic (elf_bits32-fix name) :exec name)) (info (mbe :logic (elf_bits8-fix info) :exec info)) (other (mbe :logic (elf_bits8-fix other) :exec other)) (shndx (mbe :logic (elf_bits16-fix shndx) :exec shndx)) (value (mbe :logic (elf_bits64-fix value) :exec value)) (size (mbe :logic (elf_bits64-fix size) :exec size))) (logapp 32 name (logapp 8 info (logapp 8 other (logapp 16 shndx (logapp 64 value size))))))))
Theorem:
(defthm elf64_sym-p-of-elf64_sym (b* ((elf64_sym (elf64_sym name info other shndx value size))) (elf64_sym-p elf64_sym)) :rule-classes :rewrite)
Theorem:
(defthm elf64_sym-of-elf_bits32-fix-name (equal (elf64_sym (elf_bits32-fix name) info other shndx value size) (elf64_sym name info other shndx value size)))
Theorem:
(defthm elf64_sym-elf_bits32-equiv-congruence-on-name (implies (elf_bits32-equiv name name-equiv) (equal (elf64_sym name info other shndx value size) (elf64_sym name-equiv info other shndx value size))) :rule-classes :congruence)
Theorem:
(defthm elf64_sym-of-elf_bits8-fix-info (equal (elf64_sym name (elf_bits8-fix info) other shndx value size) (elf64_sym name info other shndx value size)))
Theorem:
(defthm elf64_sym-elf_bits8-equiv-congruence-on-info (implies (elf_bits8-equiv info info-equiv) (equal (elf64_sym name info other shndx value size) (elf64_sym name info-equiv other shndx value size))) :rule-classes :congruence)
Theorem:
(defthm elf64_sym-of-elf_bits8-fix-other (equal (elf64_sym name info (elf_bits8-fix other) shndx value size) (elf64_sym name info other shndx value size)))
Theorem:
(defthm elf64_sym-elf_bits8-equiv-congruence-on-other (implies (elf_bits8-equiv other other-equiv) (equal (elf64_sym name info other shndx value size) (elf64_sym name info other-equiv shndx value size))) :rule-classes :congruence)
Theorem:
(defthm elf64_sym-of-elf_bits16-fix-shndx (equal (elf64_sym name info other (elf_bits16-fix shndx) value size) (elf64_sym name info other shndx value size)))
Theorem:
(defthm elf64_sym-elf_bits16-equiv-congruence-on-shndx (implies (elf_bits16-equiv shndx shndx-equiv) (equal (elf64_sym name info other shndx value size) (elf64_sym name info other shndx-equiv value size))) :rule-classes :congruence)
Theorem:
(defthm elf64_sym-of-elf_bits64-fix-value (equal (elf64_sym name info other shndx (elf_bits64-fix value) size) (elf64_sym name info other shndx value size)))
Theorem:
(defthm elf64_sym-elf_bits64-equiv-congruence-on-value (implies (elf_bits64-equiv value value-equiv) (equal (elf64_sym name info other shndx value size) (elf64_sym name info other shndx value-equiv size))) :rule-classes :congruence)
Theorem:
(defthm elf64_sym-of-elf_bits64-fix-size (equal (elf64_sym name info other shndx value (elf_bits64-fix size)) (elf64_sym name info other shndx value size)))
Theorem:
(defthm elf64_sym-elf_bits64-equiv-congruence-on-size (implies (elf_bits64-equiv size size-equiv) (equal (elf64_sym name info other shndx value size) (elf64_sym name info other shndx value size-equiv))) :rule-classes :congruence)
Function:
(defun elf64_sym-equiv-under-mask (x x1 mask) (declare (xargs :guard (and (elf64_sym-p x) (elf64_sym-p x1) (integerp mask)))) (let ((__function__ 'elf64_sym-equiv-under-mask)) (declare (ignorable __function__)) (fty::int-equiv-under-mask (elf64_sym-fix x) (elf64_sym-fix x1) mask)))
Function:
(defun elf64_sym->name (x) (declare (xargs :guard (elf64_sym-p x))) (mbe :logic (let ((x (elf64_sym-fix x))) (part-select x :low 0 :width 32)) :exec (the (unsigned-byte 32) (logand (the (unsigned-byte 32) 4294967295) (the (unsigned-byte 192) x)))))
Theorem:
(defthm elf_bits32-p-of-elf64_sym->name (b* ((name (elf64_sym->name x))) (elf_bits32-p name)) :rule-classes :rewrite)
Theorem:
(defthm elf64_sym->name-of-elf64_sym-fix-x (equal (elf64_sym->name (elf64_sym-fix x)) (elf64_sym->name x)))
Theorem:
(defthm elf64_sym->name-elf64_sym-equiv-congruence-on-x (implies (elf64_sym-equiv x x-equiv) (equal (elf64_sym->name x) (elf64_sym->name x-equiv))) :rule-classes :congruence)
Theorem:
(defthm elf64_sym->name-of-elf64_sym (equal (elf64_sym->name (elf64_sym name info other shndx value size)) (elf_bits32-fix name)))
Theorem:
(defthm elf64_sym->name-of-write-with-mask (implies (and (fty::bitstruct-read-over-write-hyps x elf64_sym-equiv-under-mask) (elf64_sym-equiv-under-mask x y fty::mask) (equal (logand (lognot fty::mask) 4294967295) 0)) (equal (elf64_sym->name x) (elf64_sym->name y))))
Function:
(defun elf64_sym->info (x) (declare (xargs :guard (elf64_sym-p x))) (mbe :logic (let ((x (elf64_sym-fix x))) (part-select x :low 32 :width 8)) :exec (the (unsigned-byte 8) (logand (the (unsigned-byte 8) 255) (the (unsigned-byte 160) (ash (the (unsigned-byte 192) x) -32))))))
Theorem:
(defthm elf_bits8-p-of-elf64_sym->info (b* ((info (elf64_sym->info x))) (elf_bits8-p info)) :rule-classes :rewrite)
Theorem:
(defthm elf64_sym->info-of-elf64_sym-fix-x (equal (elf64_sym->info (elf64_sym-fix x)) (elf64_sym->info x)))
Theorem:
(defthm elf64_sym->info-elf64_sym-equiv-congruence-on-x (implies (elf64_sym-equiv x x-equiv) (equal (elf64_sym->info x) (elf64_sym->info x-equiv))) :rule-classes :congruence)
Theorem:
(defthm elf64_sym->info-of-elf64_sym (equal (elf64_sym->info (elf64_sym name info other shndx value size)) (elf_bits8-fix info)))
Theorem:
(defthm elf64_sym->info-of-write-with-mask (implies (and (fty::bitstruct-read-over-write-hyps x elf64_sym-equiv-under-mask) (elf64_sym-equiv-under-mask x y fty::mask) (equal (logand (lognot fty::mask) 1095216660480) 0)) (equal (elf64_sym->info x) (elf64_sym->info y))))
Function:
(defun elf64_sym->other (x) (declare (xargs :guard (elf64_sym-p x))) (mbe :logic (let ((x (elf64_sym-fix x))) (part-select x :low 40 :width 8)) :exec (the (unsigned-byte 8) (logand (the (unsigned-byte 8) 255) (the (unsigned-byte 152) (ash (the (unsigned-byte 192) x) -40))))))
Theorem:
(defthm elf_bits8-p-of-elf64_sym->other (b* ((other (elf64_sym->other x))) (elf_bits8-p other)) :rule-classes :rewrite)
Theorem:
(defthm elf64_sym->other-of-elf64_sym-fix-x (equal (elf64_sym->other (elf64_sym-fix x)) (elf64_sym->other x)))
Theorem:
(defthm elf64_sym->other-elf64_sym-equiv-congruence-on-x (implies (elf64_sym-equiv x x-equiv) (equal (elf64_sym->other x) (elf64_sym->other x-equiv))) :rule-classes :congruence)
Theorem:
(defthm elf64_sym->other-of-elf64_sym (equal (elf64_sym->other (elf64_sym name info other shndx value size)) (elf_bits8-fix other)))
Theorem:
(defthm elf64_sym->other-of-write-with-mask (implies (and (fty::bitstruct-read-over-write-hyps x elf64_sym-equiv-under-mask) (elf64_sym-equiv-under-mask x y fty::mask) (equal (logand (lognot fty::mask) 280375465082880) 0)) (equal (elf64_sym->other x) (elf64_sym->other y))))
Function:
(defun elf64_sym->shndx (x) (declare (xargs :guard (elf64_sym-p x))) (mbe :logic (let ((x (elf64_sym-fix x))) (part-select x :low 48 :width 16)) :exec (the (unsigned-byte 16) (logand (the (unsigned-byte 16) 65535) (the (unsigned-byte 144) (ash (the (unsigned-byte 192) x) -48))))))
Theorem:
(defthm elf_bits16-p-of-elf64_sym->shndx (b* ((shndx (elf64_sym->shndx x))) (elf_bits16-p shndx)) :rule-classes :rewrite)
Theorem:
(defthm elf64_sym->shndx-of-elf64_sym-fix-x (equal (elf64_sym->shndx (elf64_sym-fix x)) (elf64_sym->shndx x)))
Theorem:
(defthm elf64_sym->shndx-elf64_sym-equiv-congruence-on-x (implies (elf64_sym-equiv x x-equiv) (equal (elf64_sym->shndx x) (elf64_sym->shndx x-equiv))) :rule-classes :congruence)
Theorem:
(defthm elf64_sym->shndx-of-elf64_sym (equal (elf64_sym->shndx (elf64_sym name info other shndx value size)) (elf_bits16-fix shndx)))
Theorem:
(defthm elf64_sym->shndx-of-write-with-mask (implies (and (fty::bitstruct-read-over-write-hyps x elf64_sym-equiv-under-mask) (elf64_sym-equiv-under-mask x y fty::mask) (equal (logand (lognot fty::mask) 18446462598732840960) 0)) (equal (elf64_sym->shndx x) (elf64_sym->shndx y))))
Function:
(defun elf64_sym->value (x) (declare (xargs :guard (elf64_sym-p x))) (mbe :logic (let ((x (elf64_sym-fix x))) (part-select x :low 64 :width 64)) :exec (the (unsigned-byte 64) (logand (the (unsigned-byte 64) 18446744073709551615) (the (unsigned-byte 128) (ash (the (unsigned-byte 192) x) -64))))))
Theorem:
(defthm elf_bits64-p-of-elf64_sym->value (b* ((value (elf64_sym->value x))) (elf_bits64-p value)) :rule-classes :rewrite)
Theorem:
(defthm elf64_sym->value-of-elf64_sym-fix-x (equal (elf64_sym->value (elf64_sym-fix x)) (elf64_sym->value x)))
Theorem:
(defthm elf64_sym->value-elf64_sym-equiv-congruence-on-x (implies (elf64_sym-equiv x x-equiv) (equal (elf64_sym->value x) (elf64_sym->value x-equiv))) :rule-classes :congruence)
Theorem:
(defthm elf64_sym->value-of-elf64_sym (equal (elf64_sym->value (elf64_sym name info other shndx value size)) (elf_bits64-fix value)))
Theorem:
(defthm elf64_sym->value-of-write-with-mask (implies (and (fty::bitstruct-read-over-write-hyps x elf64_sym-equiv-under-mask) (elf64_sym-equiv-under-mask x y fty::mask) (equal (logand (lognot fty::mask) 340282366920938463444927863358058659840) 0)) (equal (elf64_sym->value x) (elf64_sym->value y))))
Function:
(defun elf64_sym->size (x) (declare (xargs :guard (elf64_sym-p x))) (mbe :logic (let ((x (elf64_sym-fix x))) (part-select x :low 128 :width 64)) :exec (the (unsigned-byte 64) (logand (the (unsigned-byte 64) 18446744073709551615) (the (unsigned-byte 64) (ash (the (unsigned-byte 192) x) -128))))))
Theorem:
(defthm elf_bits64-p-of-elf64_sym->size (b* ((size (elf64_sym->size x))) (elf_bits64-p size)) :rule-classes :rewrite)
Theorem:
(defthm elf64_sym->size-of-elf64_sym-fix-x (equal (elf64_sym->size (elf64_sym-fix x)) (elf64_sym->size x)))
Theorem:
(defthm elf64_sym->size-elf64_sym-equiv-congruence-on-x (implies (elf64_sym-equiv x x-equiv) (equal (elf64_sym->size x) (elf64_sym->size x-equiv))) :rule-classes :congruence)
Theorem:
(defthm elf64_sym->size-of-elf64_sym (equal (elf64_sym->size (elf64_sym name info other shndx value size)) (elf_bits64-fix size)))
Theorem:
(defthm elf64_sym->size-of-write-with-mask (implies (and (fty::bitstruct-read-over-write-hyps x elf64_sym-equiv-under-mask) (elf64_sym-equiv-under-mask x y fty::mask) (equal (logand (lognot fty::mask) 6277101735386680763495507056286727952638980837032266301440) 0)) (equal (elf64_sym->size x) (elf64_sym->size y))))
Theorem:
(defthm elf64_sym-fix-in-terms-of-elf64_sym (equal (elf64_sym-fix x) (change-elf64_sym x)))
Function:
(defun !elf64_sym->name (name x) (declare (xargs :guard (and (elf_bits32-p name) (elf64_sym-p x)))) (mbe :logic (b* ((name (mbe :logic (elf_bits32-fix name) :exec name)) (x (elf64_sym-fix x))) (part-install name x :width 32 :low 0)) :exec (the (unsigned-byte 192) (logior (the (unsigned-byte 192) (logand (the (unsigned-byte 192) x) (the (signed-byte 33) -4294967296))) (the (unsigned-byte 32) name)))))
Theorem:
(defthm elf64_sym-p-of-!elf64_sym->name (b* ((new-x (!elf64_sym->name name x))) (elf64_sym-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm !elf64_sym->name-of-elf_bits32-fix-name (equal (!elf64_sym->name (elf_bits32-fix name) x) (!elf64_sym->name name x)))
Theorem:
(defthm !elf64_sym->name-elf_bits32-equiv-congruence-on-name (implies (elf_bits32-equiv name name-equiv) (equal (!elf64_sym->name name x) (!elf64_sym->name name-equiv x))) :rule-classes :congruence)
Theorem:
(defthm !elf64_sym->name-of-elf64_sym-fix-x (equal (!elf64_sym->name name (elf64_sym-fix x)) (!elf64_sym->name name x)))
Theorem:
(defthm !elf64_sym->name-elf64_sym-equiv-congruence-on-x (implies (elf64_sym-equiv x x-equiv) (equal (!elf64_sym->name name x) (!elf64_sym->name name x-equiv))) :rule-classes :congruence)
Theorem:
(defthm !elf64_sym->name-is-elf64_sym (equal (!elf64_sym->name name x) (change-elf64_sym x :name name)))
Theorem:
(defthm elf64_sym->name-of-!elf64_sym->name (b* ((?new-x (!elf64_sym->name name x))) (equal (elf64_sym->name new-x) (elf_bits32-fix name))))
Theorem:
(defthm !elf64_sym->name-equiv-under-mask (b* ((?new-x (!elf64_sym->name name x))) (elf64_sym-equiv-under-mask new-x x -4294967296)))
Function:
(defun !elf64_sym->info (info x) (declare (xargs :guard (and (elf_bits8-p info) (elf64_sym-p x)))) (mbe :logic (b* ((info (mbe :logic (elf_bits8-fix info) :exec info)) (x (elf64_sym-fix x))) (part-install info x :width 8 :low 32)) :exec (the (unsigned-byte 192) (logior (the (unsigned-byte 192) (logand (the (unsigned-byte 192) x) (the (signed-byte 41) -1095216660481))) (the (unsigned-byte 40) (ash (the (unsigned-byte 8) info) 32))))))
Theorem:
(defthm elf64_sym-p-of-!elf64_sym->info (b* ((new-x (!elf64_sym->info info x))) (elf64_sym-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm !elf64_sym->info-of-elf_bits8-fix-info (equal (!elf64_sym->info (elf_bits8-fix info) x) (!elf64_sym->info info x)))
Theorem:
(defthm !elf64_sym->info-elf_bits8-equiv-congruence-on-info (implies (elf_bits8-equiv info info-equiv) (equal (!elf64_sym->info info x) (!elf64_sym->info info-equiv x))) :rule-classes :congruence)
Theorem:
(defthm !elf64_sym->info-of-elf64_sym-fix-x (equal (!elf64_sym->info info (elf64_sym-fix x)) (!elf64_sym->info info x)))
Theorem:
(defthm !elf64_sym->info-elf64_sym-equiv-congruence-on-x (implies (elf64_sym-equiv x x-equiv) (equal (!elf64_sym->info info x) (!elf64_sym->info info x-equiv))) :rule-classes :congruence)
Theorem:
(defthm !elf64_sym->info-is-elf64_sym (equal (!elf64_sym->info info x) (change-elf64_sym x :info info)))
Theorem:
(defthm elf64_sym->info-of-!elf64_sym->info (b* ((?new-x (!elf64_sym->info info x))) (equal (elf64_sym->info new-x) (elf_bits8-fix info))))
Theorem:
(defthm !elf64_sym->info-equiv-under-mask (b* ((?new-x (!elf64_sym->info info x))) (elf64_sym-equiv-under-mask new-x x -1095216660481)))
Function:
(defun !elf64_sym->other (other x) (declare (xargs :guard (and (elf_bits8-p other) (elf64_sym-p x)))) (mbe :logic (b* ((other (mbe :logic (elf_bits8-fix other) :exec other)) (x (elf64_sym-fix x))) (part-install other x :width 8 :low 40)) :exec (the (unsigned-byte 192) (logior (the (unsigned-byte 192) (logand (the (unsigned-byte 192) x) (the (signed-byte 49) -280375465082881))) (the (unsigned-byte 48) (ash (the (unsigned-byte 8) other) 40))))))
Theorem:
(defthm elf64_sym-p-of-!elf64_sym->other (b* ((new-x (!elf64_sym->other other x))) (elf64_sym-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm !elf64_sym->other-of-elf_bits8-fix-other (equal (!elf64_sym->other (elf_bits8-fix other) x) (!elf64_sym->other other x)))
Theorem:
(defthm !elf64_sym->other-elf_bits8-equiv-congruence-on-other (implies (elf_bits8-equiv other other-equiv) (equal (!elf64_sym->other other x) (!elf64_sym->other other-equiv x))) :rule-classes :congruence)
Theorem:
(defthm !elf64_sym->other-of-elf64_sym-fix-x (equal (!elf64_sym->other other (elf64_sym-fix x)) (!elf64_sym->other other x)))
Theorem:
(defthm !elf64_sym->other-elf64_sym-equiv-congruence-on-x (implies (elf64_sym-equiv x x-equiv) (equal (!elf64_sym->other other x) (!elf64_sym->other other x-equiv))) :rule-classes :congruence)
Theorem:
(defthm !elf64_sym->other-is-elf64_sym (equal (!elf64_sym->other other x) (change-elf64_sym x :other other)))
Theorem:
(defthm elf64_sym->other-of-!elf64_sym->other (b* ((?new-x (!elf64_sym->other other x))) (equal (elf64_sym->other new-x) (elf_bits8-fix other))))
Theorem:
(defthm !elf64_sym->other-equiv-under-mask (b* ((?new-x (!elf64_sym->other other x))) (elf64_sym-equiv-under-mask new-x x -280375465082881)))
Function:
(defun !elf64_sym->shndx (shndx x) (declare (xargs :guard (and (elf_bits16-p shndx) (elf64_sym-p x)))) (mbe :logic (b* ((shndx (mbe :logic (elf_bits16-fix shndx) :exec shndx)) (x (elf64_sym-fix x))) (part-install shndx x :width 16 :low 48)) :exec (the (unsigned-byte 192) (logior (the (unsigned-byte 192) (logand (the (unsigned-byte 192) x) (the (signed-byte 65) -18446462598732840961))) (the (unsigned-byte 64) (ash (the (unsigned-byte 16) shndx) 48))))))
Theorem:
(defthm elf64_sym-p-of-!elf64_sym->shndx (b* ((new-x (!elf64_sym->shndx shndx x))) (elf64_sym-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm !elf64_sym->shndx-of-elf_bits16-fix-shndx (equal (!elf64_sym->shndx (elf_bits16-fix shndx) x) (!elf64_sym->shndx shndx x)))
Theorem:
(defthm !elf64_sym->shndx-elf_bits16-equiv-congruence-on-shndx (implies (elf_bits16-equiv shndx shndx-equiv) (equal (!elf64_sym->shndx shndx x) (!elf64_sym->shndx shndx-equiv x))) :rule-classes :congruence)
Theorem:
(defthm !elf64_sym->shndx-of-elf64_sym-fix-x (equal (!elf64_sym->shndx shndx (elf64_sym-fix x)) (!elf64_sym->shndx shndx x)))
Theorem:
(defthm !elf64_sym->shndx-elf64_sym-equiv-congruence-on-x (implies (elf64_sym-equiv x x-equiv) (equal (!elf64_sym->shndx shndx x) (!elf64_sym->shndx shndx x-equiv))) :rule-classes :congruence)
Theorem:
(defthm !elf64_sym->shndx-is-elf64_sym (equal (!elf64_sym->shndx shndx x) (change-elf64_sym x :shndx shndx)))
Theorem:
(defthm elf64_sym->shndx-of-!elf64_sym->shndx (b* ((?new-x (!elf64_sym->shndx shndx x))) (equal (elf64_sym->shndx new-x) (elf_bits16-fix shndx))))
Theorem:
(defthm !elf64_sym->shndx-equiv-under-mask (b* ((?new-x (!elf64_sym->shndx shndx x))) (elf64_sym-equiv-under-mask new-x x -18446462598732840961)))
Function:
(defun !elf64_sym->value (value x) (declare (xargs :guard (and (elf_bits64-p value) (elf64_sym-p x)))) (mbe :logic (b* ((value (mbe :logic (elf_bits64-fix value) :exec value)) (x (elf64_sym-fix x))) (part-install value x :width 64 :low 64)) :exec (the (unsigned-byte 192) (logior (the (unsigned-byte 192) (logand (the (unsigned-byte 192) x) (the (signed-byte 129) -340282366920938463444927863358058659841))) (the (unsigned-byte 128) (ash (the (unsigned-byte 64) value) 64))))))
Theorem:
(defthm elf64_sym-p-of-!elf64_sym->value (b* ((new-x (!elf64_sym->value value x))) (elf64_sym-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm !elf64_sym->value-of-elf_bits64-fix-value (equal (!elf64_sym->value (elf_bits64-fix value) x) (!elf64_sym->value value x)))
Theorem:
(defthm !elf64_sym->value-elf_bits64-equiv-congruence-on-value (implies (elf_bits64-equiv value value-equiv) (equal (!elf64_sym->value value x) (!elf64_sym->value value-equiv x))) :rule-classes :congruence)
Theorem:
(defthm !elf64_sym->value-of-elf64_sym-fix-x (equal (!elf64_sym->value value (elf64_sym-fix x)) (!elf64_sym->value value x)))
Theorem:
(defthm !elf64_sym->value-elf64_sym-equiv-congruence-on-x (implies (elf64_sym-equiv x x-equiv) (equal (!elf64_sym->value value x) (!elf64_sym->value value x-equiv))) :rule-classes :congruence)
Theorem:
(defthm !elf64_sym->value-is-elf64_sym (equal (!elf64_sym->value value x) (change-elf64_sym x :value value)))
Theorem:
(defthm elf64_sym->value-of-!elf64_sym->value (b* ((?new-x (!elf64_sym->value value x))) (equal (elf64_sym->value new-x) (elf_bits64-fix value))))
Theorem:
(defthm !elf64_sym->value-equiv-under-mask (b* ((?new-x (!elf64_sym->value value x))) (elf64_sym-equiv-under-mask new-x x -340282366920938463444927863358058659841)))
Function:
(defun !elf64_sym->size (size x) (declare (xargs :guard (and (elf_bits64-p size) (elf64_sym-p x)))) (mbe :logic (b* ((size (mbe :logic (elf_bits64-fix size) :exec size)) (x (elf64_sym-fix x))) (part-install size x :width 64 :low 128)) :exec (the (unsigned-byte 192) (logior (the (unsigned-byte 192) (logand (the (unsigned-byte 192) x) (the (signed-byte 193) -6277101735386680763495507056286727952638980837032266301441))) (the (unsigned-byte 192) (ash (the (unsigned-byte 64) size) 128))))))
Theorem:
(defthm elf64_sym-p-of-!elf64_sym->size (b* ((new-x (!elf64_sym->size size x))) (elf64_sym-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm !elf64_sym->size-of-elf_bits64-fix-size (equal (!elf64_sym->size (elf_bits64-fix size) x) (!elf64_sym->size size x)))
Theorem:
(defthm !elf64_sym->size-elf_bits64-equiv-congruence-on-size (implies (elf_bits64-equiv size size-equiv) (equal (!elf64_sym->size size x) (!elf64_sym->size size-equiv x))) :rule-classes :congruence)
Theorem:
(defthm !elf64_sym->size-of-elf64_sym-fix-x (equal (!elf64_sym->size size (elf64_sym-fix x)) (!elf64_sym->size size x)))
Theorem:
(defthm !elf64_sym->size-elf64_sym-equiv-congruence-on-x (implies (elf64_sym-equiv x x-equiv) (equal (!elf64_sym->size size x) (!elf64_sym->size size x-equiv))) :rule-classes :congruence)
Theorem:
(defthm !elf64_sym->size-is-elf64_sym (equal (!elf64_sym->size size x) (change-elf64_sym x :size size)))
Theorem:
(defthm elf64_sym->size-of-!elf64_sym->size (b* ((?new-x (!elf64_sym->size size x))) (equal (elf64_sym->size new-x) (elf_bits64-fix size))))
Theorem:
(defthm !elf64_sym->size-equiv-under-mask (b* ((?new-x (!elf64_sym->size size x))) (elf64_sym-equiv-under-mask new-x x 340282366920938463463374607431768211455)))
Function:
(defun elf64_sym-debug (x) (declare (xargs :guard (elf64_sym-p x))) (let ((__function__ 'elf64_sym-debug)) (declare (ignorable __function__)) (b* (((elf64_sym x))) (cons (cons 'name x.name) (cons (cons 'info x.info) (cons (cons 'other x.other) (cons (cons 'shndx x.shndx) (cons (cons 'value x.value) (cons (cons 'size x.size) nil)))))))))