Skip to content

Commit 8b7cbfc

Browse files
committed
convexW
1 parent 2f16f1c commit 8b7cbfc

File tree

1 file changed

+23
-31
lines changed

1 file changed

+23
-31
lines changed

theories/tvs.v

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,19 @@ Local Open Scope convex_scope.
346346
Definition convex (R : numDomainType) (M : lmodType R)
347347
(A : set (convex_lmodType M))(* try to get rid of the convex_lmodType *) :=
348348
forall x y lambda, x \in A -> y \in A -> x <| lambda |> y \in A.
349-
(* 0 < lambda -> lambda < 1 -> lambda *: x + (1 - lambda) *: y \in A *)
349+
350+
Lemma convexW (R : numDomainType) (M : lmodType R) (A : set (convex_lmodType M)) :
351+
convex A <->
352+
{in A &, forall x y (k : {i01 R}), 0 < k%:num -> k%:num < 1 -> x <| k |> y \in A}.
353+
Proof.
354+
split => [cA x y xA yA k k0 k1|cA x y l xA yA].
355+
by have /(_ k) := cA _ _ _ xA yA.
356+
have [->|l0] := eqVneq l 0%:i01; first by rewrite conv0.
357+
have [->|l1] := eqVneq l 1%:i01; first by rewrite conv1.
358+
apply: cA => //.
359+
- by rewrite lt_neqAle eq_sym l0 ge0.
360+
- by rewrite lt_neqAle l1 le1.
361+
Qed.
350362

351363
(*TODO : name it convexTvs*)
352364
HB.mixin Record Uniform_isConvexTvs (R : numDomainType) E
@@ -591,49 +603,29 @@ rewrite -mulrBl normrM (@le_lt_trans _ _ (`|k - z1| * M)) ?ler_wpM2l//.
591603
by rewrite -ltr_pdivlMr ?(lt_le_trans k1r) ?normr_gt0.
592604
Qed.
593605

594-
Lemma le0i (l : {i01 R}) : (l <= 0%:i01) = (l == 0%:i01).
595-
Proof.
596-
apply/idP/idP.
597-
rewrite eq_le => ->/=.
598-
apply: ge0 => //=.
599-
admit. (* ask Pierre *)
600-
by rewrite eq_le => /andP[].
601-
Admitted.
602-
603-
Lemma le1i (l : {i01 R}) : (1%:i01 <= l) = (l == 1%:i01).
604-
Proof.
605-
apply/idP/idP.
606-
rewrite eq_le => ->/=.
607-
rewrite andbT.
608-
apply: le1 => //=.
609-
admit. (* ask Pierre *)
610-
by rewrite eq_le => /andP[].
611-
Admitted.
612-
613606
Local Lemma standard_locally_convex :
614607
exists2 B : set (set R^o), (forall b, b \in B -> convex b) & basis B.
615608
Proof.
616609
(* NB(rei): almost the same code as in normedtype.v *)
617610
exists [set B | exists x r, B = ball x r].
618-
move=> b; rewrite inE /= => [[x]] [r] -> z y l.
619-
rewrite !inE /ball /= => zx yx.
620-
have [l0|] := ltP 0%:i01 l; last by rewrite le0i => /eqP ->; rewrite conv0.
621-
have [l1|] := ltP l 1%:i01; last by rewrite le1i => /eqP ->; rewrite conv1.
611+
move=> b/= /[!inE]/= [[x]] [r] ->.
612+
apply/convexW => z y; rewrite /ball/= !inE/= => zx yx l /[!inE]/= l0 l1.
613+
(* conv lemma? *)
622614
have -> : x = x <| l |> x by rewrite convmm. (*TODO: this looks superfluous *)
623-
rewrite [X in `|X|](_ : _ =
624-
l%:num *: (x - z) + (l%:num.~) *: (x - y)); last first.
615+
rewrite [X in `|X|](_ : _ = (x - z) <| l |> (x - y)); last first.
625616
by rewrite opprD addrACA -mulrBr -mulrBr.
626-
rewrite (@le_lt_trans _ _ (l%:num * `|x - z| + l%:num.~ * `|x - y|))//.
617+
rewrite (@le_lt_trans _ _ ((`|x - z| : R^o) <| l |> `|x - y|))//.
627618
rewrite -[in X in _ <= X + _](@ger0_norm _ l%:num)//.
628619
rewrite -[in X in _ <= _ + X](@ger0_norm _ l%:num.~) ?subr_ge0//.
629-
rewrite -!normrM -mulr_algl.
630-
rewrite /GRing.scale/= mulr1.
620+
rewrite [X in `|X| <= _](_ : _ = l%:num * (x - z) + l%:num.~ * (x - y))//.
621+
rewrite -[X in _ <= X + _]normrM.
622+
rewrite -[X in _ <= _ + X]normrM.
631623
by rewrite ler_normD.
632-
rewrite (@lt_le_trans _ _ (l%:num * r + l%:num.~ * r ))//.
624+
rewrite (@lt_le_trans _ _ ((r : R^o) <| l |> r))//.
633625
rewrite ltr_leD//.
634626
by rewrite ltr_pM2l// normr_gt0// gt_eqF.
635627
by rewrite ler_wpM2l// ?subr_ge0// ltW.
636-
by rewrite -mulrDl subrKC mul1r.
628+
by rewrite convmm.
637629
split.
638630
move=> B [x] [r] ->.
639631
rewrite openE/= /ball/= /interior => y /= bxy; rewrite -nbhs_ballE.

0 commit comments

Comments
 (0)