Skip to content

Commit 94e7457

Browse files
committed
Lnorm_ge0 and Lnorm_eq0_eq0 need not be specialized
1 parent 959e592 commit 94e7457

File tree

3 files changed

+151
-289
lines changed

3 files changed

+151
-289
lines changed

CHANGELOG_UNRELEASED.md

Lines changed: 1 addition & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -53,27 +53,6 @@
5353

5454
- in `pi_irrational`:
5555
+ definition `rational`
56-
- new directory `lebesgue_integral_theory` with new files:
57-
+ `simple_functions.v`
58-
+ `lebesgue_integral_definition.v`
59-
+ `lebesgue_integral_approximation.v`
60-
+ `lebesgue_integral_monotone_convergence.v`
61-
+ `lebesgue_integral_nonneg.v`
62-
+ `lebesgue_integrable.v`
63-
+ `lebesgue_integral_dominated_convergence.v`
64-
+ `lebesgue_integral_under.v`
65-
+ `lebesgue_Rintegral.v`
66-
+ `lebesgue_integral_fubini.v`
67-
+ `lebesgue_integral_differentiation.v`
68-
+ `lebesgue_integral.v`
69-
- in `boolp.v`:
70-
+ lemmas `orW`, `or3W`, `or4W`
71-
72-
- in `classical_sets.v`:
73-
+ lemma `image_nonempty`
74-
75-
- in `mathcomp_extra.v`:
76-
+ lemmas `eq_exists2l`, `eq_exists2r`
7756

7857
- in `ereal.v`:
7958
+ lemmas `ereal_infEN`, `ereal_supN`, `ereal_infN`, `ereal_supEN`
@@ -122,9 +101,6 @@
122101
- in `lebesgue_integral.v`:
123102
+ lemma `mfunMn`
124103

125-
- in `classical_sets.v`:
126-
+ lemma `set_cst`
127-
128104
- in `measurable_realfun.v`:
129105
+ lemmas `ereal_inf_seq`, `ereal_sup_seq`,
130106
`ereal_sup_cst`, `ereal_inf_cst`, `ereal_sup_pZl`,
@@ -168,32 +144,6 @@
168144
- in `probability.v`:
169145
+ lemma `lfun1_expectation_lty`
170146

171-
### Changed
172-
173-
- file `nsatz_realtype.v` moved from `reals` to `reals-stdlib` package
174-
- moved from `gauss_integral` to `trigo.v`:
175-
+ `oneDsqr`, `oneDsqr_ge1`, `oneDsqr_inum`, `oneDsqrV_le1`,
176-
`continuous_oneDsqr`, `continuous_oneDsqr`
177-
- moved, generalized, and renamed from `gauss_integral` to `trigo.v`:
178-
+ `integral01_oneDsqr` -> `integral0_oneDsqr`
179-
180-
- in `interval_inference.v`:
181-
+ definition `IntItv.exprn_le1_bound`
182-
+ lemmas `Instances.nat_spec_succ`, `Instances.num_spec_natmul`,
183-
`Instances.num_spec_intmul`, `Instances.num_itv_bound_exprn_le1`
184-
+ canonical instance `Instances.succn_inum`
185-
186-
- in `lebesgue_integral_properties.v`
187-
(new file with contents moved from `lebesgue_integral.v`)
188-
+ `le_normr_integral` renamed to `le_normr_Rintegral`
189-
190-
- moved to `lebesgue_measure.v` (from old `lebesgue_integral.v`)
191-
+ `compact_finite_measure`
192-
193-
- moved from `ftc.v` to `lebesgue_integral_under.v` (new file)
194-
+ notation `'d1`, definition `partial1of2`, lemmas `partial1of2E`,
195-
`cvg_differentiation_under_integral`, `differentiation_under_integral`,
196-
`derivable_under_integral`
197147
- in `hoelder.v`:
198148
+ lemmas `Lnorm_eq0_eq0`
199149

@@ -229,18 +179,12 @@
229179

