Documentation

Mathlib.RingTheory.FractionalIdeal

Fractional ideals #

This file defines fractional ideals of an integral domain and proves basic facts about them.

Main definitions #

Let S be a submonoid of an integral domain R, P the localization of R at S, and f the natural ring hom from R to P.

Let K be the localization of R at R⁰ = R \ {0} (i.e. the field of fractions).

Main statements #

Implementation notes #

Fractional ideals are considered equal when they contain the same elements, independent of the denominator a : R such that a I ⊆ R. Thus, we define FractionalIdeal to be the subtype of the predicate IsFractional, instead of having FractionalIdeal be a structure of which a is a field.

Most definitions in this file specialize operations from submodules to fractional ideals, proving that the result of this operation is fractional if the input is fractional. Exceptions to this rule are defining (+) := (⊔) and ⊥ := 0, in order to re-use their respective proof terms. We can still use simp to show ↑I + ↑J = ↑(I + J) and ↑⊥ = ↑0.

Many results in fact do not need that P is a localization, only that P is an R-algebra. We omit the IsLocalization parameter whenever this is practical. Similarly, we don't assume that the localization is a field until we need it to define ideal quotients. When this assumption is needed, we replace S with R⁰, making the localization a field.

References #

Tags #

fractional ideal, fractional ideals, invertible ideal

def IsFractional {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] (I : Submodule R P) :

A submodule I is a fractional ideal if a I ⊆ R for some a ≠ 0.

