fact: Fixpoint eq_carry_lit (carry : carry) (c : _lit) := if Lit.is_pos c then match carry with | Clit l => l =? c | Cand c1 c2 => match get_form (Lit.blit c) with | Fand args => if PArray.length args =? 2 then (eq_carry_lit c1 (args.[0]) && eq_carry_lit c2 (args.[1])) else false | _ => false end | Cxor c1 c2 => match get_form (Lit.blit c) with | Fxor a1 a2 => (eq_carry_lit c1 a1 && eq_carry_lit c2 a2) | _ => false end | Cor c1 c2 => match get_form (Lit.blit c) with | For args => if PArray.length args =? 2 then (eq_carry_lit c1 (args.[0]) && eq_carry_lit c2 (args.[1])) else false | _ => false end | Ciff c1 c2 => match get_form (Lit.blit c) with | Fiff a1 a2 => (eq_carry_lit c1 a1 && eq_carry_lit c2 a2) | _ => false end end else match carry with | Clit l => l =? c | _ => false end.
imports: Int63 PArray SMT_classes ZArith Misc State SMT_terms BVList Psatz Bool List BoolEq NZParity Nnat BinPos BinNat Pnat Init.Peano ProofIrrelevance