230180
- in `normedtype.v`:
231181
+ lemmas `gt0_cvgMlNy`, `gt0_cvgMly`
232-
- in `boolp.v`:
233-
+ `eq_fun2` -> `eq2_fun`
234-
+ `eq_fun3` -> `eq3_fun`
235-
+ `eq_forall2` -> `eq2_forall`
236-
+ `eq_forall3` -> `eq3_forall`
182+
237183
- in `ereal.v`:
238184
+ `ereal_sup_le` -> `ereal_sup_ge`
239185

240186
- in `hoelder.v`:
241187
+ `minkowski` -> `minkowski_EFin`
242-
+ `Lnorm_ge0` -> `Lnormr_ge0`
243-
+ `Lnorm_eq0_eq0` -> `Lnormr_eq0_eq0`
244188

245189
### Generalized
246190

@@ -265,44 +209,6 @@
265209

266210
### Removed
267211

268-
- file `mathcomp_extra.v`
269-
+ lemma `Pos_to_natE` (moved to `Rstruct.v`)
270-
+ lemma `deg_le2_ge0` (available as `deg_le2_poly_ge0` in `ssrnum.v`
271-
since MathComp 2.1.0)
272-
+ definitions `monotonous`, `boxed`, `onem`, `inv_fun`,
273-
`bound_side`, `swap`, `prodA`, `prodAr`, `map_pair`, `sigT_fun`
274-
(moved to new file `unstable.v` that shouldn't be used outside of
275-
Analysis)
276-
+ notations `` `1 - r ``, `f \^-1` (moved to new file `unstable.v`
277-
that shouldn't be used outside of Analysis)
278-
+ lemmas `dependent_choice_Type`, `maxr_absE`, `minr_absE`,
279-
`le_bigmax_seq`, `bigmax_sup_seq`, `leq_ltn_expn`, `last_filterP`,
280-
`path_lt_filter0`, `path_lt_filterT`, `path_lt_head`,
281-
`path_lt_last_filter`, `path_lt_le_last`, `sumr_le0`,
282-
`fset_nat_maximum`, `image_nat_maximum`, `card_fset_sum1`,
283-
`onem0`, `onem1`, `onemK`, `add_onemK`, `onem_gt0`, `onem_ge0`,
284-
`onem_le1`, `onem_lt1`, `onemX_ge0`, `onemX_lt1`, `onemD`,
285-
`onemMr`, `onemM`, `onemV`, `lez_abs2`, `ler_gtP`, `ler_ltP`,
286-
`real_ltr_distlC`, `prodAK`, `prodArK`, `swapK`, `lt_min_lt`,
287-
`intrD1`, `intr1D`, `floor_lt_int`, `floor_ge0`, `floor_le0`,
288-
`floor_lt0`, `floor_eq`, `floor_neq0`, `ceil_gt_int`, `ceil_ge0`,
289-
`ceil_gt0`, `ceil_le0`, `abs_ceil_ge`, `nat_int`, `bij_forall`,
290-
`and_prop_in`, `mem_inc_segment`, `mem_dec_segment`,
291-
`partition_disjoint_bigfcup`, `partition_disjoint_bigfcup`,
292-
`prodr_ile1`, `size_filter_gt0`, `ltr_sum`, `ltr_sum_nat` (moved
293-
to new file `unstable.v` that shouldn't be used outside of
294-
Analysis)
295-
296-
- in `reals.v`:
297-
+ lemmas `floor_le`, `le_floor` (deprecated since 1.3.0)
298-
299-
- file `lebesgue_integral.v` (split in several files in the directory
300-
`lebesgue_integral_theory`)
301-
302-
- in `classical_sets.v`:
303-
+ notations `setvI`, `setIv`, `bigcup_set`, `bigcup_set_cond`, `bigcap_set`,
304-
`bigcap_set_cond`
305-
306212
- in `measure.v`:
307213
+ definition `almost_everywhere_notation`
308214
+ lemma `ess_sup_ge0`

classical/mathcomp_extra.v

Lines changed: 0 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -470,148 +470,3 @@ Proof. by move=> ? ? []. Qed.
470470

471471
Lemma inl_inj {A B} : injective (@inl A B).
472472
Proof. by move=> ? ? []. Qed.
473-
474-
Section bijection_forall.
475-
476-
Lemma bij_forall A B (f : A -> B) (P : B -> Prop) :
477-
bijective f -> (forall y, P y) <-> (forall x, P (f x)).
478-
Proof.
479-
by case; rewrite /cancel => g _ cangf; split => // => ? y; rewrite -(cangf y).
480-
Qed.
481-
482-
End bijection_forall.
483-
484-
Lemma and_prop_in (T : Type) (p : mem_pred T) (P Q : T -> Prop) :
485-
{in p, forall x, P x /\ Q x} <->
486-
{in p, forall x, P x} /\ {in p, forall x, Q x}.
487-
Proof.
488-
split=> [cnd|[cnd1 cnd2] x xin]; first by split=> x xin; case: (cnd x xin).
489-
by split; [apply: cnd1 | apply: cnd2].
490-
Qed.
491-
492-
Lemma mem_inc_segment d (T : porderType d) (a b : T) (f : T -> T) :
493-
{in `[a, b] &, {mono f : x y / (x <= y)%O}} ->
494-
{homo f : x / x \in `[a, b] >-> x \in `[f a, f b]}.
495-
Proof.
496-
move=> fle x xab; have leab : (a <= b)%O by rewrite (itvP xab).
497-
by rewrite in_itv/= !fle ?(itvP xab).
498-
Qed.
499-
500-
Lemma mem_dec_segment d (T : porderType d) (a b : T) (f : T -> T) :
501-
{in `[a, b] &, {mono f : x y /~ (x <= y)%O}} ->
502-
{homo f : x / x \in `[a, b] >-> x \in `[f b, f a]}.
503-
Proof.
504-
move=> fge x xab; have leab : (a <= b)%O by rewrite (itvP xab).
505-
by rewrite in_itv/= !fge ?(itvP xab).
506-
Qed.
507-
508-
Definition sigT_fun {I : Type} {X : I -> Type} {T : Type}
509-
(f : forall i, X i -> T) (x : {i & X i}) : T :=
510-
(f (projT1 x) (projT2 x)).
511-
512-
(* PR 114 to finmap in progress *)
513-
Section FsetPartitions.
514-
Variables T I : choiceType.
515-
Implicit Types (x y z : T) (A B D X : {fset T}) (P Q : {fset {fset T}}).
516-
Implicit Types (J : pred I) (F : I -> {fset T}).
517-
518-
Variables (R : Type) (idx : R) (op : Monoid.com_law idx).
519-
Let rhs_cond P K E :=
520-
(\big[op/idx]_(A <- P) \big[op/idx]_(x <- A | K x) E x)%fset.
521-
Let rhs P E := (\big[op/idx]_(A <- P) \big[op/idx]_(x <- A) E x)%fset.
522-
523-
Lemma partition_disjoint_bigfcup (f : T -> R) (F : I -> {fset T})
524-
(K : {fset I}) :
525-
(forall i j, i \in K -> j \in K -> i != j -> [disjoint F i & F j])%fset ->
526-
\big[op/idx]_(i <- \big[fsetU/fset0]_(x <- K) (F x)) f i =
527-
\big[op/idx]_(k <- K) (\big[op/idx]_(i <- F k) f i).
528-
Proof.
529-
move=> disjF; pose P := [fset F i | i in K & F i != fset0]%fset.
530-
have trivP : trivIfset P.
531-
apply/trivIfsetP => _ _ /imfsetP[i iK ->] /imfsetP[j jK ->] neqFij.
532-
move: iK; rewrite !inE/= => /andP[iK Fi0].
533-
move: jK; rewrite !inE/= => /andP[jK Fj0].
534-
by apply: (disjF _ _ iK jK); apply: contraNneq neqFij => ->.
535-
have -> : (\bigcup_(i <- K) F i)%fset = fcover P.
536-
apply/esym; rewrite /P fcover_imfset big_mkcond /=; apply eq_bigr => i _.
537-
by case: ifPn => // /negPn/eqP.
538-
rewrite big_trivIfset // /rhs big_imfset => [|i j iK /andP[jK notFj0] eqFij] /=.
539-
rewrite big_filter big_mkcond; apply eq_bigr => i _.
540-
by case: ifPn => // /negPn /eqP ->; rewrite big_seq_fset0.
541-
move: iK; rewrite !inE/= => /andP[iK Fi0].
542-
by apply: contraNeq (disjF _ _ iK jK) _; rewrite -fsetI_eq0 eqFij fsetIid.
543-
Qed.
544-
545-
End FsetPartitions.
546-
547-
(* TODO: move to ssrnum *)
548-
Lemma prodr_ile1 {R : realDomainType} (s : seq R) :
549-
(forall x, x \in s -> 0 <= x <= 1)%R -> (\prod_(j <- s) j <= 1)%R.
550-
Proof.
551-
elim: s => [_ | y s ih xs01]; rewrite ?big_nil// big_cons.
552-
have /andP[y0 y1] : (0 <= y <= 1)%R by rewrite xs01// mem_head.
553-
rewrite mulr_ile1 ?andbT//.
554-
rewrite big_seq prodr_ge0// => x xs.
555-
by have := xs01 x; rewrite inE xs orbT => /(_ _)/andP[].
556-
by rewrite ih// => e xs; rewrite xs01// in_cons xs orbT.
557-
Qed.
558-
559-
(* TODO: move to ssrnum *)
560-
561-
Lemma size_filter_gt0 T P (r : seq T) : (size (filter P r) > 0)%N = (has P r).
562-
Proof. by elim: r => //= x r; case: ifP. Qed.
563-
564-
Lemma ltr_sum [R : numDomainType] [I : Type] (r : seq I)
565-
[P : pred I] [F G : I -> R] :
566-
has P r ->
567-
(forall i : I, P i -> F i < G i) ->
568-
\sum_(i <- r | P i) F i < \sum_(i <- r | P i) G i.
569-
Proof.
570-
rewrite -big_filter -[ltRHS]big_filter -size_filter_gt0.
571-
case: filter (filter_all P r) => //= x {}r /andP[Px Pr] _ ltFG.
572-
rewrite !big_cons ltr_leD// ?ltFG// -(all_filterP Pr) !big_filter.
573-
by rewrite ler_sum => // i Pi; rewrite ltW ?ltFG.
574-
Qed.
575-
576-
Lemma ltr_sum_nat [R : numDomainType] [m n : nat] [F G : nat -> R] :
577-
(m < n)%N -> (forall i : nat, (m <= i < n)%N -> F i < G i) ->
578-
\sum_(m <= i < n) F i < \sum_(m <= i < n) G i.
579-
Proof.
580-
move=> lt_mn i; rewrite big_nat [ltRHS]big_nat ltr_sum//.
581-
by apply/hasP; exists m; rewrite ?mem_index_iota leqnn lt_mn.
582-
Qed.
583-
584-
Lemma eq_exists2l (A : Type) (P P' Q : A -> Prop) :
585-
(forall x, P x <-> P' x) ->
586-
(exists2 x, P x & Q x) <-> (exists2 x, P' x & Q x).
587-
Proof.
588-
by move=> eqQ; split=> -[x p q]; exists x; move: p q; rewrite ?eqQ.
589-
Qed.
590-
591-
Lemma eq_exists2r (A : Type) (P Q Q' : A -> Prop) :
592-
(forall x, Q x <-> Q' x) ->
593-
(exists2 x, P x & Q x) <-> (exists2 x, P x & Q' x).
594-
Proof.
595-
by move=> eqP; split=> -[x p q]; exists x; move: p q; rewrite ?eqP.
596-
Qed.
597-
598-
Declare Scope signature_scope.
599-
Delimit Scope signature_scope with signature.
600-
601-
Import -(notations) Morphisms.
602-
Arguments Proper {A}%_type R%_signature m.
603-
Arguments respectful {A B}%_type (R R')%_signature _ _.
604-
605-
Module ProperNotations.
606-
607-
Notation " R ++> R' " := (@respectful _ _ (R%signature) (R'%signature))
608-
(right associativity, at level 55) : signature_scope.
609-
610-
Notation " R ==> R' " := (@respectful _ _ (R%signature) (R'%signature))
611-
(right associativity, at level 55) : signature_scope.
612-
613-
Notation " R ~~> R' " := (@respectful _ _ (Program.Basics.flip (R%signature)) (R'%signature))
614-
(right associativity, at level 55) : signature_scope.
615-
616-
Export -(notations) Morphisms.
617-
End ProperNotations.

0 commit comments

Comments
 (0)