Skip to content

Commit 322306c

Browse files
committed
lint
1 parent d4671d3 commit 322306c

2 files changed

Lines changed: 38 additions & 56 deletions

File tree

CHANGELOG_UNRELEASED.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@
4949
- in `measurable_realfun.v`:
5050
+ lemmas `emeasurable_fun_itv_obnd_cbndP`, `emeasurable_fun_itv_bndo_bndcP`,
5151
`emeasurable_fun_itv_cc`
52+
- in `derive.v`:
53+
+ lemmas `derivable_mxP`, `derive_mx`
5254

5355
### Changed
5456
- in `set_interval.v`

theories/derive.v

Lines changed: 36 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -2130,43 +2130,29 @@ Section pointwise_derivable.
21302130
Context {R : realFieldType} {V W : normedModType R} {m n : nat}.
21312131
Implicit Types M : V -> 'M[R]_(m, n).
21322132

2133-
Definition derivable_mx M t v :=
2134-
forall i j, derivable (fun x => M x i j) t v.
2135-
2136-
(* NB: from robot-rocq *)
2137-
Lemma derivable_mxP M t v : derivable_mx M t v <-> derivable M t v.
2133+
Lemma derivable_mxP M t v :
2134+
derivable M t v <-> forall i j, derivable (fun x => M x i j) t v.
21382135
Proof.
2139-
split; rewrite /derivable_mx /derivable.
2140-
- move=> H.
2141-
apply/cvg_ex => /=.
2142-
pose l := \matrix_(i < m, j < n) sval (cid ((cvg_ex _).1 (H i j))).
2143-
exists l.
2136+
split=> [|Mvt].
2137+
- move=> /cvg_ex[/= l Mvtl] i j; apply/cvg_ex; exists (l i j).
21442138
apply/cvgrPdist_le => /= e e0.
2139+
move/cvgrPdist_le : Mvtl => /(_ _ e0)[/= r r0] rMvte.
21452140
near=> x.
2146-
rewrite /Num.Def.normr/= mx_normrE.
2147-
apply: (bigmax_le _ (ltW e0)) => /= i _.
2148-
rewrite !mxE/=.
2149-
move: i.
2150-
near: x.
2151-
apply: filter_forall => /= i.
2152-
exact: ((@cvgrPdist_le _ _ _ _ (dnbhs_filter 0) _ _).1
2153-
(svalP (cid ((cvg_ex _).1 (H i.1 i.2)))) _ e0).
2154-
- move=> /cvg_ex[/= l Hl] i j.
2155-
apply/cvg_ex; exists (l i j).
2141+
apply: le_trans (rMvte x _ _).
2142+
+ rewrite [leRHS]/Num.Def.normr/= mx_normrE.
2143+
apply: le_trans; last exact: le_bigmax.
2144+
by rewrite !mxE.
2145+
+ rewrite /ball_/= sub0r normrN.
2146+
by near: x; exact: dnbhs0_lt.
2147+
+ near: x; exact: nbhs_dnbhs_neq.
2148+
- apply/cvg_ex => /=.
2149+
exists (\matrix_(i < m, j < n) sval (cid ((cvg_ex _).1 (Mvt i j)))).
21562150
apply/cvgrPdist_le => /= e e0.
2157-
move/cvgrPdist_le : Hl => /(_ _ e0)[/= r r0] H.
21582151
near=> x.
2159-
apply: le_trans; last first.
2160-
apply: (H x).
2161-
rewrite /ball_/=.
2162-
rewrite sub0r normrN.
2163-
near: x.
2164-
exact: dnbhs0_lt.
2165-
near: x.
2166-
exact: nbhs_dnbhs_neq.
2167-
rewrite [leRHS]/Num.Def.normr/= mx_normrE.
2168-
apply: le_trans; last exact: le_bigmax.
2169-
by rewrite /= !mxE.
2152+
rewrite /Num.Def.normr/= mx_normrE (bigmax_le _ (ltW e0))//= => i _.
2153+
rewrite !mxE/=.
2154+
move: i; near: x; apply: filter_forall => /= i.
2155+
exact: ((cvgrPdist_le _ _).1 (svalP (cid ((cvg_ex _).1 (Mvt i.1 i.2))))).
21702156
Unshelve. all: by end_near. Qed.
21712157

21722158
End pointwise_derivable.
@@ -2175,42 +2161,36 @@ Section pointwise_derive.
21752161
Local Open Scope classical_set_scope.
21762162
Context {R : realFieldType} {V W : normedModType R} .
21772163

