fact: Definition check_congr (leq:_lit) (eqs:list (option _lit)) := let xeq := Lit.blit leq in get_eq xeq (fun t1 t2 => match get_atom t1, get_atom t2 with | Atom.Abop o1 a1 a2, Atom.Abop o2 b1 b2 => if Atom.bop_eqb o1 o2 then build_congr eqs (a1::a2::nil) (b1::b2::nil) (Lit.lit xeq :: nil) else C._true | Atom.Auop o1 a, Atom.Auop o2 b => if Atom.uop_eqb o1 o2 then build_congr eqs (a::nil) (b::nil) (Lit.lit xeq :: nil) else C._true | Atom.Aapp f1 args1, Atom.Aapp f2 args2 => if f1 =? f2 then build_congr eqs args1 args2 (Lit.lit xeq :: nil) else C._true | _, _ => C._true end).
imports: Bool List Int63 PArray State SMT_terms