/-
Copyright 2026 The Formal Conjectures Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-/
module
public import Mathlib.Analysis.Matrix.Spectrum
public import Mathlib.Combinatorics.SimpleGraph.Basic
public import FormalConjecturesForMathlib.Analysis.Matrix.Spectrum@[expose] public sectionnamespace SimpleGraphvariable {α : Type*} [Fintype α] [DecidableEq α]Lovász Theta Function ($\vartheta(G)$). The Lovász theta function is defined as: $$\vartheta(G) = \min \lambda_{\max}(A)$$ where the minimum is taken over all real symmetric (Hermitian) matrices $A$ such that:
$A_{ii} = 1$ for all $i$ (diagonal entries are $1$), and
$A_{ij} = 1$ for all ${i,j} \notin E(G)$ (entries corresponding to non-edges are $1$).
Here $\lambda_{\max}(A)$ denotes the maximum eigenvalue of $A$.
noncomputable def lovaszThetaFunction
(G : SimpleGraph α) [DecidableRel G.Adj] : ℝ :=
sInf {(Matrix.IsHermitian.maxEigenvalue hA) | (A : Matrix α α ℝ) (hA : A.IsHermitian)
(_ : ∀ i, A i i = 1) (_ : ∀ i j, ¬G.Adj i j → A i j = 1)}The Lovász theta function of a graph on an empty vertex type is $0$.
All goals completed! 🐙
lemma one_le_maxEigenvalue_of_diag_eq_one [Nonempty α] {A : Matrix α α ℝ}
(hA : A.IsHermitian) (hdiag : ∀ i, A i i = 1) :
1 ≤ hA.maxEigenvalue := by α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1⊢ 1 ≤ hA.maxEigenvalue
have htrace : (Fintype.card α : ℝ) = ∑ i, hA.eigenvalues i := by
have h := hA.trace_eq_sum_eigenvalues α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1h:A.trace = ∑ i, ↑(hA.eigenvalues i)⊢ ↑(Fintype.card α) = ∑ i, hA.eigenvalues i α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues i⊢ 1 ≤ hA.maxEigenvalue
simp only [Matrix.trace, Matrix.diag_apply, hdiag, Finset.sum_const, Finset.card_univ,
nsmul_eq_mul, mul_one, RCLike.ofReal_real_eq_id, id_eq] at h α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1h:↑(Fintype.card α) = ∑ x, hA.eigenvalues x⊢ ↑(Fintype.card α) = ∑ i, hA.eigenvalues i α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues i⊢ 1 ≤ hA.maxEigenvalue
exact h α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues i⊢ 1 ≤ hA.maxEigenvalue α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues i⊢ 1 ≤ hA.maxEigenvalue
have hle : ∑ i : α, hA.eigenvalues i ≤ ∑ _i : α, hA.maxEigenvalue :=
Finset.sum_le_sum fun i _ => le_ciSup (Finite.bddAbove_range _) i α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues ihle:∑ i, hA.eigenvalues i ≤ ∑ _i, hA.maxEigenvalue⊢ 1 ≤ hA.maxEigenvalue
rw [← htrace, α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues ihle:↑(Fintype.card α) ≤ ∑ _i, hA.maxEigenvalue⊢ 1 ≤ hA.maxEigenvalue α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues ihle:↑(Fintype.card α) ≤ ↑(Fintype.card α) * hA.maxEigenvalue⊢ 1 ≤ hA.maxEigenvalue Finset.sum_const, α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues ihle:↑(Fintype.card α) ≤ Finset.univ.card • hA.maxEigenvalue⊢ 1 ≤ hA.maxEigenvalue α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues ihle:↑(Fintype.card α) ≤ ↑(Fintype.card α) * hA.maxEigenvalue⊢ 1 ≤ hA.maxEigenvalue Finset.card_univ, α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues ihle:↑(Fintype.card α) ≤ Fintype.card α • hA.maxEigenvalue⊢ 1 ≤ hA.maxEigenvalue α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues ihle:↑(Fintype.card α) ≤ ↑(Fintype.card α) * hA.maxEigenvalue⊢ 1 ≤ hA.maxEigenvalue nsmul_eq_mul α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues ihle:↑(Fintype.card α) ≤ ↑(Fintype.card α) * hA.maxEigenvalue⊢ 1 ≤ hA.maxEigenvalue α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues ihle:↑(Fintype.card α) ≤ ↑(Fintype.card α) * hA.maxEigenvalue⊢ 1 ≤ hA.maxEigenvalue] at hle α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues ihle:↑(Fintype.card α) ≤ ↑(Fintype.card α) * hA.maxEigenvalue⊢ 1 ≤ hA.maxEigenvalue
have hpos : (0 : ℝ) < Fintype.card α := Nat.cast_pos.mpr Fintype.card_pos α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1htrace:↑(Fintype.card α) = ∑ i, hA.eigenvalues ihle:↑(Fintype.card α) ≤ ↑(Fintype.card α) * hA.maxEigenvaluehpos:0 < ↑(Fintype.card α)⊢ 1 ≤ hA.maxEigenvalue
exact (le_mul_iff_one_le_right hpos).mp hle All goals completed! 🐙
lemma bddBelow_lovaszThetaSet (G : SimpleGraph α) [DecidableRel G.Adj] :
BddBelow {(Matrix.IsHermitian.maxEigenvalue hA) | (A : Matrix α α ℝ) (hA : A.IsHermitian)
(_ : ∀ i, A i i = 1) (_ : ∀ i j, ¬G.Adj i j → A i j = 1)} := by α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adj⊢ BddBelow
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1), hA.maxEigenvalue = x}
by_cases hα : Nonempty α pos α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adjhα:Nonempty α⊢ BddBelow
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1), hA.maxEigenvalue = x}neg α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adjhα:¬Nonempty α⊢ BddBelow
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1), hA.maxEigenvalue = x}
· pos α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adjhα:Nonempty α⊢ BddBelow
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1), hA.maxEigenvalue = x} refine ⟨1, ?_⟩ pos α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adjhα:Nonempty α⊢ 1 ∈
lowerBounds
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1),
hA.maxEigenvalue = x}
rintro _ ⟨A, hA, hdiag, _, rfl⟩ pos α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adjhα:Nonempty αA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1w✝:∀ (i j : α), ¬G.Adj i j → A i j = 1⊢ 1 ≤ hA.maxEigenvalue
exact one_le_maxEigenvalue_of_diag_eq_one hA hdiag All goals completed! 🐙
· neg α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adjhα:¬Nonempty α⊢ BddBelow
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1), hA.maxEigenvalue = x} rw [not_nonempty_iff neg α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adjhα:IsEmpty α⊢ BddBelow
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1), hA.maxEigenvalue = x} neg α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adjhα:IsEmpty α⊢ BddBelow
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1), hA.maxEigenvalue = x}] at hα neg α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adjhα:IsEmpty α⊢ BddBelow
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1), hA.maxEigenvalue = x}
refine ⟨0, ?_⟩ neg α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adjhα:IsEmpty α⊢ 0 ∈
lowerBounds
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1),
hA.maxEigenvalue = x}
rintro _ ⟨A, hA, _, _, rfl⟩ neg α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adjhα:IsEmpty αA:Matrix α α ℝhA:A.IsHermitianw✝¹:∀ (i : α), A i i = 1w✝:∀ (i j : α), ¬G.Adj i j → A i j = 1⊢ 0 ≤ hA.maxEigenvalue
simp [Matrix.IsHermitian.maxEigenvalue] All goals completed! 🐙
lemma nonempty_lovaszThetaSet (G : SimpleGraph α) [DecidableRel G.Adj] :
{(Matrix.IsHermitian.maxEigenvalue hA) | (A : Matrix α α ℝ) (hA : A.IsHermitian)
(_ : ∀ i, A i i = 1) (_ : ∀ i j, ¬G.Adj i j → A i j = 1)}.Nonempty := by α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.Adj⊢ {x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1),
hA.maxEigenvalue = x}.Nonempty
let J : Matrix α α ℝ := Matrix.of fun _ _ => 1 α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.AdjJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1⊢ {x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1),
hA.maxEigenvalue = x}.Nonempty
have hJ : J.IsHermitian := by
ext i j α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.AdjJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1i:αj:α⊢ J.conjTranspose i j = J i j α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.AdjJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitian⊢ {x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1),
hA.maxEigenvalue = x}.Nonempty
simp [J, Matrix.conjTranspose_apply] α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.AdjJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitian⊢ {x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1),
hA.maxEigenvalue = x}.Nonempty α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αG:SimpleGraph αinst✝:DecidableRel G.AdjJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitian⊢ {x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1),
hA.maxEigenvalue = x}.Nonempty
exact ⟨hJ.maxEigenvalue, J, hJ, fun _ => rfl, fun _ _ _ => rfl, rfl⟩ All goals completed! 🐙The Lovász theta function of any nonempty graph is at least $1$.
theorem one_le_lovaszThetaFunction [Nonempty α] (G : SimpleGraph α) [DecidableRel G.Adj] :
1 ≤ lovaszThetaFunction G := by α:Type u_1inst✝³:Fintype αinst✝²:DecidableEq αinst✝¹:Nonempty αG:SimpleGraph αinst✝:DecidableRel G.Adj⊢ 1 ≤ G.lovaszThetaFunction
apply le_csInf (nonempty_lovaszThetaSet G) α:Type u_1inst✝³:Fintype αinst✝²:DecidableEq αinst✝¹:Nonempty αG:SimpleGraph αinst✝:DecidableRel G.Adj⊢ ∀
b ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1),
hA.maxEigenvalue = x},
1 ≤ b
rintro _ ⟨A, hA, hdiag, _, rfl⟩ α:Type u_1inst✝³:Fintype αinst✝²:DecidableEq αinst✝¹:Nonempty αG:SimpleGraph αinst✝:DecidableRel G.AdjA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1w✝:∀ (i j : α), ¬G.Adj i j → A i j = 1⊢ 1 ≤ hA.maxEigenvalue
exact one_le_maxEigenvalue_of_diag_eq_one hA hdiag All goals completed! 🐙Adding edges to a graph can only decrease or preserve its Lovász theta function.
theorem lovaszThetaFunction_anti {G H : SimpleGraph α} [DecidableRel G.Adj] [DecidableRel H.Adj]
(h : G ≤ H) :
lovaszThetaFunction H ≤ lovaszThetaFunction G := by α:Type u_1inst✝³:Fintype αinst✝²:DecidableEq αG:SimpleGraph αH:SimpleGraph αinst✝¹:DecidableRel G.Adjinst✝:DecidableRel H.Adjh:G ≤ H⊢ H.lovaszThetaFunction ≤ G.lovaszThetaFunction
apply csInf_le_csInf (bddBelow_lovaszThetaSet H) (nonempty_lovaszThetaSet G) α:Type u_1inst✝³:Fintype αinst✝²:DecidableEq αG:SimpleGraph αH:SimpleGraph αinst✝¹:DecidableRel G.Adjinst✝:DecidableRel H.Adjh:G ≤ H⊢ {x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬G.Adj i j → A i j = 1),
hA.maxEigenvalue = x} ⊆
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬H.Adj i j → A i j = 1), hA.maxEigenvalue = x}
rintro _ ⟨A, hA, hdiag, hnonadj, rfl⟩ α:Type u_1inst✝³:Fintype αinst✝²:DecidableEq αG:SimpleGraph αH:SimpleGraph αinst✝¹:DecidableRel G.Adjinst✝:DecidableRel H.Adjh:G ≤ HA:Matrix α α ℝhA:A.IsHermitianhdiag:∀ (i : α), A i i = 1hnonadj:∀ (i j : α), ¬G.Adj i j → A i j = 1⊢ hA.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬H.Adj i j → A i j = 1), hA.maxEigenvalue = x}
exact ⟨A, hA, hdiag, fun i j hij => hnonadj i j (fun hG => hij (h hG)), rfl⟩ All goals completed! 🐙The Lovász theta function of the complete graph $K_n$ ($n \ge 1$) is $1$.
theorem lovaszThetaFunction_top [Nonempty α] :
lovaszThetaFunction (⊤ : SimpleGraph α) = 1 := by α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty α⊢ ⊤.lovaszThetaFunction = 1
apply le_antisymm a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty α⊢ ⊤.lovaszThetaFunction ≤ 1a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty α⊢ 1 ≤ ⊤.lovaszThetaFunction
· a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty α⊢ ⊤.lovaszThetaFunction ≤ 1 have h1 : (1 : Matrix α α ℝ).IsHermitian := Matrix.isHermitian_one a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1⊢ ⊤.lovaszThetaFunction ≤ 1
have hmem : h1.maxEigenvalue ∈ {(Matrix.IsHermitian.maxEigenvalue hA) | (A : Matrix α α ℝ)
(hA : A.IsHermitian) (_ : ∀ i, A i i = 1) (_ : ∀ i j, ¬(⊤ : SimpleGraph α).Adj i j → A i j = 1)} := by α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty α⊢ ⊤.lovaszThetaFunction = 1 a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}⊢ ⊤.lovaszThetaFunction ≤ 1
refine ⟨1, h1, fun _ => by α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1x✝:α⊢ 1 x✝ x✝ = 1 a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}⊢ ⊤.lovaszThetaFunction ≤ 1 simp All goals completed! 🐙a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}⊢ ⊤.lovaszThetaFunction ≤ 1, fun i j hij => ?_, rfl⟩
simp only [top_adj, ne_eq, not_not] at hij α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1i:αj:αhij:i = j⊢ 1 i j = 1a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}⊢ ⊤.lovaszThetaFunction ≤ 1
subst hij α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1i:α⊢ 1 i i = 1a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}⊢ ⊤.lovaszThetaFunction ≤ 1
simpa α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}⊢ ⊤.lovaszThetaFunction ≤ 1a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}⊢ ⊤.lovaszThetaFunction ≤ 1
refine (csInf_le (bddBelow_lovaszThetaSet ⊤) hmem).trans ?_ a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}⊢ h1.maxEigenvalue ≤ 1
apply ciSup_le a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}⊢ ∀ (x : α), h1.eigenvalues x ≤ 1
intro i a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:α⊢ h1.eigenvalues i ≤ 1
have hmv := h1.mulVec_eigenvectorBasis i a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:Matrix.mulVec 1 (h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLp⊢ h1.eigenvalues i ≤ 1
rw [Matrix.one_mulVec a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLp⊢ h1.eigenvalues i ≤ 1 a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLp⊢ h1.eigenvalues i ≤ 1] at hmva α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLp⊢ h1.eigenvalues i ≤ 1
by_contra! hgt a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLphgt:1 < h1.eigenvalues i⊢ False
have hzero : ⇑(h1.eigenvectorBasis i) = 0 := by α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty α⊢ ⊤.lovaszThetaFunction = 1 a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLphgt:1 < h1.eigenvalues ihzero:(h1.eigenvectorBasis i).ofLp = 0⊢ False
ext k α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLphgt:1 < h1.eigenvalues ik:α⊢ (h1.eigenvectorBasis i).ofLp k = 0 ka α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLphgt:1 < h1.eigenvalues ihzero:(h1.eigenvectorBasis i).ofLp = 0⊢ False
have hk := congr_fun hmv k α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLphgt:1 < h1.eigenvalues ik:αhk:(h1.eigenvectorBasis i).ofLp k = (h1.eigenvalues i • (h1.eigenvectorBasis i).ofLp) k⊢ (h1.eigenvectorBasis i).ofLp k = 0 ka α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLphgt:1 < h1.eigenvalues ihzero:(h1.eigenvectorBasis i).ofLp = 0⊢ False
simp only [Pi.smul_apply, smul_eq_mul, Pi.zero_apply] at hk ⊢ α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLphgt:1 < h1.eigenvalues ik:αhk:(h1.eigenvectorBasis i).ofLp k = h1.eigenvalues i * (h1.eigenvectorBasis i).ofLp k⊢ (h1.eigenvectorBasis i).ofLp k = 0a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLphgt:1 < h1.eigenvalues ihzero:(h1.eigenvectorBasis i).ofLp = 0⊢ False
nlinaritha α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLphgt:1 < h1.eigenvalues ihzero:(h1.eigenvectorBasis i).ofLp = 0⊢ Falsea α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLphgt:1 < h1.eigenvalues ihzero:(h1.eigenvectorBasis i).ofLp = 0⊢ False
exact h1.eigenvectorBasis.orthonormal.ne_zero i (by α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLphgt:1 < h1.eigenvalues ihzero:(h1.eigenvectorBasis i).ofLp = 0⊢ h1.eigenvectorBasis i = 0 ext k α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty αh1:Matrix.IsHermitian 1hmem:h1.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊤.Adj i j → A i j = 1), hA.maxEigenvalue = x}i:αhmv:(h1.eigenvectorBasis i).ofLp = h1.eigenvalues i • (h1.eigenvectorBasis i).ofLphgt:1 < h1.eigenvalues ihzero:(h1.eigenvectorBasis i).ofLp = 0k:α⊢ (h1.eigenvectorBasis i).ofLp k = WithLp.ofLp 0 k; exact congr_fun hzero k All goals completed! 🐙)
· a α:Type u_1inst✝²:Fintype αinst✝¹:DecidableEq αinst✝:Nonempty α⊢ 1 ≤ ⊤.lovaszThetaFunction exact one_le_lovaszThetaFunction ⊤ All goals completed! 🐙The Lovász theta function of the edgeless graph $\overline{K_n}$ is $n$.
theorem lovaszThetaFunction_bot :
lovaszThetaFunction (⊥ : SimpleGraph α) = Fintype.card α := by α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
by_cases hα : Nonempty α pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)neg α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:¬Nonempty α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
· pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α) let J : Matrix α α ℝ := Matrix.of fun _ _ => 1 pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
have hJ : J.IsHermitian := by
ext i j α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1i:αj:α⊢ J.conjTranspose i j = J i j pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitian⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
simp [J, Matrix.conjTranspose_apply] pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitian⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitian⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
have hset : {(Matrix.IsHermitian.maxEigenvalue hA) | (A : Matrix α α ℝ) (hA : A.IsHermitian)
(_ : ∀ i, A i i = 1) (_ : ∀ i j, ¬(⊥ : SimpleGraph α).Adj i j → A i j = 1)} = {hJ.maxEigenvalue} := by
ext x α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianx:ℝ⊢ x ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} ↔
x ∈ {hJ.maxEigenvalue} pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
simp only [Set.mem_singleton_iff] α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianx:ℝ⊢ x ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} ↔
x = hJ.maxEigenvaluepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
constructor mp α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianx:ℝ⊢ x ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} →
x = hJ.maxEigenvaluempr α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianx:ℝ⊢ x = hJ.maxEigenvalue →
x ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x}pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
· mp α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianx:ℝ⊢ x ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} →
x = hJ.maxEigenvaluepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α) rintro ⟨A, hA, _, hnonadj, rfl⟩ mp α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianA:Matrix α α ℝhA:A.IsHermitianw✝:∀ (i : α), A i i = 1hnonadj:∀ (i j : α), ¬⊥.Adj i j → A i j = 1⊢ hA.maxEigenvalue = hJ.maxEigenvaluepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
have hAJ : A = J := by α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α) mp α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianA:Matrix α α ℝhA:A.IsHermitianw✝:∀ (i : α), A i i = 1hnonadj:∀ (i j : α), ¬⊥.Adj i j → A i j = 1hAJ:A = J⊢ hA.maxEigenvalue = hJ.maxEigenvaluepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
ext i j α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianA:Matrix α α ℝhA:A.IsHermitianw✝:∀ (i : α), A i i = 1hnonadj:∀ (i j : α), ¬⊥.Adj i j → A i j = 1i:αj:α⊢ A i j = J i jmp α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianA:Matrix α α ℝhA:A.IsHermitianw✝:∀ (i : α), A i i = 1hnonadj:∀ (i j : α), ¬⊥.Adj i j → A i j = 1hAJ:A = J⊢ hA.maxEigenvalue = hJ.maxEigenvaluepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
exact hnonadj i j (by α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianA:Matrix α α ℝhA:A.IsHermitianw✝:∀ (i : α), A i i = 1hnonadj:∀ (i j : α), ¬⊥.Adj i j → A i j = 1i:αj:α⊢ ¬⊥.Adj i jmp α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianA:Matrix α α ℝhA:A.IsHermitianw✝:∀ (i : α), A i i = 1hnonadj:∀ (i j : α), ¬⊥.Adj i j → A i j = 1hAJ:A = J⊢ hA.maxEigenvalue = hJ.maxEigenvaluepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α) simp All goals completed! 🐙mp α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianA:Matrix α α ℝhA:A.IsHermitianw✝:∀ (i : α), A i i = 1hnonadj:∀ (i j : α), ¬⊥.Adj i j → A i j = 1hAJ:A = J⊢ hA.maxEigenvalue = hJ.maxEigenvaluepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α))mp α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianA:Matrix α α ℝhA:A.IsHermitianw✝:∀ (i : α), A i i = 1hnonadj:∀ (i j : α), ¬⊥.Adj i j → A i j = 1hAJ:A = J⊢ hA.maxEigenvalue = hJ.maxEigenvaluepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
subst hAJ mp α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhA:J.IsHermitianw✝:∀ (i : α), J i i = 1hnonadj:∀ (i j : α), ¬⊥.Adj i j → J i j = 1⊢ hA.maxEigenvalue = hJ.maxEigenvaluepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
rfl All goals completed! 🐙pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
· mpr α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianx:ℝ⊢ x = hJ.maxEigenvalue →
x ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x}pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α) rintro rfl mpr α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitian⊢ hJ.maxEigenvalue ∈
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1), hA.maxEigenvalue = x}pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
exact ⟨J, hJ, fun _ => rfl, fun _ _ _ => rfl, rfl⟩pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
rw [lovaszThetaFunction, pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ sInf
{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
↑(Fintype.card α) pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ hJ.maxEigenvalue = ↑(Fintype.card α) hset, pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ sInf {hJ.maxEigenvalue} = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ hJ.maxEigenvalue = ↑(Fintype.card α) csInf_singleton pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ hJ.maxEigenvalue = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ hJ.maxEigenvalue = ↑(Fintype.card α)]pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
have heig_dic : ∀ i : α, hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = Fintype.card α := by α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α) pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
intro i α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:α⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
let u : α → ℝ := ⇑(hJ.eigenvectorBasis i) α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLp⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
let s : ℝ := ∑ m : α, u m α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u m⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
have hmul : ∀ k : α, hJ.eigenvalues i * u k = s := by α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α) α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = s⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
intro k α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mk:α⊢ hJ.eigenvalues i * u k = s α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = s⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
have hk := congr_fun (hJ.mulVec_eigenvectorBasis i) k α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mk:αhk:J.mulVec (hJ.eigenvectorBasis i).ofLp k = (hJ.eigenvalues i • (hJ.eigenvectorBasis i).ofLp) k⊢ hJ.eigenvalues i * u k = s α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = s⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
simp only [J, Matrix.mulVec, dotProduct, Matrix.of_apply, one_mul, Pi.smul_apply,
smul_eq_mul] at hk α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mk:αhk:∑ i_1, (hJ.eigenvectorBasis i).ofLp i_1 = hJ.eigenvalues i * (hJ.eigenvectorBasis i).ofLp k⊢ hJ.eigenvalues i * u k = s α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = s⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
exact hk.symm α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = s⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α) α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = s⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
have hsum : hJ.eigenvalues i * s = (Fintype.card α : ℝ) * s := by α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α) α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * s⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
calc hJ.eigenvalues i * s
= ∑ k : α, hJ.eigenvalues i * u k := by α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = s⊢ hJ.eigenvalues i * s = ∑ k, hJ.eigenvalues i * u k α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * s⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α) rw [Finset.mul_sum α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = s⊢ ∑ i_1, hJ.eigenvalues i * u i_1 = ∑ k, hJ.eigenvalues i * u k All goals completed! 🐙 α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * s⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)] All goals completed! 🐙 α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * s⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
_ = ∑ _k : α, s := Finset.sum_congr rfl fun k _ => hmul k
_ = (Fintype.card α : ℝ) * s := by α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = s⊢ ∑ _k, s = ↑(Fintype.card α) * s α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * s⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α) simp [Finset.sum_const, nsmul_eq_mul] α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * s⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α) α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * s⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
by_cases hs : s = 0 pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)neg α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:¬s = 0⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
· pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α) left pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0⊢ hJ.eigenvalues i = 0pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
have hzero : ∀ k, hJ.eigenvalues i * u k = 0 := fun k => by α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0k:α⊢ hJ.eigenvalues i * u k = 0 pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0hzero:∀ (k : α), hJ.eigenvalues i * u k = 0⊢ hJ.eigenvalues i = 0pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α) rw [hmul k, α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0k:α⊢ s = 0pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0hzero:∀ (k : α), hJ.eigenvalues i * u k = 0⊢ hJ.eigenvalues i = 0pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α) hs α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0k:α⊢ 0 = 0pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0hzero:∀ (k : α), hJ.eigenvalues i * u k = 0⊢ hJ.eigenvalues i = 0pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)]pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0hzero:∀ (k : α), hJ.eigenvalues i * u k = 0⊢ hJ.eigenvalues i = 0pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0hzero:∀ (k : α), hJ.eigenvalues i * u k = 0⊢ hJ.eigenvalues i = 0pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
by_contra hne pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0hzero:∀ (k : α), hJ.eigenvalues i * u k = 0hne:¬hJ.eigenvalues i = 0⊢ Falsepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
have hu : u = 0 := by α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α) pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0hzero:∀ (k : α), hJ.eigenvalues i * u k = 0hne:¬hJ.eigenvalues i = 0hu:u = 0⊢ Falsepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
ext k α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0hzero:∀ (k : α), hJ.eigenvalues i * u k = 0hne:¬hJ.eigenvalues i = 0k:α⊢ u k = 0 kpos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0hzero:∀ (k : α), hJ.eigenvalues i * u k = 0hne:¬hJ.eigenvalues i = 0hu:u = 0⊢ Falsepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
exact (mul_eq_zero.mp (hzero k)).resolve_left hnepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0hzero:∀ (k : α), hJ.eigenvalues i * u k = 0hne:¬hJ.eigenvalues i = 0hu:u = 0⊢ Falsepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0hzero:∀ (k : α), hJ.eigenvalues i * u k = 0hne:¬hJ.eigenvalues i = 0hu:u = 0⊢ Falsepos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
exact hJ.eigenvectorBasis.orthonormal.ne_zero i (by α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0hzero:∀ (k : α), hJ.eigenvalues i * u k = 0hne:¬hJ.eigenvalues i = 0hu:u = 0⊢ hJ.eigenvectorBasis i = 0pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α) ext k α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:s = 0hzero:∀ (k : α), hJ.eigenvalues i * u k = 0hne:¬hJ.eigenvalues i = 0hu:u = 0k:α⊢ (hJ.eigenvectorBasis i).ofLp k = WithLp.ofLp 0 kpos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α); exact congr_fun hu k All goals completed! 🐙pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α))
· neg α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:¬s = 0⊢ hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α) right neg α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}i:αu:α → ℝ := (hJ.eigenvectorBasis i).ofLps:ℝ := ∑ m, u mhmul:∀ (k : α), hJ.eigenvalues i * u k = shsum:hJ.eigenvalues i * s = ↑(Fintype.card α) * shs:¬s = 0⊢ hJ.eigenvalues i = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
exact mul_right_cancel₀ hs hsumpos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue = ↑(Fintype.card α)
apply le_antisymm pos.a α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue ≤ ↑(Fintype.card α)a α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ ↑(Fintype.card α) ≤ hJ.maxEigenvalue
· pos.a α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.maxEigenvalue ≤ ↑(Fintype.card α) apply ciSup_le pos.a α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ ∀ (x : α), hJ.eigenvalues x ≤ ↑(Fintype.card α)
intro i pos.a α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)i:α⊢ hJ.eigenvalues i ≤ ↑(Fintype.card α)
rcases heig_dic i with h0 | hcard pos.a.inl α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)i:αh0:hJ.eigenvalues i = 0⊢ hJ.eigenvalues i ≤ ↑(Fintype.card α)pos.a.inr α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)i:αhcard:hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.eigenvalues i ≤ ↑(Fintype.card α)
· pos.a.inl α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)i:αh0:hJ.eigenvalues i = 0⊢ hJ.eigenvalues i ≤ ↑(Fintype.card α) linarith [show (0 : ℝ) ≤ Fintype.card α by α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α) positivity All goals completed! 🐙]
· pos.a.inr α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)i:αhcard:hJ.eigenvalues i = ↑(Fintype.card α)⊢ hJ.eigenvalues i ≤ ↑(Fintype.card α) linarith All goals completed! 🐙
· a α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)⊢ ↑(Fintype.card α) ≤ hJ.maxEigenvalue have htrace : (Fintype.card α : ℝ) = ∑ i, hJ.eigenvalues i := by α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α) a α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues i⊢ ↑(Fintype.card α) ≤ hJ.maxEigenvalue
have h := hJ.trace_eq_sum_eigenvalues α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)h:J.trace = ∑ i, ↑(hJ.eigenvalues i)⊢ ↑(Fintype.card α) = ∑ i, hJ.eigenvalues ia α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues i⊢ ↑(Fintype.card α) ≤ hJ.maxEigenvalue
simp only [J, Matrix.trace, Matrix.diag_apply, Matrix.of_apply, Finset.sum_const,
Finset.card_univ, nsmul_eq_mul, mul_one, RCLike.ofReal_real_eq_id, id_eq] at h α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)h:↑(Fintype.card α) = ∑ x, hJ.eigenvalues x⊢ ↑(Fintype.card α) = ∑ i, hJ.eigenvalues ia α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues i⊢ ↑(Fintype.card α) ≤ hJ.maxEigenvalue
exact ha α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues i⊢ ↑(Fintype.card α) ≤ hJ.maxEigenvaluea α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues i⊢ ↑(Fintype.card α) ≤ hJ.maxEigenvalue
obtain ⟨i, hi⟩ : ∃ i : α, hJ.eigenvalues i = Fintype.card α := by α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues i⊢ ∃ i, hJ.eigenvalues i = ↑(Fintype.card α) a α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues ii:αhi:hJ.eigenvalues i = ↑(Fintype.card α)⊢ ↑(Fintype.card α) ≤ hJ.maxEigenvalue
by_contra! hall α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues ihall:∀ (i : α), hJ.eigenvalues i ≠ ↑(Fintype.card α)⊢ Falsea α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues ii:αhi:hJ.eigenvalues i = ↑(Fintype.card α)⊢ ↑(Fintype.card α) ≤ hJ.maxEigenvalue
have hall0 : ∀ i, hJ.eigenvalues i = 0 := fun i =>
(heig_dic i).resolve_right (hall i) α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues ihall:∀ (i : α), hJ.eigenvalues i ≠ ↑(Fintype.card α)hall0:∀ (i : α), hJ.eigenvalues i = 0⊢ Falsea α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues ii:αhi:hJ.eigenvalues i = ↑(Fintype.card α)⊢ ↑(Fintype.card α) ≤ hJ.maxEigenvalue
have hpos : (0 : ℝ) < Fintype.card α := Nat.cast_pos.mpr Fintype.card_pos α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues ihall:∀ (i : α), hJ.eigenvalues i ≠ ↑(Fintype.card α)hall0:∀ (i : α), hJ.eigenvalues i = 0hpos:0 < ↑(Fintype.card α)⊢ Falsea α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues ii:αhi:hJ.eigenvalues i = ↑(Fintype.card α)⊢ ↑(Fintype.card α) ≤ hJ.maxEigenvalue
simp only [hall0, Finset.sum_const_zero] at htrace α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)hall:∀ (i : α), hJ.eigenvalues i ≠ ↑(Fintype.card α)hall0:∀ (i : α), hJ.eigenvalues i = 0hpos:0 < ↑(Fintype.card α)htrace:↑(Fintype.card α) = 0⊢ Falsea α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues ii:αhi:hJ.eigenvalues i = ↑(Fintype.card α)⊢ ↑(Fintype.card α) ≤ hJ.maxEigenvalue
linaritha α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues ii:αhi:hJ.eigenvalues i = ↑(Fintype.card α)⊢ ↑(Fintype.card α) ≤ hJ.maxEigenvaluea α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:Nonempty αJ:Matrix α α ℝ := Matrix.of fun x x_1 ↦ 1hJ:J.IsHermitianhset:{x |
∃ A,
∃ (hA : A.IsHermitian) (_ : ∀ (i : α), A i i = 1) (_ : ∀ (i j : α), ¬⊥.Adj i j → A i j = 1),
hA.maxEigenvalue = x} =
{hJ.maxEigenvalue}heig_dic:∀ (i : α), hJ.eigenvalues i = 0 ∨ hJ.eigenvalues i = ↑(Fintype.card α)htrace:↑(Fintype.card α) = ∑ i, hJ.eigenvalues ii:αhi:hJ.eigenvalues i = ↑(Fintype.card α)⊢ ↑(Fintype.card α) ≤ hJ.maxEigenvalue
exact hi ▸ le_ciSup (Finite.bddAbove_range _) i All goals completed! 🐙
· neg α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:¬Nonempty α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α) rw [not_nonempty_iff neg α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:IsEmpty α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α) neg α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:IsEmpty α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)] at hαneg α:Type u_1inst✝¹:Fintype αinst✝:DecidableEq αhα:IsEmpty α⊢ ⊥.lovaszThetaFunction = ↑(Fintype.card α)
simp [lovaszThetaFunction_isEmpty] All goals completed! 🐙The Lovász theta function of any graph is at most its number of vertices.
theorem lovaszThetaFunction_le_card (G : SimpleGraph α) [DecidableRel G.Adj] :
lovaszThetaFunction G ≤ Fintype.card α :=
(lovaszThetaFunction_anti bot_le).trans_eq lovaszThetaFunction_botend SimpleGraph