2178-
(* NB: from robot-rocq *)
21792164
Lemma derive_mx {m n : nat} (M : V -> 'M[R]_(m, n)) t v :
21802165
derivable M t v ->
21812166
'D_v M t = \matrix_(i < m, j < n) 'D_v (fun t => M t i j) t.
21822167
Proof.
2183-
move=> /cvg_ex[/= l Hl]; apply/cvg_lim => //=.
2184-
apply/cvgrPdist_le => /= e e0.
2185-
move/cvgrPdist_le : (Hl) => /(_ (e / 2)).
2186-
rewrite divr_gt0// => /(_ isT)[d /= d0 dle].
2168+
move=> /cvg_ex[/= l Mvtl]; apply/cvg_lim => //=; apply/cvgrPdist_le => /= e e0.
2169+
move/cvgrPdist_le : (Mvtl) => /(_ (e / 2)) /[!divr_gt0]// /(_ isT)[d /= d0 dle].
21872170
near=> x.
2188-
rewrite [in leLHS]/Num.Def.normr/= mx_normrE.
2189-
apply/(bigmax_le _ (ltW e0)) => -[/= i j] _.
2190-
rewrite [in leLHS]mxE/= [X in _ + X]mxE -[X in X - _](subrK (l i j)).
2191-
rewrite -(addrA (_ - _)) (le_trans (ler_normD _ _))// (splitr e) lerD//.
2171+
rewrite [leLHS]/Num.Def.normr/= mx_normrE (bigmax_le _ (ltW e0))//= => -[i j] _.
2172+
rewrite [in leLHS]mxE/= [X in _ + X]mxE -(subrKA (l i j)).
2173+
rewrite (le_trans (ler_normD _ _))// (splitr e) lerD//.
21922174
- rewrite mxE.
21932175
suff : (h^-1 *: (M (h *: v + t) i j - M t i j)) @[h --> 0^'] --> l i j.
21942176
move/cvg_lim => /=; rewrite /derive /= => ->//.
21952177
by rewrite subrr normr0 divr_ge0// ltW.
21962178
apply/cvgrPdist_le => /= r r0.
2197-
move/cvgrPdist_le : Hl => /(_ r r0)[/= s s0] sr.
2179+
move/cvgrPdist_le : Mvtl => /(_ r r0)[/= s s0] sr.
21982180
near=> y.
2199-
have : `|l - y^-1 *: (M (y *: v + t) - M t)| <= r.
2200-
rewrite sr//=; last by near: y; exact: nbhs_dnbhs_neq.
2201-
by rewrite sub0r normrN; near: y; exact: dnbhs0_lt.
2202-
apply: le_trans.
2203-
rewrite [in leRHS]/Num.Def.normr/= mx_normrE.
2204-
by under eq_bigr do rewrite !mxE; exact: (le_bigmax _ _ (i, j)).
2181+
apply: (@le_trans _ _ (`|l - y^-1 *: (M (y *: v + t) - M t)|)).
2182+
rewrite [in leRHS]/Num.Def.normr/= mx_normrE.
2183+
by under eq_bigr do rewrite !mxE; exact: (le_bigmax _ _ (i, j)).
2184+
rewrite sr//=; last by near: y; exact: nbhs_dnbhs_neq.
2185+
by rewrite sub0r normrN; near: y; exact: dnbhs0_lt.
22052186
- rewrite mxE.
2206-
have : `|l - x^-1 *: (M (x *: v + t) - M t)| <= e / 2.
2207-
apply: dle => //=; last by near: x; exact: nbhs_dnbhs_neq.
2208-
by rewrite sub0r normrN; near: x; exact: dnbhs0_lt.
2209-
apply: le_trans.
2210-
rewrite [in leRHS]/Num.Def.normr/= mx_normrE/=.
2211-
under eq_bigr do rewrite !mxE.
2212-
apply: le_trans; last exact: le_bigmax.
2213-
by rewrite !mxE.
2187+
apply: (@le_trans _ _ `|l - x^-1 *: (M (x *: v + t) - M t)|).
2188+
rewrite [in leRHS]/Num.Def.normr/= mx_normrE/=.
2189+
under eq_bigr do rewrite !mxE.
2190+
apply: le_trans; last exact: le_bigmax.
2191+
by rewrite !mxE.
2192+
apply: dle => //=; last by near: x; exact: nbhs_dnbhs_neq.
2193+
by rewrite sub0r normrN; near: x; exact: dnbhs0_lt.
22142194
Unshelve. all: by end_near. Qed.
22152195

22162196
End pointwise_derive.

0 commit comments

Comments
 (0)