let compose i s r =
Trace.msg (Th.to_string i) "Compose" r (Pretty.list Fact.pp_equal);
let (changed', eqs', s') = fuse i s r in
let changed = ref changed' in
let eqs = ref eqs' in
let s'' = List.fold_right (update (changed, eqs) i) r s'
in
(!changed, !eqs, s'')