let order = !Utils.compare_terms left right in
let stat = (eq_ty, left, right, order) in
let w = Utils.compute_equality_weight stat in
- let target = Equality.mk_equality (w, proof, stat, metas) in
+ (* let target = Equality.mk_equality (w, proof, stat, metas) in *)
if Utils.debug_metas then
ignore(check_target context target "demod equalities input");
let metasenv' = (* metasenv @ *) metas in
match res with
| Some t ->
let newmeta, newtarget = build_newtarget true t in
+ assert (not (Equality.meta_convertibility_eq target newtarget));
if (Equality.is_weak_identity newtarget) ||
(Equality.meta_convertibility_eq target newtarget) then
newmeta, newtarget
let newmeta, newgoal = build_newgoal t in
let _, _, newg = newgoal in
if Equality.meta_convertibility term newg then
- true, newmeta, newgoal
+ false, newmeta, newgoal
else
- demodulation_goal newmeta env table newgoal
+ let changed, newmeta, newgoal =
+ demodulation_goal newmeta env table newgoal
+ in
+ true, newmeta, newgoal
| None ->
false, newmeta, goal
;;