@@ -24,6 +24,11 @@ From mathcomp Require Import vector archimedean interval.
2424(* the dependent sum *)
2525(* prodA x := sends (X * Y) * Z to X * (Y * Z) *)
2626(* prodAr x := sends X * (Y * Z) to (X * Y) * Z *)
27+ (* max_norm x := maximum of the norms of the coordinates of the *)
28+ (* vector x in a given basis. *)
29+ (* max_space V := alias of the vectType V equipped with a *)
30+ (* structure of normed Z-module, where the norm is *)
31+ (* max_norm. *)
2732(* ``` *)
2833(* *)
2934(***************************************************************************** *)
@@ -594,6 +599,9 @@ Proof. exact: real_ltr_bound. Qed.
594599Lemma ltrNbound {R : archiRealDomainType} (x : R) : - x < (Num.bound x)%:R.
595600Proof . exact: real_ltrNbound. Qed .
596601
602+ (* normedZmodType provide norms but the subject is not the norm. We define here
603+ a structure of norm where the subject is the function from the left-module to
604+ its scalar field. *)
597605Module Norm.
598606
599607HB.mixin Record isNorm (K : numDomainType) (L : lmodType K) (norm : L -> K) := {
@@ -618,7 +626,7 @@ Lemma normN x : norm (- x) = norm x.
618626Proof . by rewrite -scaleN1r normZ normrN1 mul1r. Qed .
619627
620628Lemma ler_norm_sum (I : Type ) (r : seq I) (F : I -> L) :
621- norm (\sum_(i <- r) F i) <= \sum_(i <- r) norm (F i).
629+ norm (\sum_(i <- r) F i) <= \sum_(i <- r) norm (F i).
622630Proof .
623631by elim/big_ind2 : _ => *; rewrite ?norm0// (le_trans (ler_normD _ _))// lerD.
624632Qed .
@@ -642,7 +650,7 @@ Definition max_space : Type := (fun=> V) Bbasis.
642650
643651HB.instance Definition _ := Vector.on max_space.
644652
645- Lemma max_norm_ge0 x : 0 <= max_norm x.
653+ Let max_norm_ge0 x : 0 <= max_norm x.
646654Proof .
647655rewrite /max_norm.
648656by elim/big_ind : _ => //= ? ? ? ?; rewrite /Order.max; case: ifP.
@@ -659,7 +667,7 @@ have /comparable_leNgt <- := real_comparable bR (normr_real (coord B j x)).
659667by move=> /(le_trans IHl).
660668Qed .
661669
662- Lemma max_norm0 : max_norm 0 = 0.
670+ Let max_norm0 : max_norm 0 = 0.
663671Proof .
664672apply: le_anti; rewrite max_norm_ge0 andbT.
665673apply: bigmax_le => // i _.
@@ -669,21 +677,21 @@ have <-: \sum_(i < \dim V') 0 *: B`_i = 0.
669677by rewrite coord_sum_free ?normr0// (basis_free Bbasis).
670678Qed .
671679
672- Lemma ler_max_normD x y : max_norm (x + y) <= max_norm x + max_norm y.
680+ Let ler_max_normD x y : max_norm (x + y) <= max_norm x + max_norm y.
673681Proof .
674682apply: bigmax_le => [|/= i _]; first by rewrite addr_ge0// max_norm_ge0.
675683by rewrite raddfD/= (le_trans (ler_normD _ _))// lerD// le_coord_max_norm.
676684Qed .
677685
678- Lemma max_norm0_eq0 x : max_norm x = 0 -> x = 0.
686+ Let max_norm0_eq0 x : max_norm x = 0 -> x = 0.
679687Proof .
680688move=> x0; rewrite (coord_basis Bbasis (memvf x)).
681689suff: forall i, coord B i x = 0.
682690 by move=> {}x0; rewrite big1//= => j _; rewrite x0 scale0r.
683691by move=> i; apply/normr0_eq0/le_anti; rewrite normr_ge0 -x0 le_coord_max_norm.
684692Qed .
685693
686- Lemma max_normZ r x : max_norm (r *: x) = `|r| * max_norm x.
694+ Let max_normZ r x : max_norm (r *: x) = `|r| * max_norm x.
687695Proof .
688696rewrite /max_norm.
689697under eq_bigr do rewrite linearZ/= normrM.
@@ -694,10 +702,10 @@ Qed.
694702HB.instance Definition _ := Norm.isNorm.Build K V max_norm
695703 max_norm0 max_norm_ge0 max_norm0_eq0 ler_max_normD max_normZ.
696704
697- Lemma max_normMn x n : max_norm (x *+ n) = max_norm x *+ n.
705+ Let max_normMn x n : max_norm (x *+ n) = max_norm x *+ n.
698706Proof . exact: Norm.Theory.normMn. Qed .
699707
700- Lemma max_normN x : max_norm (- x) = max_norm x.
708+ Let max_normN x : max_norm (- x) = max_norm x.
701709Proof . exact: Norm.Theory.normN. Qed .
702710
703711HB.instance Definition _ := Num.Zmodule_isNormed.Build K
0 commit comments