|
2 | 2 | From HB Require Import structures. |
3 | 3 | From mathcomp Require Import all_ssreflect_compat finmap ssralg ssrnum matrix. |
4 | 4 | From mathcomp Require Import interval interval_inference. |
| 5 | +#[warning="-warn-library-file-internal-analysis"] |
| 6 | +From mathcomp Require Import unstable. |
5 | 7 | From mathcomp Require Import boolp contra classical_sets reals topology. |
6 | 8 | From mathcomp Require Import prodnormedzmodule tvs pseudometric_normed_Zmodule. |
7 | 9 | From mathcomp Require Import normed_module. |
@@ -281,34 +283,24 @@ Implicit Types (M : 'M[K]_(m, n1)) (N : 'M[K]_(m, n2)). |
281 | 283 |
|
282 | 284 | Lemma norm_row_mx0r M : `|row_mx M (0 : 'M_(m, n2))| = `|M|. |
283 | 285 | Proof. |
284 | | -apply/eqP; rewrite eq_le; apply/andP; split. |
285 | | -- rewrite [leLHS]/Num.norm/= !mx_normrE/=; apply/bigmax_le => // -[i j]/= _. |
286 | | - rewrite mxE; case: splitP => k kE; last by rewrite mxE normr0. |
287 | | - by rewrite [leRHS]/Num.norm/= !mx_normrE/= (le_bigmax _ _ (i, k)). |
288 | | -- rewrite [leLHS]/Num.norm/= !mx_normrE/=; apply/bigmax_le => // -[i j]/= _. |
289 | | - rewrite [leRHS]/Num.norm/= !mx_normrE/=. |
290 | | - rewrite (le_trans _(le_bigmax _ _ (i, lshift n2 j)))// mxE/=. |
291 | | - case: splitP => // k kE. |
292 | | - rewrite (_ : j = k)//; apply: val_inj => /=. |
293 | | - by apply/eqP; rewrite -(eqn_add2l n1) -kE. |
294 | | - absurd: kE. |
295 | | - by rewrite ltn_eqF// (leq_trans (ltn_ord j))// /lshift/= leq_addr. |
| 286 | +rewrite /Num.norm/= !mx_normrE. |
| 287 | +rewrite -!(pair_bigA_idem _ (fun i j => `|_ i j|))/= ?maxxx//. |
| 288 | +apply: eq_bigr => i _. |
| 289 | +have ? := maxxx (0 : K). |
| 290 | +rewrite big_split_ord_idem//= [X in maxr _ X = _]big1_idem//=. |
| 291 | + by move=> ? _; rewrite row_mxEr mxE normr0. |
| 292 | +by rewrite -bigmax_idr; apply: eq_bigr => j _; rewrite row_mxEl. |
296 | 293 | Qed. |
297 | 294 |
|
298 | 295 | Lemma norm_row_mx0l N : `|row_mx (0 : 'M_(m, n1)) N| = `|N|. |
299 | 296 | Proof. |
300 | | -apply/eqP; rewrite eq_le; apply/andP; split. |
301 | | -- rewrite [leLHS]/Num.norm/= !mx_normrE/=; apply/bigmax_le => // -[i j]/= _. |
302 | | - rewrite mxE; case: splitP => k kE; first by rewrite mxE normr0. |
303 | | - by rewrite [leRHS]/Num.norm/= !mx_normrE/= (le_bigmax _ _ (i, k)). |
304 | | -- rewrite [leLHS]/Num.norm/= !mx_normrE/=; apply/bigmax_le => // -[i j]/= _. |
305 | | - rewrite [leRHS]/Num.norm/= !mx_normrE/=. |
306 | | - rewrite (le_trans _ (le_bigmax _ _ (i, rshift n1 j)))// mxE/=. |
307 | | - case: splitP => // k kE. |
308 | | - absurd: kE. |
309 | | - by rewrite gtn_eqF// (leq_trans (ltn_ord k))// /rshift/= leq_addr. |
310 | | - rewrite (_ : j = k)//; apply: val_inj => /=. |
311 | | - by apply/eqP; rewrite -(eqn_add2l n1) -kE. |
| 297 | +rewrite /Num.norm/= !mx_normrE. |
| 298 | +rewrite -!(pair_bigA_idem _ (fun i j => `|_ i j|))/= ?maxxx//. |
| 299 | +apply: eq_bigr => i _. |
| 300 | +have ? := maxxx (0 : K). |
| 301 | +rewrite big_split_ord_idem//= [X in maxr X _ = _]big1_idem//=. |
| 302 | + by move=> ? _; rewrite row_mxEl mxE normr0. |
| 303 | +by rewrite -bigmax_idl; apply: eq_bigr => j _; rewrite row_mxEr. |
312 | 304 | Qed. |
313 | 305 |
|
314 | 306 | Lemma norm_row_mx M N : `|row_mx M N| = Num.max `|M| `|N|. |
|
0 commit comments