Theorem: DedekindDomain.ProdAdicCompletions.IsFiniteAdele.one
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 1
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 | 1 x ∉ adicCompletionIntegers K x}.Finite

tactic: have h_empty :
  {v : HeightOneSpectrum R | ¬(1 : 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]
  exact le_of_eq Valued.v.map_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 | 1 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 | 1 ∉ adicCompletionIntegers K v} = ∅
⊢ {x | 1 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 | 1 ∉ adicCompletionIntegers K v} = ∅
⊢ {x | 1 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 | 1 ∉ 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 | 1 ∉ 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 | 1 ∉ 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 | 1 ∉ 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 | 1 ∉ 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 | 1 ∉ 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 | 1 ∉ 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 : 1 ∉ 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 : 1 ∉ 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 : 1 ∉ adicCompletionIntegers K v
⊢ 1 ∈ 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 : 1 ∉ adicCompletionIntegers K v
⊢ 1 ∈ 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 : 1 ∉ adicCompletionIntegers K v
⊢ Valued.v 1 ≤ 1

tactic: exact le_of_eq Valued.v.map_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 : 1 ∉ adicCompletionIntegers K v
⊢ Valued.v 1 ≤ 1
state_after: no goals