@@ -2158,43 +2158,29 @@ Section pointwise_derivable.
21582158Context {R : realFieldType} {V W : normedModType R} {m n : nat}.
21592159Implicit Types M : V -> 'M[R]_(m, n).
21602160
2161- Definition derivable_mx M t v :=
2162- forall i j, derivable (fun x => M x i j) t v.
2163-
2164- (* NB: from robot-rocq *)
2165- Lemma derivable_mxP M t v : derivable_mx M t v <-> derivable M t v.
2161+ Lemma derivable_mxP M t v :
2162+ derivable M t v <-> forall i j, derivable (fun x => M x i j) t v.
21662163Proof .
2167- split; rewrite /derivable_mx /derivable.
2168- - move=> H.
2169- apply/cvg_ex => /=.
2170- pose l := \matrix_(i < m, j < n) sval (cid ((cvg_ex _).1 (H i j))).
2171- exists l.
2164+ split=> [|Mvt].
2165+ - move=> /cvg_ex[/= l Mvtl] i j; apply/cvg_ex; exists (l i j).
21722166 apply/cvgrPdist_le => /= e e0.
2167+ move/cvgrPdist_le : Mvtl => /(_ _ e0)[/= r r0] rMvte.
21732168 near=> x.
2174- rewrite /Num.Def.normr/= mx_normrE.
2175- apply: (bigmax_le _ (ltW e0)) => /= i _.
2176- rewrite !mxE/=.
2177- move: i.
2178- near: x.
2179- apply: filter_forall => /= i.
2180- exact: ((@cvgrPdist_le _ _ _ _ (dnbhs_filter 0) _ _).1
2181- (svalP (cid ((cvg_ex _).1 (H i.1 i.2)))) _ e0).
2182- - move=> /cvg_ex[/= l Hl] i j.
2183- apply/cvg_ex; exists (l i j).
2169+ apply: le_trans (rMvte x _ _).
2170+ + rewrite [leRHS]/Num.Def.normr/= mx_normrE.
2171+ apply: le_trans; last exact: le_bigmax.
2172+ by rewrite !mxE.
2173+ + rewrite /ball_/= sub0r normrN.
2174+ by near: x; exact: dnbhs0_lt.
2175+ + near: x; exact: nbhs_dnbhs_neq.
2176+ - apply/cvg_ex => /=.
2177+ exists (\matrix_(i < m, j < n) sval (cid ((cvg_ex _).1 (Mvt i j)))).
21842178 apply/cvgrPdist_le => /= e e0.
2185- move/cvgrPdist_le : Hl => /(_ _ e0)[/= r r0] H.
21862179 near=> x.
2187- apply: le_trans; last first.
2188- apply: (H x).
2189- rewrite /ball_/=.
2190- rewrite sub0r normrN.
2191- near: x.
2192- exact: dnbhs0_lt.
2193- near: x.
2194- exact: nbhs_dnbhs_neq.
2195- rewrite [leRHS]/Num.Def.normr/= mx_normrE.
2196- apply: le_trans; last exact: le_bigmax.
2197- by rewrite /= !mxE.
2180+ rewrite /Num.Def.normr/= mx_normrE (bigmax_le _ (ltW e0))//= => i _.
2181+ rewrite !mxE/=.
2182+ move: i; near: x; apply: filter_forall => /= i.
2183+ exact: ((cvgrPdist_le _ _).1 (svalP (cid ((cvg_ex _).1 (Mvt i.1 i.2))))).
21982184Unshelve. all: by end_near. Qed .
21992185
22002186End pointwise_derivable.
@@ -2203,42 +2189,36 @@ Section pointwise_derive.
22032189Local Open Scope classical_set_scope.
22042190Context {R : realFieldType} {V W : normedModType R} .
22052191
2206- (* NB: from robot-rocq *)
22072192Lemma derive_mx {m n : nat} (M : V -> 'M[R]_(m, n)) t v :
22082193 derivable M t v ->
22092194 'D_v M t = \matrix_(i < m, j < n) 'D_v (fun t => M t i j) t.
22102195Proof .
2211- move=> /cvg_ex[/= l Hl]; apply/cvg_lim => //=.
2212- apply/cvgrPdist_le => /= e e0.
2213- move/cvgrPdist_le : (Hl) => /(_ (e / 2)).
2214- rewrite divr_gt0// => /(_ isT)[d /= d0 dle].
2196+ move=> /cvg_ex[/= l Mvtl]; apply/cvg_lim => //=; apply/cvgrPdist_le => /= e e0.
2197+ move/cvgrPdist_le : (Mvtl) => /(_ (e / 2)) /[!divr_gt0]// /(_ isT)[d /= d0 dle].
22152198near=> x.
2216- rewrite [in leLHS]/Num.Def.normr/= mx_normrE.
2217- apply/(bigmax_le _ (ltW e0)) => -[/= i j] _.
2218- rewrite [in leLHS]mxE/= [X in _ + X]mxE -[X in X - _](subrK (l i j)).
2219- rewrite -(addrA (_ - _)) (le_trans (ler_normD _ _))// (splitr e) lerD//.
2199+ rewrite [leLHS]/Num.Def.normr/= mx_normrE (bigmax_le _ (ltW e0))//= => -[i j] _.
2200+ rewrite [in leLHS]mxE/= [X in _ + X]mxE -(subrKA (l i j)).
2201+ rewrite (le_trans (ler_normD _ _))// (splitr e) lerD//.
22202202- rewrite mxE.
22212203 suff : (h^-1 *: (M (h *: v + t) i j - M t i j)) @[h --> 0^'] --> l i j.
22222204 move/cvg_lim => /=; rewrite /derive /= => ->//.
22232205 by rewrite subrr normr0 divr_ge0// ltW.
22242206 apply/cvgrPdist_le => /= r r0.
2225- move/cvgrPdist_le : Hl => /(_ r r0)[/= s s0] sr.
2207+ move/cvgrPdist_le : Mvtl => /(_ r r0)[/= s s0] sr.
22262208 near=> y.
2227- have : `|l - y^-1 *: (M (y *: v + t) - M t)| <= r.
2228- rewrite sr//=; last by near: y; exact: nbhs_dnbhs_neq.
2229- by rewrite sub0r normrN; near: y; exact: dnbhs0_lt.
2230- apply: le_trans.
2231- rewrite [in leRHS]/Num.Def.normr/= mx_normrE.
2232- by under eq_bigr do rewrite !mxE; exact: (le_bigmax _ _ (i, j)).
2209+ apply: (@le_trans _ _ (`|l - y^-1 *: (M (y *: v + t) - M t)|)).
2210+ rewrite [in leRHS]/Num.Def.normr/= mx_normrE.
2211+ by under eq_bigr do rewrite !mxE; exact: (le_bigmax _ _ (i, j)).
2212+ rewrite sr//=; last by near: y; exact: nbhs_dnbhs_neq.
2213+ by rewrite sub0r normrN; near: y; exact: dnbhs0_lt.
22332214- rewrite mxE.
2234- have : `|l - x^-1 *: (M (x *: v + t) - M t)| <= e / 2.
2235- apply: dle => //=; last by near: x; exact: nbhs_dnbhs_neq.
2236- by rewrite sub0r normrN; near: x; exact: dnbhs0_lt.
2237- apply: le_trans.
2238- rewrite [in leRHS]/Num.Def.normr/= mx_normrE/=.
2239- under eq_bigr do rewrite !mxE.
2240- apply: le_trans; last exact: le_bigmax.
2241- by rewrite !mxE.
2215+ apply: (@le_trans _ _ `|l - x^-1 *: (M (x *: v + t) - M t)|).
2216+ rewrite [in leRHS]/Num.Def.normr/= mx_normrE/=.
2217+ under eq_bigr do rewrite !mxE.
2218+ apply: le_trans; last exact: le_bigmax.
2219+ by rewrite !mxE.
2220+ apply: dle => //=; last by near: x; exact: nbhs_dnbhs_neq.
2221+ by rewrite sub0r normrN; near: x; exact: dnbhs0_lt.
22422222Unshelve. all: by end_near. Qed .
22432223
22442224End pointwise_derive.
0 commit comments