fact: Fixpoint check_trans_aux (t1 t2:int) (eqs:list _lit) (res:_lit) (clause:C.t) : C.t := match eqs with | nil => let xres := Lit.blit res in get_eq xres (fun t1' t2' => if ((t1 =? t1') && (t2 =? t2')) || ((t1 =? t2') && (t2 =? t1')) then Lit.lit xres :: clause else C._true) | leq::eqs => let xeq := Lit.blit leq in get_eq xeq (fun t t' => if t2 =? t' then check_trans_aux t1 t eqs res (Lit.nlit xeq :: clause) else if t2 =? t then check_trans_aux t1 t' eqs res (Lit.nlit xeq :: clause) else if t1 =? t' then check_trans_aux t t2 eqs res (Lit.nlit xeq :: clause) else if t1 =? t then check_trans_aux t' t2 eqs res (Lit.nlit xeq :: clause) else C._true) end.
imports: Bool List Int63 PArray State SMT_terms