Theorem: Valuation.supp_quot
File: Mathlib/RingTheory/Valuation/Quotient.lean

tactic: apply le_antisymm
state_before: R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
J : Ideal R
hJ : J ≤ v.supp
⊢ (v.onQuot hJ).supp = Ideal.map (Ideal.Quotient.mk J) v.supp
state_after: case a
R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
J : Ideal R
hJ : J ≤ v.supp
⊢ (v.onQuot hJ).supp ≤ Ideal.map (Ideal.Quotient.mk J) v.supp

case a
R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
J : Ideal R
hJ : J ≤ v.supp
⊢ Ideal.map (Ideal.Quotient.mk J) v.supp ≤ (v.onQuot hJ).supp

tactic: rintro ⟨x⟩ hx
state_before: case a
R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
J : Ideal R
hJ : J ≤ v.supp
⊢ (v.onQuot hJ).supp ≤ Ideal.map (Ideal.Quotient.mk J) v.supp
state_after: case a.mk
R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
J : Ideal R
hJ : J ≤ v.supp
x✝ : R ⧸ J
x : R
hx : Quot.mk Setoid.r x ∈ (v.onQuot hJ).supp
⊢ Quot.mk Setoid.r x ∈ Ideal.map (Ideal.Quotient.mk J) v.supp

tactic: apply Ideal.subset_span
state_before: case a.mk
R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
J : Ideal R
hJ : J ≤ v.supp
x✝ : R ⧸ J
x : R
hx : Quot.mk Setoid.r x ∈ (v.onQuot hJ).supp
⊢ Quot.mk Setoid.r x ∈ Ideal.map (Ideal.Quotient.mk J) v.supp
state_after: case a.mk.a
R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
J : Ideal R
hJ : J ≤ v.supp
x✝ : R ⧸ J
x : R
hx : Quot.mk Setoid.r x ∈ (v.onQuot hJ).supp
⊢ Quot.mk Setoid.r x ∈ ⇑(Ideal.Quotient.mk J) '' ↑v.supp

tactic: exact ⟨x, hx, rfl⟩
state_before: case a.mk.a
R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
J : Ideal R
hJ : J ≤ v.supp
x✝ : R ⧸ J
x : R
hx : Quot.mk Setoid.r x ∈ (v.onQuot hJ).supp
⊢ Quot.mk Setoid.r x ∈ ⇑(Ideal.Quotient.mk J) '' ↑v.supp
state_after: no goals

tactic: rw [Ideal.map_le_iff_le_comap]
state_before: case a
R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
J : Ideal R
hJ : J ≤ v.supp
⊢ Ideal.map (Ideal.Quotient.mk J) v.supp ≤ (v.onQuot hJ).supp
state_after: case a
R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
J : Ideal R
hJ : J ≤ v.supp
⊢ v.supp ≤ Ideal.comap (Ideal.Quotient.mk J) (v.onQuot hJ).supp

tactic: intro x hx
state_before: case a
R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
J : Ideal R
hJ : J ≤ v.supp
⊢ v.supp ≤ Ideal.comap (Ideal.Quotient.mk J) (v.onQuot hJ).supp
state_after: case a
R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
J : Ideal R
hJ : J ≤ v.supp
x : R
hx : x ∈ v.supp
⊢ x ∈ Ideal.comap (Ideal.Quotient.mk J) (v.onQuot hJ).supp

tactic: exact hx
state_before: case a
R : Type u_1
Γ₀ : Type u_2
inst✝¹ : CommRing R
inst✝ : LinearOrderedCommMonoidWithZero Γ₀
v : Valuation R Γ₀
J : Ideal R
hJ : J ≤ v.supp
x : R
hx : x ∈ v.supp
⊢ x ∈ Ideal.comap (Ideal.Quotient.mk J) (v.onQuot hJ).supp
state_after: no goals