2. "Bug" "fixed": when the pullback of two coercions is computed, only the
join is returned, but not the two coercions that complete the pullback.
Thus we need to recompute them and it may happen that we find more than one
parallel coercions. This "fix" just randomly picks the first one (instead
of raising an assert false). All this stuff must be handled in a better way.
| [] -> raise exn
| _::_::_ ->
prerr_endline ("1: NON DOVEVA SUCCEDERE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+let m1::m2::_ = meets in
+prerr_endline ("M1 = " ^ CoercDb.name_of_carr m1 ^ "\nM2 = " ^ CoercDb.name_of_carr m2);
assert false
| [m] ->
let last_tl1',(subst,metasenv,ugraph) =
CoercGraph.look_for_coercion' metasenv subst
context m car2
with
- | CoercGraph.SomeCoercion [metasenv,last,coerced]
+ (*CSC: bu here: I am considering only the first one*)
+ | CoercGraph.SomeCoercion ((metasenv,last,coerced)::_)
->
last,
fo_unif_subst test_equality_only subst context