(* Compatibility *)
Notation sym_JMeq := JMeq_sym (only parsing).
Notation trans_JMeq := JMeq_trans (only parsing).
(******************************************  The following is the original floyd/jmeq_lemmas.v  ******************************************)

Lemma JMeq_sumtype_rl: forall (A: Type) (B: Type) (C: Type) (D: Type) (x: B) (y: C), @eq Type A C -> @eq Type B D -> ~ (@JMeq (A + B) (inr x) (C + D) (inl y)).
Ltac solve_JMeq_sumtype H :=
match type of H with
| JMeq ?x ?y =>
destruct x; destruct y;
[apply JMeq_sumtype_ll in H; auto
|apply JMeq_sumtype_lr in H; auto; inversion H
|apply JMeq_sumtype_rl in H; auto; inversion H
|apply JMeq_sumtype_rr in H; auto]
end.