(** * Disjointness *)

Definition disjoint (i j: interv) : Prop :=
  forall x, In x i -> ~In x j.

(* Specifications: *)
Lemma disjoint_sym: forall i j, disjoint i j -> disjoint j i.
Lemma empty_disjoint_r: forall i j, empty j -> disjoint i j.
Lemma empty_disjoint_l: forall i j, empty i -> disjoint i j.
Lemma disjoint_range: forall i j, snd i <= fst j \/ snd j <= fst i -> disjoint i j.
Lemma range_disjoint: forall i j, disjoint i j -> empty i \/ empty j \/ snd i <= fst j \/ snd j <= fst i.
Lemma range_disjoint': forall i j, disjoint i j -> fst i < snd i -> fst j < snd j -> snd i <= fst j \/ snd j <= fst i.
Lemma disjoint_dec: forall i j, {disjoint i j} + {~disjoint i j}.
Lemma disjoint_sym: forall i j, disjoint i j -> disjoint j i.
Lemma empty_disjoint_r: forall i j, empty j -> disjoint i j.
Lemma empty_disjoint_l: forall i j, empty i -> disjoint i j.
Lemma disjoint_range: forall i j, snd i <= fst j \/ snd j <= fst i -> disjoint i j.
Lemma range_disjoint: forall i j, disjoint i j -> empty i \/ empty j \/ snd i <= fst j \/ snd j <= fst i.
Lemma range_disjoint': forall i j, disjoint i j -> fst i < snd i -> fst j < snd j -> snd i <= fst j \/ snd j <= fst i.
Lemma disjoint_dec: forall i j, {disjoint i j} + {~disjoint i j}.