Correctness of the circuit.
Soundness is proved by expanding predicate and specification, but we need to disable two distributive rules that interfere with the proof.
Completeness is proved by expanding the specification
and then using the
The extension to the circuit is boilerplate.
Theorem:
(defthm field-neq-pred-soundness (implies (and (primep prime) (pfield::fep x prime) (pfield::fep y prime) (pfield::fep z prime)) (implies (field-neq-pred x y z prime) (field-neq-spec x y z prime))))
Theorem:
(defthm field-neq-pred-completeness (implies (and (primep prime) (pfield::fep x prime) (pfield::fep y prime) (pfield::fep z prime)) (implies (field-neq-spec x y z prime) (field-neq-pred x y z prime))))
Theorem:
(defthm field-neq-pred-to-spec (implies (and (primep prime) (pfield::fep x prime) (pfield::fep y prime) (pfield::fep z prime)) (equal (field-neq-pred x y z prime) (field-neq-spec x y z prime))))
Theorem:
(defthm field-neq-circuit-to-spec (implies (and (equal (pfcs::lookup-definition (pfname "field_neq") defs) (field-neq-circuit)) (primep prime) (pfield::fep x prime) (pfield::fep y prime) (pfield::fep z prime)) (equal (pfcs::definition-satp (pfname "field_neq") defs (list x y z) prime) (field-neq-spec x y z prime))))