Goal: Emit a proof step for the prop-to-bool rewrites on And/Or (propExprToBoolExpr?).
Scope:
B1 = e1 ∧ B2 = e2 ==> true = (NOP(B1,e1) && NOP(B2,e2)) (if B1 ∨ B2)
B1 = e1 ∧ B2 = e2 ==> false = (e1 || e2) (if ¬B1 ∧ ¬B2)
B1 = e1 ∨ B2 = e2 ==> true = (NOP(B1,e1) || NOP(B2,e2)) (if B1 ∨ B2)
B1 = e1 ∨ B2 = e2 ==> false = (e1 && e2) (if ¬B1 ∧ ¬B2)
where NOP(B,e) = e if B, else !e
Out of scope: the beq-based TODO variants in the file, and the ∧/∨ list reordering.
DoD:
Goal: Emit a proof step for the prop-to-bool rewrites on
And/Or(propExprToBoolExpr?).Scope:
Out of scope: the
beq-basedTODOvariants in the file, and the∧/∨list reordering.DoD:
#testOptimize [ ..., proof ]test exercises each case, wired intoTests/Optimize.lean.