Library mxorder
Require Import ssreflect ssrfun ssrbool eqtype ssrnat seq fintype.
Require Import bigop ssralg zmodp matrix ssrnum complex.
Require Import big_minmax.
Require Import bigop ssralg zmodp matrix ssrnum complex.
Require Import big_minmax.
Here we define a partial order over matrices.
A <m: B == forall i and j, A i j < B i j.
A <=m: B == forall i and j, A i j <= B i j.
Mabs A == the matrix where each coefficient is the
absolute value (or module) of the corresponding
coefficient of the atrix A.
Set Implicit Arguments.
Import Prenex Implicits.
Local Open Scope ring_scope.
Import GRing.Theory.
Import Num.Theory.
Import Num.Def.
Section matRDef.
Variable R : numDomainType.
Variable p q: nat.
Definitions for absolute value of a matrix and componentwise order
Definition Mabs (A: 'M[R]_(p, q)) := map_mx normr A.
Definition Mle (A B: 'M[R]_(p, q)) := forall i j, A i j <= B i j.
Definition Mlt (A B: 'M[R]_(p, q)) := forall i j, A i j < B i j.
Definition one_M: matrix R p q := \matrix_(i, j) 1.
End matRDef.
Implicit Arguments one_M[p q].
Infix "<m:" := Mlt (at level 70): ring_scope.
Infix "<=m:" := Mle (at level 70): ring_scope.
Section matRProp.
Variable R : numDomainType.
Variable n p q: nat.
Open Scope ring_scope.
Import GRing.Theory.
Import Num.Theory.
Import Num.Def.
Lemma Mle_trans (A B C : 'M[R]_(p, q)) : A <=m: B -> B <=m: C -> A <=m: C.
Lemma Mle_refl (A : 'M[R]_(p, q)) : A <=m: A.
Lemma Mlt_trans (A B C : 'M[R]_(p, q)) : A <m: B -> B <m: C -> A <m: C.
Lemma Mlt_le_trans (A B C : 'M[R]_(p, q)) : A <m: B -> B <=m: C -> A <m: C.
Lemma MltW (A B : 'M[R]_(p, q)) : A <m: B -> A <=m: B.
Lemma Mabs_eq0 (A : 'M[R]_(p, q)) : ((Mabs A) == 0) = (A == 0).
Lemma Mabs_ge0 (A : 'M[R]_(p, q)) : 0 <=m: Mabs A.
Lemma Mabs_triang (A B : 'M[R]_(p,q)) : (Mabs (A + B)) <=m: (Mabs A + Mabs B).
Lemma Mle_add:
forall (a b c d: 'M[R]_(p,q)), Mle a b -> Mle c d -> Mle (a + c) (b + d).
Lemma MabsM (M : 'M[R]_(n, p)) (N :'M_(p, q)) :
Mabs (M *m N) <=m: (Mabs M) *m (Mabs N).
Lemma Mabs_scalemx a (M : 'M[R]_(n, p)) : Mabs (a *: M) = `|a| *: Mabs M.
Lemma eq_Mabs_id (M : 'M[R]_(n, p)) : 0 <=m: M -> Mabs M = M.
Lemma subr_Mge0 (A B : 'M[R]_(p,q)) : B <=m: A <-> 0 <=m: (A - B).
Lemma subr_Mgt (A B C : 'M[R]_(p,q)) : B + A <m: C <-> A <m: C - B.
Lemma mulmx_gt0 (A: 'M[R]_(p,q)) (x : 'cV_q) : 0 <m: A ->
0 <=m: x -> x != 0 -> 0 <m: A *m x.
Lemma Mlt_scaler (A B : 'M[R]_(p,q)) a : 0 < a -> A <m: B -> a *: A <m: a *: B.
Lemma ltr_sum (I : eqType) (r : seq I) (P : pred I) (F G : I -> R) (i : I) :
(forall i, P i -> F i < G i) -> i \in r -> P i ->
\sum_(i <- r | P i) F i < \sum_(i <- r | P i) G i.
Lemma Mlt_pmul2r (A B : 'M[R]_(n, p.+1)) (C :'M_(p.+1, q)) :
0 <m: C -> A <m: B -> A *m C <m: B *m C.
Lemma Mlt_pmul2l (C : 'M[R]_(n, p.+1)) (A B :'M_(p.+1, q)) :
0 <m: C -> A <m: B -> C *m A <m: C *m B.
Lemma Mle_wpmul2l (C : 'M[R]_(n, p)) (A B :'M_(p, q)) :
0 <=m: C -> A <=m: B -> C *m A <=m: C *m B.
Lemma Mle_wpmul2r (C : 'M[R]_(p, n)) (A B :'M_(q, p)) :
0 <=m: C -> A <=m: B -> A *m C <=m: B *m C.
End matRProp.
Section matRProp2.
Variable R : rcfType.
Variable p q n : nat.
Lemma Mle_wpmul :
forall (a b: 'M[R]_(q,n)) (u v: 'M_(p, q)),
u <=m: v -> a <=m: b -> Mle 0 a -> Mle 0 u -> u *m a <=m: v *m b.
Local Notation "A ^%:C" := (map_mx (real_complex_def (Phant R)) A) (at level 2).
Lemma Mabs_real_complex (A : 'M[R]_(p,q)) : Mabs A^%:C = (Mabs A)^%:C.
Lemma mxreal_gt0 m (A : 'M[R]_(m,n)) : 0 <m: A <-> 0 <m: A^%:C.
Lemma mxreal_ge0 m (A : 'M[R]_(m,n)) : 0 <=m: A <-> 0 <=m: A^%:C.
End matRProp2.
Section theory.
Variable R : numFieldType.
Lemma Mle_eps m (u v : 'cV[R]_m.+1) :
let F i := ((u i 0) / 2%:R)/ (v i 0) in
let eps := min_fT F in
0 <m: u -> 0 <m: v -> eps *: v <m: u.
End theory.
This page has been generated by coqdoc