(* ********************************************************************** *)
(** ** Narrowing and transitivity (3) *)

Definition transitivity_on Q := forall E S T,
  sub E S Q -> sub E Q T -> sub E S T.

Lemma canonical_form_sum : forall e T1 T2, value e -> typing empty e (typ_sum T1 T2) -> exists e1, e = exp_inl e1 \/ e = exp_inr e1.