Theorem: ValuationRing.tFAE
File: Mathlib/RingTheory/Valuation/ValuationRing.lean

tactic: tfae_have 1 ↔ 2
state_before: R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
⊢ [ValuationRing R, ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹,
      IsTotal R fun x x_1 => x ∣ x_1, IsTotal (Ideal R) fun x x_1 => x ≤ x_1, LocalRing R ∧ IsBezout R].TFAE
state_after: case tfae_1_iff_2
R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
⊢ ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹

R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
tfae_1_iff_2 : ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
⊢ [ValuationRing R, ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹,
      IsTotal R fun x x_1 => x ∣ x_1, IsTotal (Ideal R) fun x x_1 => x ≤ x_1, LocalRing R ∧ IsBezout R].TFAE

tactic: tfae_have 1 ↔ 3
state_before: R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
tfae_1_iff_2 : ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
⊢ [ValuationRing R, ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹,
      IsTotal R fun x x_1 => x ∣ x_1, IsTotal (Ideal R) fun x x_1 => x ≤ x_1, LocalRing R ∧ IsBezout R].TFAE
state_after: case tfae_1_iff_3
R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
tfae_1_iff_2 : ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
⊢ ValuationRing R ↔ IsTotal R fun x x_1 => x ∣ x_1

R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
tfae_1_iff_2 : ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
tfae_1_iff_3 : ValuationRing R ↔ IsTotal R fun x x_1 => x ∣ x_1
⊢ [ValuationRing R, ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹,
      IsTotal R fun x x_1 => x ∣ x_1, IsTotal (Ideal R) fun x x_1 => x ≤ x_1, LocalRing R ∧ IsBezout R].TFAE

tactic: tfae_have 1 ↔ 4
state_before: R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
tfae_1_iff_2 : ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
tfae_1_iff_3 : ValuationRing R ↔ IsTotal R fun x x_1 => x ∣ x_1
⊢ [ValuationRing R, ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹,
      IsTotal R fun x x_1 => x ∣ x_1, IsTotal (Ideal R) fun x x_1 => x ≤ x_1, LocalRing R ∧ IsBezout R].TFAE
state_after: case tfae_1_iff_4
R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
tfae_1_iff_2 : ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
tfae_1_iff_3 : ValuationRing R ↔ IsTotal R fun x x_1 => x ∣ x_1
⊢ ValuationRing R ↔ IsTotal (Ideal R) fun x x_1 => x ≤ x_1

R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
tfae_1_iff_2 : ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
tfae_1_iff_3 : ValuationRing R ↔ IsTotal R fun x x_1 => x ∣ x_1
tfae_1_iff_4 : ValuationRing R ↔ IsTotal (Ideal R) fun x x_1 => x ≤ x_1
⊢ [ValuationRing R, ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹,
      IsTotal R fun x x_1 => x ∣ x_1, IsTotal (Ideal R) fun x x_1 => x ≤ x_1, LocalRing R ∧ IsBezout R].TFAE

tactic: tfae_have 1 ↔ 5
state_before: R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
tfae_1_iff_2 : ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
tfae_1_iff_3 : ValuationRing R ↔ IsTotal R fun x x_1 => x ∣ x_1
tfae_1_iff_4 : ValuationRing R ↔ IsTotal (Ideal R) fun x x_1 => x ≤ x_1
⊢ [ValuationRing R, ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹,
      IsTotal R fun x x_1 => x ∣ x_1, IsTotal (Ideal R) fun x x_1 => x ≤ x_1, LocalRing R ∧ IsBezout R].TFAE
state_after: case tfae_1_iff_5
R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
tfae_1_iff_2 : ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
tfae_1_iff_3 : ValuationRing R ↔ IsTotal R fun x x_1 => x ∣ x_1
tfae_1_iff_4 : ValuationRing R ↔ IsTotal (Ideal R) fun x x_1 => x ≤ x_1
⊢ ValuationRing R ↔ LocalRing R ∧ IsBezout R

R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
tfae_1_iff_2 : ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
tfae_1_iff_3 : ValuationRing R ↔ IsTotal R fun x x_1 => x ∣ x_1
tfae_1_iff_4 : ValuationRing R ↔ IsTotal (Ideal R) fun x x_1 => x ≤ x_1
tfae_1_iff_5 : ValuationRing R ↔ LocalRing R ∧ IsBezout R
⊢ [ValuationRing R, ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹,
      IsTotal R fun x x_1 => x ∣ x_1, IsTotal (Ideal R) fun x x_1 => x ≤ x_1, LocalRing R ∧ IsBezout R].TFAE

tactic: tfae_finish
state_before: R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
tfae_1_iff_2 : ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
tfae_1_iff_3 : ValuationRing R ↔ IsTotal R fun x x_1 => x ∣ x_1
tfae_1_iff_4 : ValuationRing R ↔ IsTotal (Ideal R) fun x x_1 => x ≤ x_1
tfae_1_iff_5 : ValuationRing R ↔ LocalRing R ∧ IsBezout R
⊢ [ValuationRing R, ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹,
      IsTotal R fun x x_1 => x ∣ x_1, IsTotal (Ideal R) fun x x_1 => x ≤ x_1, LocalRing R ∧ IsBezout R].TFAE
state_after: no goals

tactic: exact iff_isInteger_or_isInteger R _
state_before: case tfae_1_iff_2
R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
⊢ ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
state_after: no goals

tactic: exact iff_dvd_total
state_before: case tfae_1_iff_3
R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
tfae_1_iff_2 : ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
⊢ ValuationRing R ↔ IsTotal R fun x x_1 => x ∣ x_1
state_after: no goals

tactic: exact iff_ideal_total
state_before: case tfae_1_iff_4
R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
tfae_1_iff_2 : ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
tfae_1_iff_3 : ValuationRing R ↔ IsTotal R fun x x_1 => x ∣ x_1
⊢ ValuationRing R ↔ IsTotal (Ideal R) fun x x_1 => x ≤ x_1
state_after: no goals

tactic: exact iff_local_bezout_domain
state_before: case tfae_1_iff_5
R✝ : Type u_1
inst✝⁶ : CommRing R✝
inst✝⁵ : IsDomain R✝
K : Type u_2
inst✝⁴ : Field K
inst✝³ : Algebra R✝ K
inst✝² : IsFractionRing R✝ K
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
tfae_1_iff_2 : ValuationRing R ↔ ∀ (x : FractionRing R), IsLocalization.IsInteger R x ∨ IsLocalization.IsInteger R x⁻¹
tfae_1_iff_3 : ValuationRing R ↔ IsTotal R fun x x_1 => x ∣ x_1
tfae_1_iff_4 : ValuationRing R ↔ IsTotal (Ideal R) fun x x_1 => x ≤ x_1
⊢ ValuationRing R ↔ LocalRing R ∧ IsBezout R
state_after: no goals