Theorem: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.asiegel_ne_0
File: Mathlib/NumberTheory/NumberField/House.lean

Proof steps:
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
⊢ NumberField.house.asiegel K a ≠ 0
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
⊢ (fun k l => ((NumberField.house.newBasis K).repr (a k.1 l.1 * (NumberField.house.newBasis K) l.2)) k.2) ≠ 0
tactic: simp (config := { unfoldPartialApp := true }) only [asiegel, a']
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
⊢ (fun k l => ((NumberField.house.newBasis K).repr (a k.1 l.1 * (NumberField.house.newBasis K) l.2)) k.2) ≠ 0
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
⊢ ¬(fun k l => ((NumberField.house.newBasis K).repr (a k.1 l.1 * (NumberField.house.newBasis K) l.2)) k.2) = 0
tactic: simp only [ne_eq]
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
⊢ ¬(fun k l => ((NumberField.house.newBasis K).repr (a k.1 l.1 * (NumberField.house.newBasis K) l.2)) k.2) = 0
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
⊢ ¬∀ (a_1 : α × (K →+* ℂ)),
      (fun l => ((NumberField.house.newBasis K).repr (a a_1.1 l.1 * (NumberField.house.newBasis K) l.2)) a_1.2) = 0 a_1
tactic: rw [Function.funext_iff]
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
⊢ ¬∀ (a_1 : α × (K →+* ℂ)),
      (fun l => ((NumberField.house.newBasis K).repr (a a_1.1 l.1 * (NumberField.house.newBasis K) l.2)) a_1.2) = 0 a_1
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
hs :
  ∀ (a_1 : α × (K →+* ℂ)),
    (fun l => ((NumberField.house.newBasis K).repr (a a_1.1 l.1 * (NumberField.house.newBasis K) l.2)) a_1.2) = 0 a_1
⊢ False
tactic: intros hs
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
hs :
  ∀ (a_1 : α × (K →+* ℂ)),
    (fun l => ((NumberField.house.newBasis K).repr (a a_1.1 l.1 * (NumberField.house.newBasis K) l.2)) a_1.2) = 0 a_1
⊢ False
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
hs :
  ∀ (a_1 : α) (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a a_1 l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (a_1, b)
⊢ False
tactic: simp only [Prod.forall] at hs
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
hs :
  ∀ (a_1 : α) (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a a_1 l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (a_1, b)
⊢ False
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
hs :
  ∀ (a_1 : α) (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a a_1 l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (a_1, b)
⊢ a = 0
tactic: apply ha
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
hs :
  ∀ (a_1 : α) (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a a_1 l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (a_1, b)
⊢ a = 0
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
hs :
  ∀ (a_1 : α) (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a a_1 l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (a_1, b)
⊢ ∀ (i : α) (j : β), a i j = 0 i j
tactic: rw [← Matrix.ext_iff]
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
hs :
  ∀ (a_1 : α) (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a a_1 l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (a_1, b)
⊢ ∀ (i : α) (j : β), a i j = 0 i j
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
hs :
  ∀ (a_1 : α) (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a a_1 l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (a_1, b)
k' : α
l : β
⊢ a k' l = 0 k' l
tactic: intros k' l
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
hs :
  ∀ (a_1 : α) (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a a_1 l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (a_1, b)
k' : α
l : β
⊢ a k' l = 0 k' l
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
k' : α
l : β
hs :
  ∀ (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a k' l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (k', b)
⊢ a k' l = 0 k' l
tactic: specialize hs k'
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
k' : α
l : β
hs :
  ∀ (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a k' l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (k', b)
⊢ a k' l = 0 k' l
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
k' : α
l : β
hs :
  ∀ (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a k' l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (k', b)
b : K →+* ℂ
⊢ a k' l = 0 k' l
tactic: let ⟨b⟩ := Fintype.card_pos_iff.1 (Fintype.card_pos (α := (K →+* ℂ)))
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
k' : α
l : β
hs :
  ∀ (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a k' l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (k', b)
b : K →+* ℂ
⊢ a k' l = 0 k' l
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
k' : α
l : β
hs :
  ∀ (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a k' l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (k', b)
b : K →+* ℂ
this : a k' l * (NumberField.house.newBasis K) b = 0
⊢ a k' l = 0 k' l
tactic: have := ((newBasis K).repr.map_eq_zero_iff (x := (a k' l * (newBasis K) b))).1 <| by
    ext b'
    specialize hs b'
    rw [Function.funext_iff] at hs
    simp only [Prod.forall] at hs
    apply hs
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
k' : α
l : β
hs :
  ∀ (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a k' l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (k', b)
b : K →+* ℂ
this : a k' l * (NumberField.house.newBasis K) b = 0
⊢ a k' l = 0 k' l
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
k' : α
l : β
hs :
  ∀ (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a k' l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (k', b)
b : K →+* ℂ
this : a k' l = 0 ∨ (NumberField.house.newBasis K) b = 0
⊢ a k' l = 0 k' l
tactic: simp only [mul_eq_zero] at this
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : DecidableEq (K →+* ℂ)
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
inst✝ : Fintype β
a : Matrix α β (𝓞 K)
ha : a ≠ 0
k' : α
l : β
hs :
  ∀ (b : K →+* ℂ),
    (fun l => ((NumberField.house.newBasis K).repr (a k' l.1 * (NumberField.house.newBasis K) l.2)) b) = 0 (k', b)
b : K →+* ℂ
this : a k' l = 0 ∨ (NumberField.house.newBasis K) b = 0
⊢ a k' l = 0 k' l
state_after: no goals
tactic: exact this.resolve_right (Basis.ne_zero (newBasis K) b)