Theorem: DedekindDomain.ProdAdicCompletions.IsFiniteAdele.zero
File: Mathlib/RingTheory/DedekindDomain/FiniteAdeleRing.lean

tactic: rw [IsFiniteAdele, Filter.eventually_cofinite]
state_before: R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v : HeightOneSpectrum R
⊢ IsFiniteAdele 0
state_after: R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v : HeightOneSpectrum R
⊢ {x | 0 x ∉ adicCompletionIntegers K x}.Finite

tactic: have h_empty :
  {v : HeightOneSpectrum R | ¬(0 : v.adicCompletion K) ∈ v.adicCompletionIntegers K} = ∅ := by
  ext v; rw [mem_empty_iff_false, iff_false_iff]; intro hv
  rw [mem_setOf] at hv; apply hv; rw [mem_adicCompletionIntegers]
  have h_zero : (Valued.v (0 : v.adicCompletion K) : WithZero (Multiplicative ℤ)) = 0 :=
    Valued.v.map_zero'
  rw [h_zero]; exact zero_le_one' _
state_before: R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v : HeightOneSpectrum R
⊢ {x | 0 x ∉ adicCompletionIntegers K x}.Finite
state_after: R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v : HeightOneSpectrum R
h_empty : {v | 0 ∉ adicCompletionIntegers K v} = ∅
⊢ {x | 0 x ∉ adicCompletionIntegers K x}.Finite

tactic: convert finite_empty
state_before: R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v : HeightOneSpectrum R
h_empty : {v | 0 ∉ adicCompletionIntegers K v} = ∅
⊢ {x | 0 x ∉ adicCompletionIntegers K x}.Finite
state_after: no goals

tactic: ext v
state_before: R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v : HeightOneSpectrum R
⊢ {v | 0 ∉ adicCompletionIntegers K v} = ∅
state_after: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
⊢ v ∈ {v | 0 ∉ adicCompletionIntegers K v} ↔ v ∈ ∅

tactic: rw [mem_empty_iff_false, iff_false_iff]
state_before: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
⊢ v ∈ {v | 0 ∉ adicCompletionIntegers K v} ↔ v ∈ ∅
state_after: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
⊢ v ∉ {v | 0 ∉ adicCompletionIntegers K v}

tactic: intro hv
state_before: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
⊢ v ∉ {v | 0 ∉ adicCompletionIntegers K v}
state_after: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
hv : v ∈ {v | 0 ∉ adicCompletionIntegers K v}
⊢ False

tactic: rw [mem_setOf] at hv
state_before: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
hv : v ∈ {v | 0 ∉ adicCompletionIntegers K v}
⊢ False
state_after: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
hv : 0 ∉ adicCompletionIntegers K v
⊢ False

tactic: apply hv
state_before: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
hv : 0 ∉ adicCompletionIntegers K v
⊢ False
state_after: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
hv : 0 ∉ adicCompletionIntegers K v
⊢ 0 ∈ adicCompletionIntegers K v

tactic: rw [mem_adicCompletionIntegers]
state_before: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
hv : 0 ∉ adicCompletionIntegers K v
⊢ 0 ∈ adicCompletionIntegers K v
state_after: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
hv : 0 ∉ adicCompletionIntegers K v
⊢ Valued.v 0 ≤ 1

tactic: have h_zero : (Valued.v (0 : v.adicCompletion K) : WithZero (Multiplicative ℤ)) = 0 :=
  Valued.v.map_zero'
state_before: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
hv : 0 ∉ adicCompletionIntegers K v
⊢ Valued.v 0 ≤ 1
state_after: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
hv : 0 ∉ adicCompletionIntegers K v
h_zero : Valued.v 0 = 0
⊢ Valued.v 0 ≤ 1

tactic: rw [h_zero]
state_before: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
hv : 0 ∉ adicCompletionIntegers K v
h_zero : Valued.v 0 = 0
⊢ Valued.v 0 ≤ 1
state_after: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
hv : 0 ∉ adicCompletionIntegers K v
h_zero : Valued.v 0 = 0
⊢ 0 ≤ 1

tactic: exact zero_le_one' _
state_before: case h
R : Type u_1
K : Type u_2
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v✝ v : HeightOneSpectrum R
hv : 0 ∉ adicCompletionIntegers K v
h_zero : Valued.v 0 = 0
⊢ 0 ≤ 1
state_after: no goals