File: Mathlib/RingTheory/Ideal/IsPrincipal.lean

full_name: Ideal.isPrincipalSubmonoid
code: /-- The principal ideals of `R` form a submonoid of `Ideal R`. -/
def isPrincipalSubmonoid : Submonoid (Ideal R) 
goal: Submonoid (Ideal R)

full_name: Ideal.mem_isPrincipalSubmonoid_iff
code: theorem mem_isPrincipalSubmonoid_iff {I : Ideal R} :
    I ∈ isPrincipalSubmonoid R ↔ IsPrincipal I 
goal: I ∈ Ideal.isPrincipalSubmonoid R ↔ Submodule.IsPrincipal I

full_name: Ideal.span_singleton_mem_isPrincipalSubmonoid
code: theorem span_singleton_mem_isPrincipalSubmonoid (a : R) :
    span {a} ∈ isPrincipalSubmonoid R 
goal: Ideal.span {a} ∈ Ideal.isPrincipalSubmonoid R

full_name: Ideal.isPrincipalNonZeroDivisorsSubmonoid
code: /-- The non-zero-divisors principal ideals of `R` form a submonoid of `(Ideal R)⁰`. -/
def isPrincipalNonZeroDivisorsSubmonoid : Submonoid (Ideal R)⁰ 
goal: Submonoid ↥(nonZeroDivisors (Ideal R))

full_name: Ideal.associatesEquivIsPrincipal
code: /-- The equivalence between `Associates R` and the principal ideals of `R` defined by sending the
class of `x` to the principal ideal generated by `x`. -/
noncomputable def associatesEquivIsPrincipal :
    Associates R ≃ {I : Ideal R // IsPrincipal I} 
goal: Associates R ≃ { I // Submodule.IsPrincipal I }

full_name: Ideal.associatesEquivIsPrincipal_apply
code: @[simp]
theorem associatesEquivIsPrincipal_apply (x : R) :
    associatesEquivIsPrincipal R (.mk x) = span {x} 
goal: ↑((Ideal.associatesEquivIsPrincipal R) (Associates.mk x)) = Ideal.span {x}

full_name: Ideal.associatesEquivIsPrincipal_symm_apply
code: @[simp]
theorem associatesEquivIsPrincipal_symm_apply {I : Ideal R} (hI : IsPrincipal I) :
    (associatesEquivIsPrincipal R).symm ⟨I, hI⟩ = .mk hI.generator 
goal: (Ideal.associatesEquivIsPrincipal R).symm ⟨I, hI⟩ = Associates.mk (Submodule.IsPrincipal.generator I)

full_name: Ideal.associatesEquivIsPrincipal_mul
code: theorem associatesEquivIsPrincipal_mul (x y : Associates R) :
    (associatesEquivIsPrincipal R (x * y) : Ideal R) =
      (associatesEquivIsPrincipal R x) * (associatesEquivIsPrincipal R y) 
goal: ↑((Ideal.associatesEquivIsPrincipal R) (x * y)) =
  ↑((Ideal.associatesEquivIsPrincipal R) x) * ↑((Ideal.associatesEquivIsPrincipal R) y)

full_name: Ideal.associatesEquivIsPrincipal_map_zero
code: @[simp]
theorem associatesEquivIsPrincipal_map_zero :
    (associatesEquivIsPrincipal R 0 : Ideal R) = 0 
goal: ↑((Ideal.associatesEquivIsPrincipal R) 0) = 0

full_name: Ideal.associatesEquivIsPrincipal_map_one
code: @[simp]
theorem associatesEquivIsPrincipal_map_one :
    (associatesEquivIsPrincipal R 1 : Ideal R) = 1 
goal: ↑((Ideal.associatesEquivIsPrincipal R) 1) = 1

full_name: Ideal.associatesMulEquivIsPrincipal
code: /-- The `MulEquiv` version of `Ideal.associatesEquivIsPrincipal`. -/
noncomputable def associatesMulEquivIsPrincipal :
    Associates R ≃* (isPrincipalSubmonoid R) 
goal: Associates R ≃* ↥(Ideal.isPrincipalSubmonoid R)

full_name: Ideal.associatesNonZeroDivisorsEquivIsPrincipal
code: /-- A version of `Ideal.associatesEquivIsPrincipal` for non-zero-divisors generators. -/
noncomputable def associatesNonZeroDivisorsEquivIsPrincipal :
    Associates R⁰ ≃ {I : (Ideal R)⁰ // IsPrincipal (I : Ideal R)} 
goal: Associates ↥(nonZeroDivisors R) ≃ { I // Submodule.IsPrincipal ↑I }

full_name: Ideal.associatesNonZeroDivisorsEquivIsPrincipal_apply
code: @[simp]
theorem associatesNonZeroDivisorsEquivIsPrincipal_apply (x : R⁰) :
    associatesNonZeroDivisorsEquivIsPrincipal R (.mk x) = Ideal.span {(x : R)} 
goal: ↑↑((Ideal.associatesNonZeroDivisorsEquivIsPrincipal R) (Associates.mk x)) = Ideal.span {↑x}

full_name: Ideal.associatesNonZeroDivisorsEquivIsPrincipal_coe
code: theorem associatesNonZeroDivisorsEquivIsPrincipal_coe (x : Associates R⁰) :
    (associatesNonZeroDivisorsEquivIsPrincipal R x : Ideal R) =
      (associatesEquivIsPrincipal R (associatesNonZeroDivisorsEquiv.symm x)) 
goal: ↑↑((Ideal.associatesNonZeroDivisorsEquivIsPrincipal R) x) =
  ↑((Ideal.associatesEquivIsPrincipal R) ↑(associatesNonZeroDivisorsEquiv.symm x))

full_name: Ideal.associatesNonZeroDivisorsEquivIsPrincipal_mul
code: theorem associatesNonZeroDivisorsEquivIsPrincipal_mul (x y : Associates R⁰) :
    (associatesNonZeroDivisorsEquivIsPrincipal R (x * y) : Ideal R) =
      (associatesNonZeroDivisorsEquivIsPrincipal R x) *
        (associatesNonZeroDivisorsEquivIsPrincipal R y) 
goal: ↑↑((Ideal.associatesNonZeroDivisorsEquivIsPrincipal R) (x * y)) =
  ↑↑((Ideal.associatesNonZeroDivisorsEquivIsPrincipal R) x) * ↑↑((Ideal.associatesNonZeroDivisorsEquivIsPrincipal R) y)

full_name: Ideal.associatesNonZeroDivisorsEquivIsPrincipal_map_one
code: @[simp]
theorem associatesNonZeroDivisorsEquivIsPrincipal_map_one :
    (associatesNonZeroDivisorsEquivIsPrincipal R 1 : Ideal R) = 1 
goal: ↑↑((Ideal.associatesNonZeroDivisorsEquivIsPrincipal R) 1) = 1

full_name: Ideal.associatesNonZeroDivisorsMulEquivIsPrincipal
code: /-- The `MulEquiv` version of `Ideal.associatesNonZeroDivisorsEquivIsPrincipal`. -/
noncomputable def associatesNonZeroDivisorsMulEquivIsPrincipal :
    Associates R⁰ ≃* (isPrincipalNonZeroDivisorsSubmonoid R) 
goal: Associates ↥(nonZeroDivisors R) ≃* ↥(Ideal.isPrincipalNonZeroDivisorsSubmonoid R)