+let message3 m t1 t2 ?mu t3 =
+ let sm, st1, st2 = "In the environment", "the term", "is of type" in
+ match mu with
+ | Some mu ->
+ let smu, st3 = "but in the environment", "it must be of type" in
+ L.et_items3 sm m st1 t1 st2 t2 ~sc3:smu ~c3:mu st3 t3
+ | None ->
+ let st3 = "but it must be of type" in
+ L.et_items3 sm m st1 t1 st2 t2 st3 t3
+
+let error3 err m t1 t2 ?mu t3 =
+ err (message3 m t1 t2 ?mu t3)
+
+let assert_convertibility err f st m u w v =
+ if R.are_convertible st m u m w then f () else
+ error3 err m v w u