Definition subitv (i1 i2 : interval R) :=
  match i1, i2 with
    | Interval a1 b1, Interval a2 b2 => le_boundl a2 a1 && le_boundr b1 b2
  end.

(* Specifications: *)
Lemma subitvP : forall (i2 i1 : interval R), subitv i1 i2 -> {subset i1 <= i2}.
Lemma subitvPr (a b1 b2 : itv_bound R) : le_boundr b1 b2 -> {subset (Interval a b1) <= (Interval a b2)}.
Lemma subitvPl (a1 a2 b : itv_bound R) : le_boundl a2 a1 -> {subset (Interval a1 b) <= (Interval a2 b)}.
Lemma le_boundl_total : total (@le_boundl R).
Lemma le_boundr_total : total (@le_boundr R).
Lemma itv_intersectionC : commutative (@itv_intersection R).
Lemma itv_intersectionA : associative (@itv_intersection R).