@@ -202,14 +202,23 @@ Hypothesis p_cvx : (@convex_function R V [set: V] p).
202202 real line directed by an arbitrary vector v *)
203203
204204 Lemma divDl_ge0 (s t : R) (s0 : 0 <= s) (t0 : 0 <= t) : 0 <= s / (s +t).
205- Admitted .
206-
205+ by apply: divr_ge0 => //; apply: addr_ge0.
206+ Qed .
207+
207208 Lemma divDl_le1 (s t : R) (s0 : 0 <= s) (t0 : 0 <= t) : s / (s +t) <= 1.
208- Admitted .
209-
210- Lemma divD_onem (s t : R) : (s / (s + t)).~ = t / (s + t).
211- Admitted .
212-
209+ move: s0; rewrite le0r => /orP []; first by move => /eqP ->; rewrite mul0r //.
210+ move: t0; rewrite le0r => /orP [].
211+ by move => /eqP -> s0; rewrite addr0 divff //=; apply: lt0r_neq0.
212+ by move=> t0 s0; rewrite ler_pdivrMr ?mul1r ?addr_gt0 // lerDl ltW.
213+ Qed .
214+
215+ Lemma divD_onem (s t : R) (s0 : 0 < s) (t0 : 0 < t): (s / (s + t)).~ = t / (s + t).
216+ rewrite /(_).~.
217+ suff -> : 1 = (s + t)/(s + t) by rewrite -mulrBl -addrAC subrr add0r.
218+ rewrite divff // /eqP addr_eq0; apply/negbT/eqP => H.
219+ by move: s0; rewrite H oppr_gt0 ltNge; move/negP; apply; rewrite ltW.
220+ Qed .
221+
213222 Lemma domain_extend (z : zorn_type) v :
214223 exists2 ze : zorn_type, (zorn_rel z ze) & (exists r, (carrier ze) v r).
215224 Proof .
@@ -386,7 +395,7 @@ have graphFP : spec F f p graphF by split.
386395have [z zmax]:= zorn_rel_ex graphFP.
387396pose FP v : Prop := F v.
388397have FP0 : FP 0 by [].
389- have [g gP]:= (hb_witness linfF FP0 p_cvx sup inf graphFP zmax).
398+ have [g gP]:= (hb_witness linfF FP0 p_cvx sup inf zmax).
390399have scalg : linear_for *%R g.
391400 case: z {zmax} gP=> [c [_ ls1 _ _]] /= gP.
392401 have addg : additive g.
@@ -585,12 +594,13 @@ Proof.
585594 apply: le_trans.
586595 have H : `|l%:num *: v1 + (l%:num).~ *: v2| <= `|l%:num *: v1| + `|(l%:num).~ *: v2|.
587596 by apply: ler_normD.
588- by apply: (@ler_pM _ _ _ r r _ _ H) => //; apply: ltW.
589- rewrite mulrDl !normrZ -mulr_algl -[X in _ <= _ + X]mulr_algl.
597+ by apply: (@ler_pM _ _ _ r r _ _ H) => //; apply: ltW.
598+ rewrite mulrDl !normrZ -mulr_algl -[X in _ <= _ + X]mulr_algl !scaler1.
599+ (* where is the lemma combining mulr_algl and scaler1, easier to search *)
590600 have -> : `|l%:num| = l%:num by apply/normr_idP.
591- have -> : `|(l%:num).~| = (l%:num).~. apply/normr_idP. admit.
592- rewrite !mulrA. admit.
593- have majfp : forall x, F x -> f x <= p x.
601+ have -> : `|(l%:num).~| = (l%:num).~ by apply/normr_idP; apply: onem_ge0.
602+ by rewrite !mulrA.
603+ have majfp : forall x, F x -> f x <= p x.
594604 move => x Fx; rewrite /(p _) ; apply : le_trans ; last by [].
595605 apply : le_trans.
596606 apply : ler_norm.
@@ -608,7 +618,7 @@ Proof.
608618 by rewrite /p -[X in _ <= X]mul1r; apply: ler_pM; rewrite ?normr_ge0 ?ltW //=.
609619 - apply: (le_trans (majgp (y))); rewrite /p -[X in _ <= X]mul1r -normrN.
610620 apply: ler_pM; rewrite ?normr_ge0 ?ltW //=.
611- Admitted .
621+ Qed .
612622
613623End HBGeom.
614624
0 commit comments