Condition numbers of sign matrices
AbbreviationBoolean encoding of sign matrices#✓fully proved
For a natural number \(n\), a sign matrix of order \(n\) is encoded as an \(n \times n\) matrix with entries in the Booleans \(\{\mathrm{true}, \mathrm{false}\}\), whose rows and columns are indexed by \(\{0, \dots, n - 1\}\).
Used by 8
DefinitionReal sign matrix of a Boolean matrix#✓fully proved
The realization of a Boolean \(n \times n\) matrix \(A\) is the real \(n \times n\) matrix whose \((i, j)\) entry is \(-1\) if \(A_{ij}\) is true and \(1\) if \(A_{ij}\) is false.
def SignMatrix.realize {n : ℕ} (A : SignMatrix n) : Matrix (Fin n) (Fin n) ℝ :=
fun i j => if A i j then -1 else 1
abbrev SignMatrix (n : ℕ) := Matrix (Fin n) (Fin n) Bool
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:24
Uses 1 · Used by 7
TheoremRealized sign matrices have entries \(\pm 1\)#✓fully proved
For every Boolean \(n \times n\) matrix \(A\) and all indices \(i, j\), the \((i, j)\) entry of the real realization of \(A\) is \(1\) or \(-1\).
theorem SignMatrix.realize_entries {n : ℕ} (A : SignMatrix n) (i j : Fin n) :
A.realize i j = 1 ∨ A.realize i j = -1
abbrev SignMatrix (n : ℕ) := Matrix (Fin n) (Fin n) Bool
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:24
Uses 2 · Used by 1
TheoremBoolean matrices realize exactly the sign matrices#✓fully proved
Send each \(n \times n\) Boolean matrix to the real matrix whose entry is \(-1\) where the Boolean entry is true and \(1\) where it is false. A real \(n \times n\) matrix \(M\) arises in this way if and only if every entry of \(M\) is \(1\) or \(-1\).
theorem exists_realize_iff {n : ℕ} (M : Matrix (Fin n) (Fin n) ℝ) :
(∃ A : SignMatrix n, A.realize = M) ↔ ∀ i j, M i j = 1 ∨ M i j = -1
abbrev SignMatrix (n : ℕ) := Matrix (Fin n) (Fin n) Bool
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:24
Uses 3 · Used by 1
DefinitionCondition number of a square real matrix#✓fully proved
For a real \(n \times n\) matrix \(A\), let \(\sigma_0 \ge \sigma_1 \ge \dots\) be the singular values of \(A\) acting on Euclidean space \(\mathbb{R}^n\), indexed from \(0\) and extended by \(\sigma_i = 0\) for \(i \ge n\). The condition number of \(A\), an element of \([0, \infty]\), is \(\infty\) if \(\sigma_{n-1} = 0\) and \(\sigma_0 / \sigma_{n-1}\) otherwise, where \(n - 1\) is read as \(0\) when \(n = 0\).
The minimum over sign matrices is only taken at positive order.
noncomputable def conditionNumber {n : ℕ} (A : Matrix (Fin n) (Fin n) ℝ) : ENNReal :=
let σ := (Matrix.toEuclideanLin A).singularValues
if σ (n - 1) = 0 then ⊤ else ENNReal.ofReal (σ 0 / σ (n - 1))
Used by 9
DefinitionMinimum condition number of sign matrices#✓fully proved
For a positive integer \(n\), the minimum condition number of order \(n\) is the least condition number of a real \(n \times n\) sign matrix, that is, a matrix all of whose entries are \(1\) or \(-1\); the minimum is taken over the finitely many such matrices.
noncomputable def minimumConditionNumber (n : {n : ℕ // 0 < n}) : ENNReal :=
(Finset.univ : Finset (SignMatrix n.1)).inf' Finset.univ_nonempty
(fun A => conditionNumber A.realize)
abbrev SignMatrix (n : ℕ) := Matrix (Fin n) (Fin n) Bool
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:24
noncomputable def conditionNumber {n : ℕ} (A : Matrix (Fin n) (Fin n) ℝ) : ENNReal :=
let σ := (Matrix.toEuclideanLin A).singularValues
if σ (n - 1) = 0 then ⊤ else ENNReal.ofReal (σ 0 / σ (n - 1))
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:54
Uses 3 · Used by 4
TheoremInfinite condition number from a vanishing singular value#✓fully proved
Let \(A\) be a real \(n \times n\) matrix with singular values \(\sigma_0 \ge \sigma_1 \ge \dots\) on Euclidean space \(\mathbb{R}^n\), indexed from \(0\) and extended by zeros, where \(n - 1\) is read as \(0\) when \(n = 0\). If \(\sigma_{n-1} = 0\), then the condition number of \(A\) is \(\infty\).
theorem conditionNumber_eq_top_of_smallest_eq_zero {n : ℕ}
(A : Matrix (Fin n) (Fin n) ℝ)
(h : (Matrix.toEuclideanLin A).singularValues (n - 1) = 0) :
conditionNumber A = ⊤
noncomputable def conditionNumber {n : ℕ} (A : Matrix (Fin n) (Fin n) ℝ) : ENNReal :=
let σ := (Matrix.toEuclideanLin A).singularValues
if σ (n - 1) = 0 then ⊤ else ENNReal.ofReal (σ 0 / σ (n - 1))
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:54
Uses 1
TheoremCondition number as a singular-value ratio#✓fully proved
Let \(A\) be a real \(n \times n\) matrix with singular values \(\sigma_0 \ge \sigma_1 \ge \dots\) on Euclidean space \(\mathbb{R}^n\), indexed from \(0\) and extended by zeros, where \(n - 1\) is read as \(0\) when \(n = 0\). If \(\sigma_{n-1} \ne 0\), then the condition number of \(A\) equals \(\sigma_0 / \sigma_{n-1}\).
theorem conditionNumber_eq_ratio_of_smallest_ne_zero {n : ℕ}
(A : Matrix (Fin n) (Fin n) ℝ)
(h : (Matrix.toEuclideanLin A).singularValues (n - 1) ≠ 0) :
conditionNumber A = ENNReal.ofReal
((Matrix.toEuclideanLin A).singularValues 0 /
(Matrix.toEuclideanLin A).singularValues (n - 1))
noncomputable def conditionNumber {n : ℕ} (A : Matrix (Fin n) (Fin n) ℝ) : ENNReal :=
let σ := (Matrix.toEuclideanLin A).singularValues
if σ (n - 1) = 0 then ⊤ else ENNReal.ofReal (σ 0 / σ (n - 1))
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:54
Uses 1 · Used by 1
TheoremThe zero matrix has infinite condition number#✓fully proved
For every natural number \(n\), the condition number of the real \(n \times n\) zero matrix is \(\infty\); this includes the \(0 \times 0\) matrix.
@[simp] theorem conditionNumber_zero (n : ℕ) :
conditionNumber (0 : Matrix (Fin n) (Fin n) ℝ) = ⊤
noncomputable def conditionNumber {n : ℕ} (A : Matrix (Fin n) (Fin n) ℝ) : ENNReal :=
let σ := (Matrix.toEuclideanLin A).singularValues
if σ (n - 1) = 0 then ⊤ else ENNReal.ofReal (σ 0 / σ (n - 1))
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:54
Uses 1
TheoremThe minimum condition number is attained#✓fully proved
For every positive integer \(n\), there is an \(n \times n\) Boolean matrix whose realization as a real sign matrix (\(-1\) for true, \(1\) for false) has condition number equal to the minimum condition number of order \(n\).
theorem minimumConditionNumber_attained (n : {n : ℕ // 0 < n}) :
∃ A : SignMatrix n.1, minimumConditionNumber n = conditionNumber A.realize
abbrev SignMatrix (n : ℕ) := Matrix (Fin n) (Fin n) Bool
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:24
noncomputable def minimumConditionNumber (n : {n : ℕ // 0 < n}) : ENNReal :=
(Finset.univ : Finset (SignMatrix n.1)).inf' Finset.univ_nonempty
(fun A => conditionNumber A.realize)
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:60
noncomputable def conditionNumber {n : ℕ} (A : Matrix (Fin n) (Fin n) ℝ) : ENNReal :=
let σ := (Matrix.toEuclideanLin A).singularValues
if σ (n - 1) = 0 then ⊤ else ENNReal.ofReal (σ 0 / σ (n - 1))
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:54
TheoremCondition numbers are at least one#✓fully proved
For every natural number \(n\) and every real \(n \times n\) matrix \(A\), the condition number of \(A\) is at least \(1\).
theorem one_le_conditionNumber {n : ℕ} (A : Matrix (Fin n) (Fin n) ℝ) :
1 ≤ conditionNumber A
noncomputable def conditionNumber {n : ℕ} (A : Matrix (Fin n) (Fin n) ℝ) : ENNReal :=
let σ := (Matrix.toEuclideanLin A).singularValues
if σ (n - 1) = 0 then ⊤ else ENNReal.ofReal (σ 0 / σ (n - 1))
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:54
Uses 1 · Used by 1
TheoremThe minimum condition number is at least one#✓fully proved
For every positive integer \(n\), the minimum condition number of the real \(n \times n\) sign matrices is at least \(1\).
theorem one_le_minimumConditionNumber (n : {n : ℕ // 0 < n}) :
1 ≤ minimumConditionNumber n
noncomputable def minimumConditionNumber (n : {n : ℕ // 0 < n}) : ENNReal :=
(Finset.univ : Finset (SignMatrix n.1)).inf' Finset.univ_nonempty
(fun A => conditionNumber A.realize)
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:60
Uses 5 · Used by 1
TheoremCondition number of the order-one identity#✓fully proved
The condition number of the \(1 \times 1\) real identity matrix is \(1\).
@[simp] theorem conditionNumber_one_order_one :
conditionNumber (1 : Matrix (Fin 1) (Fin 1) ℝ) = 1
noncomputable def conditionNumber {n : ℕ} (A : Matrix (Fin n) (Fin n) ℝ) : ENNReal :=
let σ := (Matrix.toEuclideanLin A).singularValues
if σ (n - 1) = 0 then ⊤ else ENNReal.ofReal (σ 0 / σ (n - 1))
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:54
Uses 2 · Used by 1
TheoremMinimum condition number of order one#✓fully proved
The minimum condition number of order \(1\) is \(1\): the least condition number of a \(1 \times 1\) real sign matrix is \(1\).
@[simp] theorem minimumConditionNumber_one :
minimumConditionNumber ⟨1, Nat.zero_lt_one⟩ = 1
noncomputable def minimumConditionNumber (n : {n : ℕ // 0 < n}) : ENNReal :=
(Finset.univ : Finset (SignMatrix n.1)).inf' Finset.univ_nonempty
(fun A => conditionNumber A.realize)
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:60
DefinitionSubpolynomial sequences#✓fully proved
A sequence \(f \colon \mathbb{N} \to [0, \infty)\) is subpolynomial when for every real \(\varepsilon > 0\) we have \(f(n) = o(n^{\varepsilon})\) as \(n \to \infty\).
def IsSubpolynomial (f : ℕ → NNReal) : Prop :=
∀ ε : ℝ, 0 < ε → IsLittleO atTop (fun n : ℕ => (f n : ℝ))
(fun n : ℕ => Real.rpow (n : ℝ) ε)
Used by 1
DefinitionAdmissible decay exponents#✓fully proved
A real number \(\alpha\) is an admissible exponent when there is a subpolynomial sequence \(f \colon \mathbb{N} \to [0, \infty)\) such that for every positive integer \(n\) the minimum condition number \(\kappa_n\) of the real \(n \times n\) sign matrices satisfies \(\kappa_n = 1 + f(n) / n^{\alpha}\), as an equality in \([0, \infty]\).
def IsAdmissibleExponent (α : ℝ) : Prop :=
∃ f : ℕ → NNReal, IsSubpolynomial f ∧
∀ (n : ℕ) (hn : 0 < n), minimumConditionNumber ⟨n, hn⟩ =
1 + (f n : ENNReal) / ENNReal.ofReal (Real.rpow (n : ℝ) α)
def IsSubpolynomial (f : ℕ → NNReal) : Prop :=
∀ ε : ℝ, 0 < ε → IsLittleO atTop (fun n : ℕ => (f n : ℝ))
(fun n : ℕ => Real.rpow (n : ℝ) ε)
MathlibExt/LinearAlgebra/Matrix/SignConditionNumberDecay.lean:26
noncomputable def minimumConditionNumber (n : {n : ℕ // 0 < n}) : ENNReal :=
(Finset.univ : Finset (SignMatrix n.1)).inf' Finset.univ_nonempty
(fun A => conditionNumber A.realize)
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:60
Uses 2 · Used by 1
DefinitionDecay exponent of minimum sign-matrix condition numbers#✓fully proved
The decay exponent is the supremum, taken in the extended reals \([-\infty, \infty]\), of the set of admissible exponents \(\alpha \in \mathbb{R}\).
The supremum need not be attained; it is \(-\infty\) when no exponent is admissible.
noncomputable def decayExponent : EReal :=
sSup ((fun α : ℝ => (α : EReal)) '' {α : ℝ | IsAdmissibleExponent α})
def IsAdmissibleExponent (α : ℝ) : Prop :=
∃ f : ℕ → NNReal, IsSubpolynomial f ∧
∀ (n : ℕ) (hn : 0 < n), minimumConditionNumber ⟨n, hn⟩ =
1 + (f n : ENNReal) / ENNReal.ofReal (Real.rpow (n : ℝ) α)
MathlibExt/LinearAlgebra/Matrix/SignConditionNumberDecay.lean:32
Uses 1
DefinitionHadamard hypothesis#✓fully proved
The Hadamard hypothesis is the proposition that for every natural number \(n\) divisible by \(4\) there is an \(n \times n\) Hadamard matrix with integer entries, that is, an integer matrix \(H\) with all entries \(\pm 1\) such that \(H H^{\mathsf{T}} = H^{\mathsf{T}} H = n I\).
This is the Hadamard conjecture, stated as a proposition to be used as a hypothesis.
def HadamardHypothesis : Prop :=
∀ n : ℕ, n % 4 = 0 → ∃ M : Matrix (Fin n) (Fin n) ℤ, Matrix.IsHadamard M
DefinitionSymmetric conference matrices#✓fully proved
A real \(n \times n\) matrix \(C\) is a symmetric conference matrix when \(n \ge 2\), \(C^{\mathsf{T}} = C\), every diagonal entry of \(C\) is \(0\), every off-diagonal entry of \(C\) is \(1\) or \(-1\), and \(C C^{\mathsf{T}} = (n - 1) I\), where \(I\) is the identity matrix.
TheoremAdding the identity to a symmetric conference matrix gives a sign matrix#✓fully proved
If \(C\) is a real \(n \times n\) symmetric conference matrix and \(I\) is the \(n \times n\) identity matrix, then there is a Boolean \(n \times n\) matrix whose realization as a real sign matrix equals \(C + I\).
theorem IsSymmetricConference.exists_realize_add_one {n : ℕ}
{C : Matrix (Fin n) (Fin n) ℝ} (hC : IsSymmetricConference C) :
∃ A : SignMatrix n, A.realize = C + 1
def IsSymmetricConference {n : ℕ} (C : Matrix (Fin n) (Fin n) ℝ) : Prop :=
2 ≤ n ∧ C.transpose = C ∧ (∀ i, C i i = 0) ∧
(∀ i j, i ≠ j → C i j = 1 ∨ C i j = -1) ∧
C * C.transpose = ((n : ℝ) - 1) • (1 : Matrix (Fin n) (Fin n) ℝ)
MathlibExt/LinearAlgebra/Matrix/SignConditionNumberDecay.lean:47
abbrev SignMatrix (n : ℕ) := Matrix (Fin n) (Fin n) Bool
MathlibExt/LinearAlgebra/Matrix/SignConditionNumber.lean:24
Uses 4
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.