(** * 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}.