Correctness of the circuit.
Soundness is proved by expanding the predicate to
the predicates for the called circuits,
rewriting those to their specifications,
and then expand all the specifications to show that they match.
For that, we need to open
Completeness is proved by expanding all the specifications,
the correctness theorems for the called circuits,
and using the
The extension to the circuit is boilerplate.
Theorem:
(defthm field-div-checked-soundness (implies (and (primep prime) (pfield::fep x prime) (pfield::fep y prime) (pfield::fep z prime)) (implies (field-div-checked-pred x y z prime) (field-div-checked-spec x y z prime))))
Theorem:
(defthm field-div-checked-completeness (implies (and (primep prime) (pfield::fep x prime) (pfield::fep y prime) (pfield::fep z prime)) (implies (field-div-checked-spec x y z prime) (field-div-checked-pred x y z prime))))
Theorem:
(defthm field-div-checked-pred-to-spec (implies (and (primep prime) (pfield::fep x prime) (pfield::fep y prime) (pfield::fep z prime)) (equal (field-div-checked-pred x y z prime) (field-div-checked-spec x y z prime))))
Theorem:
(defthm field-div-checked-circuit-to-spec (implies (and (equal (pfcs::lookup-definition (pfname "field_div_checked") defs) (field-div-checked-circuit)) (equal (pfcs::lookup-definition (pfname "field_inv_checked") defs) (field-inv-checked-circuit)) (equal (pfcs::lookup-definition (pfname "field_mul") defs) (field-mul-circuit)) (primep prime) (pfield::fep x prime) (pfield::fep y prime) (pfield::fep z prime)) (equal (pfcs::definition-satp (pfname "field_div_checked") defs (list x y z) prime) (field-div-checked-spec x y z prime))))