Theorem: Int.Matrix.one_le_norm_A_of_ne_zero
File: Mathlib/NumberTheory/SiegelsLemma.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
⊢ 1 ≤ ‖A‖
state_after: α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
h : ‖A‖ < 1
⊢ False
tactic: by_contra! h
state_before: α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
h : ‖A‖ < 1
⊢ False
state_after: α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
h : ‖A‖ < 1
⊢ A = 0
tactic: apply hA
state_before: α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
h : ‖A‖ < 1
⊢ A = 0
state_after: case a
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
h : ‖A‖ < 1
i : α
j : β
⊢ A i j = 0 i j
tactic: ext i j
state_before: case a
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
h : ‖A‖ < 1
i : α
j : β
⊢ A i j = 0 i j
state_after: case a
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
h : ‖A‖ < 1
i : α
j : β
⊢ A i j = 0
tactic: simp only [zero_apply]
state_before: case a
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
h : ‖A‖ < 1
i : α
j : β
⊢ A i j = 0
state_after: case a
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
h : ∀ (i : α) (j : β), ‖A i j‖ < 1
i : α
j : β
⊢ A i j = 0
tactic: rw [norm_lt_iff Real.zero_lt_one] at h
state_before: case a
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
h : ∀ (i : α) (j : β), ‖A i j‖ < 1
i : α
j : β
⊢ A i j = 0
state_after: case a
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
i : α
j : β
h : ‖A i j‖ < 1
⊢ A i j = 0
tactic: specialize h i j
state_before: case a
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
i : α
j : β
h : ‖A i j‖ < 1
⊢ A i j = 0
state_after: case a
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
i : α
j : β
h : |↑(A i j)| < 1
⊢ A i j = 0
tactic: rw [Int.norm_eq_abs] at h
state_before: case a
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
i : α
j : β
h : |↑(A i j)| < 1
⊢ A i j = 0
state_after: case a
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
i : α
j : β
h : |A i j| < 1
⊢ A i j = 0
tactic: norm_cast at h
state_before: case a
α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
hA : A ≠ 0
i : α
j : β
h : |A i j| < 1
⊢ A i j = 0
state_after: no goals
tactic: exact Int.abs_lt_one_iff.1 h