+|2: simplify; unfold convex; intros 3; cases s1; intros;
+ (* TODO: x2sx is for ≰, we need one for ≤ *)
+ cases H (u HU); cases HU (Gu HuU); clear HU H;
+ lapply depth=0 (ous_convex_l ?? Gu 〈\fst h,\fst h1〉 ???????) as K3;
+ [2: intro; apply H2; apply (x2sx (os_l O) s h h1 H);
+ |3: apply 〈\fst (\fst y),\fst (\snd y)〉;
+ |4: intro; change in H with (\fst (\fst y) ≰ \fst h1); apply H3;
+ apply (x2sx (os_l O) s (\fst y) h1 H);
+ |5: change with (\fst h ≤ \fst (\fst y)); intro; apply H4;
+ apply (x2sx (os_l O) s h (\fst y) H);
+ |6: change with (\fst (\snd y) ≤ \fst h1); intro; apply H5;
+ apply (x2sx (os_l O) s (\snd y) h1 H);
+ |7: change with (\fst (\fst y) ≤ \fst (\snd y)); intro; apply H6;
+ apply (x2sx (os_l O) s (\fst y) (\snd y) H);
+ |8: apply (restrict O s U u y HuU K3);
+ |1: apply (unrestrict O s ?? 〈h,h1〉 HuU H1);]
+|3: simplify; unfold convex; intros 3; cases s1; intros; (* TODO *)
+ cases H (u HU); cases HU (Gu HuU); clear HU H;
+ lapply depth=0 (ous_convex_r ?? Gu 〈\fst h,\fst h1〉 ???????) as K3;
+ [2: intro; apply H2; apply (x2sx (os_r O) s h h1 H);
+ |3: apply 〈\fst (\fst y),\fst (\snd y)〉;
+ |4: intro; (*change in H with (\fst (\fst y) ≱ \fst h1);*) apply H3;
+ apply (x2sx (os_r O) s (\fst y) h1 H);
+ |5: (*change with (\fst h ≥ \fst (\fst y));*) intro; apply H4;
+ apply (x2sx (os_r O) s h (\fst y) H);
+ |6: (*change with (\fst (\snd y) ≤ \fst h1);*) intro; apply H5;
+ apply (x2sx (os_r O) s (\snd y) h1 H);
+ |7: (*change with (\fst (\fst y) ≤ \fst (\snd y));*) intro; apply H6;
+ apply (x2sx (os_r O) s (\fst y) (\snd y) H);
+ |8: apply (restrict O s U u y HuU K3);
+ |1: apply (unrestrict O s ?? 〈h,h1〉 HuU H1);]
+]