Equations
Instances For
    def FractionalIdeal {R : Type u_1} [CommRing R] (S : Submonoid R) (P : Type u_2) [CommRing P] [Algebra R P] :
    Type u_2

    The fractional ideals of a domain R are ideals of R divided by some a ∈ R.

    More precisely, let P be a localization of R at some submonoid S, then a fractional ideal I ⊆ P is an R-submodule of P, such that there is a nonzero a : R with a I ⊆ R.

    Equations
    Instances For
      def FractionalIdeal.coeToSubmodule {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) :

      Map a fractional ideal I to a submodule by forgetting that ∃ a, a I ⊆ R.

      This implements the coercion FractionalIdeal S P → Submodule R P.

      Equations
      • I = I
      Instances For

        Map a fractional ideal I to a submodule by forgetting that ∃ a, a I ⊆ R.

        This coercion is typically called coeToSubmodule in lemma names (or coe when the coercion is clear from the context), not to be confused with IsLocalization.coeSubmodule : Ideal R → Submodule R P (which we use to define coe : Ideal R → FractionalIdeal S P).

        Equations
        • One or more equations did not get rendered due to their size.
        theorem FractionalIdeal.isFractional {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) :
        Equations
        • FractionalIdeal.instSetLikeFractionalIdeal = { coe := fun I => I, coe_injective' := (_ : Function.Injective (SetLike.coe fun I => I)) }
        @[simp]
        theorem FractionalIdeal.mem_coe {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} {x : P} :
        x I x I
        theorem FractionalIdeal.ext {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} {J : FractionalIdeal S P} :
        (∀ (x : P), x I x J) → I = J
        def FractionalIdeal.copy {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (p : FractionalIdeal S P) (s : Set P) (hs : s = p) :

        Copy of a FractionalIdeal with a new underlying set equal to the old one. Useful to fix definitional equalities.

        Equations
        Instances For
          @[simp]
          theorem FractionalIdeal.coe_copy {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (p : FractionalIdeal S P) (s : Set P) (hs : s = p) :
          ↑(FractionalIdeal.copy p s hs) = s
          theorem FractionalIdeal.coe_eq {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (p : FractionalIdeal S P) (s : Set P) (hs : s = p) :
          @[simp]
          theorem FractionalIdeal.val_eq_coe {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) :
          I = I
          @[simp]
          theorem FractionalIdeal.coe_mk {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : Submodule R P) (hI : IsFractional S I) :
          { val := I, property := hI } = I
          theorem FractionalIdeal.coeToSet_coeToSubmodule {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) :
          I = I

          Transfer instances from Submodule R P to FractionalIdeal S P.

          theorem FractionalIdeal.coeToSubmodule_injective {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] :
          Function.Injective fun I => I
          theorem FractionalIdeal.coeToSubmodule_inj {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} {J : FractionalIdeal S P} :
          I = J I = J
          theorem FractionalIdeal.isFractional_of_le_one {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : Submodule R P) (h : I 1) :
          theorem FractionalIdeal.isFractional_of_le {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : Submodule R P} {J : FractionalIdeal S P} (hIJ : I J) :
          def FractionalIdeal.coeIdeal {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : Ideal R) :

          Map an ideal I to a fractional ideal by forgetting I is integral.

          This is the function that implements the coercion Ideal R → FractionalIdeal S P.

          Equations
          Instances For

            Map an ideal I to a fractional ideal by forgetting I is integral.

            This is a bundled version of IsLocalization.coeSubmodule : Ideal R → Submodule R P, which is not to be confused with the coe : FractionalIdeal S P → Submodule R P, also called coeToSubmodule in theorem names.

            This map is available as a ring hom, called FractionalIdeal.coeIdealHom.

            Equations
            • FractionalIdeal.instCoeTCIdealToSemiringToCommSemiringFractionalIdeal = { coe := fun I => I }
            @[simp]
            theorem FractionalIdeal.coe_coeIdeal {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : Ideal R) :
            @[simp]
            theorem FractionalIdeal.mem_coeIdeal {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] {x : P} {I : Ideal R} :
            x I x', x' I ↑(algebraMap R P) x' = x
            theorem FractionalIdeal.mem_coeIdeal_of_mem {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] {x : R} {I : Ideal R} (hx : x I) :
            ↑(algebraMap R P) x I
            theorem FractionalIdeal.coeIdeal_le_coeIdeal' {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] [IsLocalization S P] (h : S nonZeroDivisors R) {I : Ideal R} {J : Ideal R} :
            I J I J
            @[simp]
            theorem FractionalIdeal.coeIdeal_le_coeIdeal {R : Type u_1} [CommRing R] (K : Type u_3) [CommRing K] [Algebra R K] [IsFractionRing R K] {I : Ideal R} {J : Ideal R} :
            I J I J
            @[simp]
            theorem FractionalIdeal.mem_zero_iff {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] {x : P} :
            x 0 x = 0
            @[simp]
            theorem FractionalIdeal.coe_zero {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] :
            0 =
            @[simp]
            theorem FractionalIdeal.coeIdeal_bot {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] :
            = 0
            @[simp]
            theorem FractionalIdeal.exists_mem_algebraMap_eq {R : Type u_1} [CommRing R] {S : Submonoid R} (P : Type u_2) [CommRing P] [Algebra R P] [loc : IsLocalization S P] {x : R} {I : Ideal R} (h : S nonZeroDivisors R) :
            (x', x' I ↑(algebraMap R P) x' = ↑(algebraMap R P) x) x I
            theorem FractionalIdeal.coeIdeal_injective' {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] (h : S nonZeroDivisors R) :
            Function.Injective fun I => I
            theorem FractionalIdeal.coeIdeal_inj' {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] (h : S nonZeroDivisors R) {I : Ideal R} {J : Ideal R} :
            I = J I = J
            theorem FractionalIdeal.coeIdeal_eq_zero' {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] {I : Ideal R} (h : S nonZeroDivisors R) :
            I = 0 I =
            theorem FractionalIdeal.coeIdeal_ne_zero' {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] {I : Ideal R} (h : S nonZeroDivisors R) :
            I 0 I
            theorem FractionalIdeal.coeToSubmodule_eq_bot {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} :
            I = I = 0
            theorem FractionalIdeal.coeToSubmodule_ne_bot {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} :
            I I 0
            Equations
            • FractionalIdeal.instInhabitedFractionalIdeal = { default := 0 }
            instance FractionalIdeal.instOneFractionalIdeal {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] :
            Equations
            • FractionalIdeal.instOneFractionalIdeal = { one := }
            @[simp]
            theorem FractionalIdeal.coeIdeal_top {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] :
            = 1
            theorem FractionalIdeal.mem_one_iff {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] {x : P} :
            x 1 x', ↑(algebraMap R P) x' = x
            theorem FractionalIdeal.coe_mem_one {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] (x : R) :
            ↑(algebraMap R P) x 1
            theorem FractionalIdeal.one_mem_one {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] :
            1 1

            (1 : FractionalIdeal S P) is defined as the R-submodule f(R) ≤ P.

            However, this is not definitionally equal to 1 : Submodule R P, which is proved in the actual simp lemma coe_one.

            @[simp]
            theorem FractionalIdeal.coe_one {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] :
            1 = 1

            Lattice section #

            Defines the order on fractional ideals as inclusion of their underlying sets, and ports the lattice structure on submodules to fractional ideals.

            @[simp]
            theorem FractionalIdeal.coe_le_coe {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} {J : FractionalIdeal S P} :
            I J I J
            theorem FractionalIdeal.zero_le {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) :
            0 I
            instance FractionalIdeal.orderBot {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] :
            Equations
            @[simp]
            theorem FractionalIdeal.bot_eq_zero {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] :
            = 0
            @[simp]
            theorem FractionalIdeal.le_zero_iff {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} :
            I 0 I = 0
            theorem FractionalIdeal.eq_zero_iff {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} :
            I = 0 ∀ (x : P), x Ix = 0
            theorem IsFractional.sup {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : Submodule R P} {J : Submodule R P} :
            IsFractional S IIsFractional S JIsFractional S (I J)
            theorem IsFractional.inf_right {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : Submodule R P} :
            IsFractional S I∀ (J : Submodule R P), IsFractional S (I J)
            instance FractionalIdeal.instInfFractionalIdeal {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] :
            Equations
            • FractionalIdeal.instInfFractionalIdeal = { inf := fun I J => { val := I J, property := (_ : IsFractional S (I J)) } }
            @[simp]
            theorem FractionalIdeal.coe_inf {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) (J : FractionalIdeal S P) :
            ↑(I J) = I J
            instance FractionalIdeal.instSupFractionalIdeal {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] :
            Equations
            • FractionalIdeal.instSupFractionalIdeal = { sup := fun I J => { val := I J, property := (_ : IsFractional S (I J)) } }
            theorem FractionalIdeal.coe_sup {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) (J : FractionalIdeal S P) :
            ↑(I J) = I J
            instance FractionalIdeal.lattice {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] :
            Equations
            • One or more equations did not get rendered due to their size.
            Equations
            • One or more equations did not get rendered due to their size.
            instance FractionalIdeal.instAddFractionalIdeal {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] :
            Equations
            • FractionalIdeal.instAddFractionalIdeal = { add := fun x x_1 => x x_1 }
            @[simp]
            theorem FractionalIdeal.sup_eq_add {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) (J : FractionalIdeal S P) :
            I J = I + J
            @[simp]
            theorem FractionalIdeal.coe_add {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) (J : FractionalIdeal S P) :
            ↑(I + J) = I + J
            @[simp]
            theorem FractionalIdeal.coeIdeal_sup {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : Ideal R) (J : Ideal R) :
            ↑(I J) = I + J
            theorem IsFractional.nsmul {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : Submodule R P} (n : ) :
            IsFractional S IIsFractional S (n I)
            Equations
            • FractionalIdeal.instSMulNatFractionalIdeal = { smul := fun n I => { val := n I, property := (_ : IsFractional S (n I)) } }
            theorem FractionalIdeal.coe_nsmul {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (n : ) (I : FractionalIdeal S P) :
            ↑(n I) = n I
            theorem IsFractional.mul {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : Submodule R P} {J : Submodule R P} :
            IsFractional S IIsFractional S JIsFractional S (I * J)
            theorem IsFractional.pow {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : Submodule R P} (h : IsFractional S I) (n : ) :
            IsFractional S (I ^ n)
            theorem FractionalIdeal.mul_def' {R : Type u_3} [CommRing R] {S : Submonoid R} {P : Type u_4} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) (J : FractionalIdeal S P) :
            FractionalIdeal.mul I J = { val := I * J, property := (_ : IsFractional S (I * J)) }
            @[irreducible]
            def FractionalIdeal.mul {R : Type u_3} [CommRing R] {S : Submonoid R} {P : Type u_4} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) (J : FractionalIdeal S P) :

            FractionalIdeal.mul is the product of two fractional ideals, used to define the Mul instance.

            This is only an auxiliary definition: the preferred way of writing I.mul J is I * J.

            Elaborated terms involving FractionalIdeal tend to grow quite large, so by making definitions irreducible, we hope to avoid deep unfolds.

            Equations
            Instances For
              instance FractionalIdeal.instMulFractionalIdeal {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] :
              Equations
              @[simp]
              theorem FractionalIdeal.mul_eq_mul {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) (J : FractionalIdeal S P) :
              theorem FractionalIdeal.mul_def {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) (J : FractionalIdeal S P) :
              I * J = { val := I * J, property := (_ : IsFractional S (I * J)) }
              @[simp]
              theorem FractionalIdeal.coe_mul {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) (J : FractionalIdeal S P) :
              ↑(I * J) = I * J
              @[simp]
              theorem FractionalIdeal.coeIdeal_mul {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : Ideal R) (J : Ideal R) :
              ↑(I * J) = I * J
              theorem FractionalIdeal.mul_left_mono {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) :
              Monotone ((fun x x_1 => x * x_1) I)
              theorem FractionalIdeal.mul_right_mono {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) :
              Monotone fun J => J * I
              theorem FractionalIdeal.mul_mem_mul {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} {J : FractionalIdeal S P} {i : P} {j : P} (hi : i I) (hj : j J) :
              i * j I * J
              theorem FractionalIdeal.mul_le {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} {J : FractionalIdeal S P} {K : FractionalIdeal S P} :
              I * J K ∀ (i : P), i I∀ (j : P), j Ji * j K
              Equations
              • FractionalIdeal.instPowFractionalIdealNat = { pow := fun I n => { val := I ^ n, property := (_ : IsFractional S (I ^ n)) } }
              @[simp]
              theorem FractionalIdeal.coe_pow {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) (n : ) :
              ↑(I ^ n) = I ^ n
              theorem FractionalIdeal.mul_induction_on {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} {J : FractionalIdeal S P} {C : PProp} {r : P} (hr : r I * J) (hm : (i : P) → i I(j : P) → j JC (i * j)) (ha : (x y : P) → C xC yC (x + y)) :
              C r
              Equations
              • FractionalIdeal.instNatCastFractionalIdeal = { natCast := Nat.unaryCast }
              theorem FractionalIdeal.coe_nat_cast {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (n : ) :
              n = n
              instance FractionalIdeal.commSemiring {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] :
              Equations
              • One or more equations did not get rendered due to their size.
              @[simp]
              theorem FractionalIdeal.coeSubmoduleHom_apply {R : Type u_1} [CommRing R] (S : Submonoid R) (P : Type u_2) [CommRing P] [Algebra R P] (I : FractionalIdeal S P) :

              FractionalIdeal.coeToSubmodule as a bundled RingHom.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                theorem FractionalIdeal.add_le_add_left {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} {J : FractionalIdeal S P} (hIJ : I J) (J' : FractionalIdeal S P) :
                J' + I J' + J
                theorem FractionalIdeal.mul_le_mul_left {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} {J : FractionalIdeal S P} (hIJ : I J) (J' : FractionalIdeal S P) :
                J' * I J' * J
                theorem FractionalIdeal.le_self_mul_self {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} (hI : 1 I) :
                I I * I
                theorem FractionalIdeal.mul_self_le_self {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} (hI : I 1) :
                I * I I
                theorem FractionalIdeal.coeIdeal_le_one {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : Ideal R} :
                I 1
                theorem FractionalIdeal.le_one_iff_exists_coeIdeal {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {J : FractionalIdeal S P} :
                J 1 I, I = J
                @[simp]
                theorem FractionalIdeal.one_le {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} :
                1 I 1 I
                @[simp]
                theorem FractionalIdeal.coeIdealHom_apply {R : Type u_1} [CommRing R] (S : Submonoid R) (P : Type u_2) [CommRing P] [Algebra R P] (I : Ideal R) :
                def FractionalIdeal.coeIdealHom {R : Type u_1} [CommRing R] (S : Submonoid R) (P : Type u_2) [CommRing P] [Algebra R P] :

                coeIdealHom (S : Submonoid R) P is (↑) : Ideal R → FractionalIdeal S P as a ring hom

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem FractionalIdeal.coeIdeal_pow {R : Type u_1} [CommRing R] (S : Submonoid R) (P : Type u_2) [CommRing P] [Algebra R P] (I : Ideal R) (n : ) :
                  ↑(I ^ n) = I ^ n
                  theorem FractionalIdeal.coeIdeal_finprod {R : Type u_1} [CommRing R] (S : Submonoid R) (P : Type u_2) [CommRing P] [Algebra R P] [IsLocalization S P] {α : Sort u_3} {f : αIdeal R} (hS : S nonZeroDivisors R) :
                  ↑(∏ᶠ (a : α), f a) = ∏ᶠ (a : α), ↑(f a)
                  theorem IsFractional.map {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] (g : P →ₐ[R] P') {I : Submodule R P} :
                  def FractionalIdeal.map {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] (g : P →ₐ[R] P') :

                  I.map g is the pushforward of the fractional ideal I along the algebra morphism g

                  Equations
                  Instances For
                    @[simp]
                    theorem FractionalIdeal.coe_map {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] (g : P →ₐ[R] P') (I : FractionalIdeal S P) :
                    @[simp]
                    theorem FractionalIdeal.mem_map {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] {I : FractionalIdeal S P} {g : P →ₐ[R] P'} {y : P'} :
                    y FractionalIdeal.map g I x, x I g x = y
                    @[simp]
                    theorem FractionalIdeal.map_id {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) :
                    @[simp]
                    theorem FractionalIdeal.map_comp {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] {P'' : Type u_4} [CommRing P''] [Algebra R P''] (I : FractionalIdeal S P) (g : P →ₐ[R] P') (g' : P' →ₐ[R] P'') :
                    @[simp]
                    theorem FractionalIdeal.map_coeIdeal {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] (g : P →ₐ[R] P') (I : Ideal R) :
                    @[simp]
                    theorem FractionalIdeal.map_one {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] (g : P →ₐ[R] P') :
                    @[simp]
                    theorem FractionalIdeal.map_zero {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] (g : P →ₐ[R] P') :
                    @[simp]
                    theorem FractionalIdeal.map_add {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] (I : FractionalIdeal S P) (J : FractionalIdeal S P) (g : P →ₐ[R] P') :
                    @[simp]
                    theorem FractionalIdeal.map_mul {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] (I : FractionalIdeal S P) (J : FractionalIdeal S P) (g : P →ₐ[R] P') :
                    @[simp]
                    theorem FractionalIdeal.map_map_symm {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] (I : FractionalIdeal S P) (g : P ≃ₐ[R] P') :
                    @[simp]
                    theorem FractionalIdeal.map_symm_map {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] (I : FractionalIdeal S P') (g : P ≃ₐ[R] P') :
                    theorem FractionalIdeal.map_mem_map {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] {f : P →ₐ[R] P'} (h : Function.Injective f) {x : P} {I : FractionalIdeal S P} :
                    theorem FractionalIdeal.map_injective {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] (f : P →ₐ[R] P') (h : Function.Injective f) :
                    def FractionalIdeal.mapEquiv {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] (g : P ≃ₐ[R] P') :

                    If g is an equivalence, map g is an isomorphism

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      @[simp]
                      theorem FractionalIdeal.coeFun_mapEquiv {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] (g : P ≃ₐ[R] P') :
                      @[simp]
                      theorem FractionalIdeal.mapEquiv_apply {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {P' : Type u_3} [CommRing P'] [Algebra R P'] (g : P ≃ₐ[R] P') (I : FractionalIdeal S P) :
                      @[simp]
                      theorem FractionalIdeal.isFractional_span_iff {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {s : Set P} :
                      IsFractional S (Submodule.span R s) a, a S ∀ (b : P), b sIsLocalization.IsInteger R (a b)
                      theorem FractionalIdeal.isFractional_of_fg {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] {I : Submodule R P} (hI : Submodule.FG I) :
                      theorem FractionalIdeal.mem_span_mul_finite_of_mem_mul {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] {I : FractionalIdeal S P} {J : FractionalIdeal S P} {x : P} (hx : x I * J) :
                      T T', T I T' J x Submodule.span R (T * T')
                      theorem FractionalIdeal.coeIdeal_fg {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] (inj : Function.Injective ↑(algebraMap R P)) (I : Ideal R) :
                      theorem FractionalIdeal.fg_unit {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : (FractionalIdeal S P)ˣ) :
                      Submodule.FG I
                      theorem FractionalIdeal.fg_of_isUnit {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (I : FractionalIdeal S P) (h : IsUnit I) :
                      theorem Ideal.fg_of_isUnit {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] (inj : Function.Injective ↑(algebraMap R P)) (I : Ideal R) (h : IsUnit I) :
                      theorem FractionalIdeal.canonicalEquiv_def {R : Type u_5} [CommRing R] (S : Submonoid R) (P : Type u_6) [CommRing P] [Algebra R P] [loc : IsLocalization S P] (P' : Type u_7) [CommRing P'] [Algebra R P'] [loc' : IsLocalization S P'] :
                      @[irreducible]
                      noncomputable def FractionalIdeal.canonicalEquiv {R : Type u_5} [CommRing R] (S : Submonoid R) (P : Type u_6) [CommRing P] [Algebra R P] [loc : IsLocalization S P] (P' : Type u_7) [CommRing P'] [Algebra R P'] [loc' : IsLocalization S P'] :

                      canonicalEquiv f f' is the canonical equivalence between the fractional ideals in P and in P', which are both localizations of R at S.

                      Equations
                      Instances For
                        @[simp]
                        theorem FractionalIdeal.mem_canonicalEquiv_apply {R : Type u_1} [CommRing R] (S : Submonoid R) (P : Type u_2) [CommRing P] [Algebra R P] [loc : IsLocalization S P] (P' : Type u_3) [CommRing P'] [Algebra R P'] [loc' : IsLocalization S P'] {I : FractionalIdeal S P} {x : P'} :
                        x ↑(FractionalIdeal.canonicalEquiv S P P') I y, y I ↑(IsLocalization.map P' (RingHom.id R) (_ : ∀ (y : R), y S↑(RingHom.id R) y S)) y = x
                        @[simp]
                        theorem FractionalIdeal.canonicalEquiv_flip {R : Type u_1} [CommRing R] (S : Submonoid R) (P : Type u_2) [CommRing P] [Algebra R P] [loc : IsLocalization S P] (P' : Type u_3) [CommRing P'] [Algebra R P'] [loc' : IsLocalization S P'] (I : FractionalIdeal S P') :
                        @[simp]
                        theorem FractionalIdeal.canonicalEquiv_canonicalEquiv {R : Type u_1} [CommRing R] (S : Submonoid R) (P : Type u_2) [CommRing P] [Algebra R P] [loc : IsLocalization S P] (P' : Type u_3) [CommRing P'] [Algebra R P'] [loc' : IsLocalization S P'] (P'' : Type u_5) [CommRing P''] [Algebra R P''] [IsLocalization S P''] (I : FractionalIdeal S P) :
                        @[simp]
                        theorem FractionalIdeal.canonicalEquiv_coeIdeal {R : Type u_1} [CommRing R] (S : Submonoid R) (P : Type u_2) [CommRing P] [Algebra R P] [loc : IsLocalization S P] (P' : Type u_3) [CommRing P'] [Algebra R P'] [loc' : IsLocalization S P'] (I : Ideal R) :
                        ↑(FractionalIdeal.canonicalEquiv S P P') I = I

                        IsFractionRing section #

                        This section concerns fractional ideals in the field of fractions, i.e. the type FractionalIdeal R⁰ K where IsFractionRing R K.

                        theorem FractionalIdeal.exists_ne_zero_mem_isInteger {R : Type u_1} [CommRing R] {K : Type u_3} [Field K] [Algebra R K] [IsFractionRing R K] {I : FractionalIdeal (nonZeroDivisors R) K} [Nontrivial R] (hI : I 0) :
                        x, x 0 ↑(algebraMap R K) x I

                        Nonzero fractional ideals contain a nonzero integer.

                        theorem FractionalIdeal.map_ne_zero {R : Type u_1} [CommRing R] {K : Type u_3} {K' : Type u_4} [Field K] [Field K'] [Algebra R K] [IsFractionRing R K] [Algebra R K'] [IsFractionRing R K'] {I : FractionalIdeal (nonZeroDivisors R) K} (h : K →ₐ[R] K') [Nontrivial R] (hI : I 0) :
                        @[simp]
                        theorem FractionalIdeal.map_eq_zero_iff {R : Type u_1} [CommRing R] {K : Type u_3} {K' : Type u_4} [Field K] [Field K'] [Algebra R K] [IsFractionRing R K] [Algebra R K'] [IsFractionRing R K'] {I : FractionalIdeal (nonZeroDivisors R) K} (h : K →ₐ[R] K') [Nontrivial R] :
                        theorem FractionalIdeal.coeIdeal_injective {R : Type u_1} [CommRing R] {K : Type u_3} [Field K] [Algebra R K] [IsFractionRing R K] :
                        Function.Injective fun I => I
                        theorem FractionalIdeal.coeIdeal_inj {R : Type u_1} [CommRing R] {K : Type u_3} [Field K] [Algebra R K] [IsFractionRing R K] {I : Ideal R} {J : Ideal R} :
                        I = J I = J
                        @[simp]
                        theorem FractionalIdeal.coeIdeal_eq_zero {R : Type u_1} [CommRing R] {K : Type u_3} [Field K] [Algebra R K] [IsFractionRing R K] {I : Ideal R} :
                        I = 0 I =
                        theorem FractionalIdeal.coeIdeal_ne_zero {R : Type u_1} [CommRing R] {K : Type u_3} [Field K] [Algebra R K] [IsFractionRing R K] {I : Ideal R} :
                        I 0 I
                        @[simp]
                        theorem FractionalIdeal.coeIdeal_eq_one {R : Type u_1} [CommRing R] {K : Type u_3} [Field K] [Algebra R K] [IsFractionRing R K] {I : Ideal R} :
                        I = 1 I = 1
                        theorem FractionalIdeal.coeIdeal_ne_one {R : Type u_1} [CommRing R] {K : Type u_3} [Field K] [Algebra R K] [IsFractionRing R K] {I : Ideal R} :
                        I 1 I 1

                        quotient section #

                        This section defines the ideal quotient of fractional ideals.

                        In this section we need that each non-zero y : R has an inverse in the localization, i.e. that the localization is a field. We satisfy this assumption by taking S = nonZeroDivisors R, R's localization at which is a field because R is a domain.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        theorem FractionalIdeal.ne_zero_of_mul_eq_one {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] (I : FractionalIdeal (nonZeroDivisors R₁) K) (J : FractionalIdeal (nonZeroDivisors R₁) K) (h : I * J = 1) :
                        I 0
                        theorem IsFractional.div_of_nonzero {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] {I : Submodule R₁ K} {J : Submodule R₁ K} :
                        theorem FractionalIdeal.fractional_div_of_nonzero {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] {I : FractionalIdeal (nonZeroDivisors R₁) K} {J : FractionalIdeal (nonZeroDivisors R₁) K} (h : J 0) :
                        IsFractional (nonZeroDivisors R₁) (I / J)
                        Equations
                        • One or more equations did not get rendered due to their size.
                        @[simp]
                        theorem FractionalIdeal.div_zero {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] {I : FractionalIdeal (nonZeroDivisors R₁) K} :
                        I / 0 = 0
                        theorem FractionalIdeal.div_nonzero {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] {I : FractionalIdeal (nonZeroDivisors R₁) K} {J : FractionalIdeal (nonZeroDivisors R₁) K} (h : J 0) :
                        I / J = { val := I / J, property := (_ : IsFractional (nonZeroDivisors R₁) (I / J)) }
                        @[simp]
                        theorem FractionalIdeal.coe_div {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] {I : FractionalIdeal (nonZeroDivisors R₁) K} {J : FractionalIdeal (nonZeroDivisors R₁) K} (hJ : J 0) :
                        ↑(I / J) = I / J
                        theorem FractionalIdeal.mem_div_iff_of_nonzero {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] {I : FractionalIdeal (nonZeroDivisors R₁) K} {J : FractionalIdeal (nonZeroDivisors R₁) K} (h : J 0) {x : K} :
                        x I / J ∀ (y : K), y Jx * y I
                        theorem FractionalIdeal.mul_one_div_le_one {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] {I : FractionalIdeal (nonZeroDivisors R₁) K} :
                        I * (1 / I) 1
                        theorem FractionalIdeal.le_self_mul_one_div {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] {I : FractionalIdeal (nonZeroDivisors R₁) K} (hI : I 1) :
                        I I * (1 / I)
                        theorem FractionalIdeal.le_div_iff_of_nonzero {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] {I : FractionalIdeal (nonZeroDivisors R₁) K} {J : FractionalIdeal (nonZeroDivisors R₁) K} {J' : FractionalIdeal (nonZeroDivisors R₁) K} (hJ' : J' 0) :
                        I J / J' ∀ (x : K), x I∀ (y : K), y J'x * y J
                        theorem FractionalIdeal.le_div_iff_mul_le {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] {I : FractionalIdeal (nonZeroDivisors R₁) K} {J : FractionalIdeal (nonZeroDivisors R₁) K} {J' : FractionalIdeal (nonZeroDivisors R₁) K} (hJ' : J' 0) :
                        I J / J' I * J' J
                        @[simp]
                        theorem FractionalIdeal.div_one {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] {I : FractionalIdeal (nonZeroDivisors R₁) K} :
                        I / 1 = I
                        theorem FractionalIdeal.eq_one_div_of_mul_eq_one_right {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] (I : FractionalIdeal (nonZeroDivisors R₁) K) (J : FractionalIdeal (nonZeroDivisors R₁) K) (h : I * J = 1) :
                        J = 1 / I
                        theorem FractionalIdeal.mul_div_self_cancel_iff {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] {I : FractionalIdeal (nonZeroDivisors R₁) K} :
                        I * (1 / I) = 1 J, I * J = 1
                        @[simp]
                        theorem FractionalIdeal.map_div {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] {K' : Type u_5} [Field K'] [Algebra R₁ K'] [IsFractionRing R₁ K'] (I : FractionalIdeal (nonZeroDivisors R₁) K) (J : FractionalIdeal (nonZeroDivisors R₁) K) (h : K ≃ₐ[R₁] K') :
                        theorem FractionalIdeal.map_one_div {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] {K' : Type u_5} [Field K'] [Algebra R₁ K'] [IsFractionRing R₁ K'] (I : FractionalIdeal (nonZeroDivisors R₁) K) (h : K ≃ₐ[R₁] K') :
                        FractionalIdeal.map (h) (1 / I) = 1 / FractionalIdeal.map (h) I
                        theorem FractionalIdeal.eq_zero_or_one {K : Type u_4} {L : Type u_5} [Field K] [Field L] [Algebra K L] [IsFractionRing K L] (I : FractionalIdeal (nonZeroDivisors K) L) :
                        I = 0 I = 1
                        theorem FractionalIdeal.eq_zero_or_one_of_isField {R₁ : Type u_3} {K : Type u_4} [CommRing R₁] [Field K] [Algebra R₁ K] [IsFractionRing R₁ K] (hF : IsField R₁) (I : FractionalIdeal (nonZeroDivisors R₁) K) :
                        I = 0 I = 1
                        def FractionalIdeal.spanFinset (R₁ : Type u_3) [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [IsFractionRing R₁ K] {ι : Type u_5} (s : Finset ι) (f : ιK) :

                        FractionalIdeal.span_finset R₁ s f is the fractional ideal of R₁ generated by f '' s.

                        Equations
                        Instances For
                          @[simp]
                          theorem FractionalIdeal.spanFinset_coe (R₁ : Type u_3) [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [IsFractionRing R₁ K] {ι : Type u_5} (s : Finset ι) (f : ιK) :
                          ↑(FractionalIdeal.spanFinset R₁ s f) = Submodule.span R₁ (f '' s)
                          @[simp]
                          theorem FractionalIdeal.spanFinset_eq_zero {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [IsFractionRing R₁ K] {ι : Type u_5} {s : Finset ι} {f : ιK} :
                          FractionalIdeal.spanFinset R₁ s f = 0 ∀ (j : ι), j sf j = 0
                          theorem FractionalIdeal.spanFinset_ne_zero {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [IsFractionRing R₁ K] {ι : Type u_5} {s : Finset ι} {f : ιK} :
                          FractionalIdeal.spanFinset R₁ s f 0 j, j s f j 0
                          theorem FractionalIdeal.isFractional_span_singleton {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] (x : P) :
                          theorem FractionalIdeal.spanSingleton_def {R : Type u_5} [CommRing R] (S : Submonoid R) {P : Type u_6} [CommRing P] [Algebra R P] [loc : IsLocalization S P] (x : P) :
                          FractionalIdeal.spanSingleton S x = { val := Submodule.span R {x}, property := (_ : IsFractional S (Submodule.span R {x})) }
                          @[irreducible]
                          def FractionalIdeal.spanSingleton {R : Type u_5} [CommRing R] (S : Submonoid R) {P : Type u_6} [CommRing P] [Algebra R P] [loc : IsLocalization S P] (x : P) :

                          spanSingleton x is the fractional ideal generated by x if 0 ∉ S

                          Equations
                          Instances For
                            @[simp]
                            theorem FractionalIdeal.coe_spanSingleton {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] (x : P) :
                            @[simp]
                            theorem FractionalIdeal.mem_spanSingleton {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] {x : P} {y : P} :
                            @[simp]
                            theorem FractionalIdeal.spanSingleton_le_iff_mem {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] {x : P} {I : FractionalIdeal S P} :
                            @[simp]
                            theorem FractionalIdeal.spanSingleton_eq_zero_iff {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] {y : P} :
                            @[simp]
                            theorem FractionalIdeal.spanSingleton_one {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] :
                            @[simp]
                            theorem FractionalIdeal.spanSingleton_pow {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] (x : P) (n : ) :
                            @[simp]
                            theorem FractionalIdeal.coeIdeal_span_singleton {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] (x : R) :
                            @[simp]
                            theorem FractionalIdeal.canonicalEquiv_spanSingleton {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] {P' : Type u_5} [CommRing P'] [Algebra R P'] [IsLocalization S P'] (x : P) :
                            theorem FractionalIdeal.mem_singleton_mul {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] {x : P} {y : P} {I : FractionalIdeal S P} :
                            y FractionalIdeal.spanSingleton S x * I y', y' I y = x * y'
                            theorem FractionalIdeal.mk'_mul_coeIdeal_eq_coeIdeal {R₁ : Type u_3} [CommRing R₁] (K : Type u_4) [Field K] [Algebra R₁ K] [IsFractionRing R₁ K] {I : Ideal R₁} {J : Ideal R₁} {x : R₁} {y : R₁} (hy : y nonZeroDivisors R₁) :
                            FractionalIdeal.spanSingleton (nonZeroDivisors R₁) (IsLocalization.mk' K x { val := y, property := hy }) * I = J Ideal.span {x} * I = Ideal.span {y} * J
                            theorem FractionalIdeal.spanSingleton_mul_coeIdeal_eq_coeIdeal {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [IsFractionRing R₁ K] {I : Ideal R₁} {J : Ideal R₁} {z : K} :
                            theorem FractionalIdeal.exists_eq_spanSingleton_mul {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [IsFractionRing R₁ K] [IsDomain R₁] (I : FractionalIdeal (nonZeroDivisors R₁) K) :
                            a aI, a 0 I = FractionalIdeal.spanSingleton (nonZeroDivisors R₁) (↑(algebraMap R₁ K) a)⁻¹ * aI
                            theorem FractionalIdeal.le_spanSingleton_mul_iff {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] {x : P} {I : FractionalIdeal S P} {J : FractionalIdeal S P} :
                            I FractionalIdeal.spanSingleton S x * J ∀ (zI : P), zI IzJ, zJ J x * zJ = zI
                            theorem FractionalIdeal.spanSingleton_mul_le_iff {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] {x : P} {I : FractionalIdeal S P} {J : FractionalIdeal S P} :
                            FractionalIdeal.spanSingleton S x * I J ∀ (z : P), z Ix * z J
                            theorem FractionalIdeal.eq_spanSingleton_mul {R : Type u_1} [CommRing R] {S : Submonoid R} {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] {x : P} {I : FractionalIdeal S P} {J : FractionalIdeal S P} :
                            I = FractionalIdeal.spanSingleton S x * J (∀ (zI : P), zI IzJ, zJ J x * zJ = zI) ∀ (z : P), z Jx * z I
                            theorem FractionalIdeal.isNoetherian_zero {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] :
                            IsNoetherian R₁ { x // x 0 }
                            theorem FractionalIdeal.isNoetherian_iff {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] {I : FractionalIdeal (nonZeroDivisors R₁) K} :
                            IsNoetherian R₁ { x // x I } ∀ (J : FractionalIdeal (nonZeroDivisors R₁) K), J ISubmodule.FG J
                            theorem FractionalIdeal.isNoetherian_coeIdeal {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [IsNoetherianRing R₁] (I : Ideal R₁) :
                            IsNoetherian R₁ { x // x I }
                            theorem FractionalIdeal.isNoetherian_spanSingleton_inv_to_map_mul {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] (x : R₁) {I : FractionalIdeal (nonZeroDivisors R₁) K} (hI : IsNoetherian R₁ { x // x I }) :
                            IsNoetherian R₁ { x // x ↑(FractionalIdeal.spanSingleton (nonZeroDivisors R₁) (↑(algebraMap R₁ K) x)⁻¹ * I) }
                            theorem FractionalIdeal.isNoetherian {R₁ : Type u_3} [CommRing R₁] {K : Type u_4} [Field K] [Algebra R₁ K] [frac : IsFractionRing R₁ K] [IsDomain R₁] [IsNoetherianRing R₁] (I : FractionalIdeal (nonZeroDivisors R₁) K) :
                            IsNoetherian R₁ { x // x I }

                            Every fractional ideal of a noetherian integral domain is noetherian.

                            theorem FractionalIdeal.isFractional_adjoin_integral {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] (x : P) (hx : IsIntegral R x) :
                            IsFractional S (Subalgebra.toSubmodule (Algebra.adjoin R {x}))

                            A[x] is a fractional ideal for every integral x.

                            def FractionalIdeal.adjoinIntegral {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] (x : P) (hx : IsIntegral R x) :

                            FractionalIdeal.adjoinIntegral (S : Submonoid R) x hx is R[x] as a fractional ideal, where hx is a proof that x : P is integral over R.

                            Equations
                            Instances For
                              @[simp]
                              theorem FractionalIdeal.adjoinIntegral_coe {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] (x : P) (hx : IsIntegral R x) :
                              ↑(FractionalIdeal.adjoinIntegral S x hx) = Subalgebra.toSubmodule (Algebra.adjoin R {x})
                              theorem FractionalIdeal.mem_adjoinIntegral_self {R : Type u_1} [CommRing R] (S : Submonoid R) {P : Type u_2} [CommRing P] [Algebra R P] [loc : IsLocalization S P] (x : P) (hx : IsIntegral R x) :