Section IntervalChoice.
Variable T : choiceType.
Definition itv_bound_porderMixin :=
LePOrderMixin lt_bound_def le_bound_refl le_bound_anti le_bound_trans.
Canonical itv_bound_porderType :=
POrderType (itv_bound_display disp) (itv_bound T) itv_bound_porderMixin.
Definition interval_porderMixin :=
LePOrderMixin (fun _ _ => erefl) subitv_refl subitv_anti subitv_trans.
Canonical interval_porderType :=
POrderType (interval_display disp) (interval T) interval_porderMixin.
Definition pred_of_itv i : pred T := [pred x | `[x, x] <= i].
Canonical Structure itvPredType := PredType pred_of_itv.

Lemma subitvE b1l b1r b2l b2r :
(Interval b1l b1r <= Interval b2l b2r) = (b2l <= b1l) && (b1r <= b2r).