Four-valued semantics for
(4v-not a) returns the value specified by the following truth table:
a | out -----+------- T | F F | T X | X Z | X -----+-------
See 4v-unfloat for an explanation of the Z case.
Function:
(defun 4v-not$inline (a) (declare (xargs :guard t)) (4vcases a (t (4vf)) (f (4vt)) (& (4vx))))
Theorem:
(defthm 4v-not-truth-table (and (equal (4v-not (4vt)) (4vf)) (equal (4v-not (4vf)) (4vt)) (equal (4v-not (4vx)) (4vx)) (equal (4v-not (4vz)) (4vx))) :rule-classes nil)
Theorem:
(defthm 4v-equiv-implies-equal-4v-not-1 (implies (4v-equiv a a-equiv) (equal (4v-not a) (4v-not a-equiv))) :rule-classes (:congruence))