Documentation

Mathlib.Algebra.Field.Subfield

Subfields #

Let K be a division ring, for example a field. This file defines the "bundled" subfield type Subfield K, a type whose terms correspond to subfields of K. Note we do not require the "subfields" to be commutative, so they are really sub-division rings / skew fields. This is the preferred way to talk about subfields in mathlib. Unbundled subfields (s : Set K and IsSubfield s) are not in this file, and they will ultimately be deprecated.

We prove that subfields are a complete lattice, and that you can map (pushforward) and comap (pull back) them along ring homomorphisms.

We define the closure construction from Set K to Subfield K, sending a subset of K to the subfield it generates, and prove that it is a Galois insertion.

Main definitions #

Notation used here:

(K : Type u) [DivisionRing K] (L : Type u) [DivisionRing L] (f g : K →+* L) (A : Subfield K) (B : Subfield L) (s : Set K)

Implementation notes #

A subfield is implemented as a subring which is closed under ⁻¹.

Lattice inclusion (e.g. and ) is used rather than set notation ( and ), although is defined as membership of a subfield's underlying set.

Tags #

subfield, subfields

SubfieldClass S K states S is a type of subsets s ⊆ K closed under field operations.

    Instances
      @[instance 100]
      instance SubfieldClass.toSubgroupClass {K : Type u} [DivisionRing K] (S : Type u_1) [SetLike S K] [h : SubfieldClass S K] :

      A subfield contains 1, products and inverses.

      Be assured that we're not actually proving that subfields are subgroups: SubgroupClass is really an abbreviation of SubgroupWithOrWithoutZeroClass.

      Equations
      • =
      theorem SubfieldClass.nnratCast_mem {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] (s : S) (q : ℚ≥0) :
      q s
      theorem SubfieldClass.ratCast_mem {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] (s : S) (q : ) :
      q s
      instance SubfieldClass.instNNRatCast {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] (s : S) :
      Equations
      instance SubfieldClass.instRatCast {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] (s : S) :
      RatCast s
      Equations
      @[simp]
      theorem SubfieldClass.coe_nnratCast {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] (s : S) (q : ℚ≥0) :
      q = q
      @[simp]
      theorem SubfieldClass.coe_ratCast {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] (s : S) (x : ) :
      x = x
      theorem SubfieldClass.nnqsmul_mem {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] {x : K} (s : S) (q : ℚ≥0) (hx : x s) :
      q x s
      theorem SubfieldClass.qsmul_mem {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] {x : K} (s : S) (q : ) (hx : x s) :
      q x s
      @[deprecated SubfieldClass.coe_ratCast]
      theorem SubfieldClass.coe_rat_cast {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] (s : S) (x : ) :
      x = x

      Alias of SubfieldClass.coe_ratCast.

      @[deprecated SubfieldClass.ratCast_mem]
      theorem SubfieldClass.coe_rat_mem {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] (s : S) (q : ) :
      q s

      Alias of SubfieldClass.ratCast_mem.

      @[deprecated SubfieldClass.qsmul_mem]
      theorem SubfieldClass.rat_smul_mem {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] {x : K} (s : S) (q : ) (hx : x s) :
      q x s

      Alias of SubfieldClass.qsmul_mem.

      theorem SubfieldClass.ofScientific_mem {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] (s : S) {b : Bool} {n : } {m : } :
      instance SubfieldClass.instSMulNNRat {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] (s : S) :
      Equations
      instance SubfieldClass.instSMulRat {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] (s : S) :
      SMul s
      Equations
      @[simp]
      theorem SubfieldClass.coe_nnqsmul {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] (s : S) (q : ℚ≥0) (x : s) :
      (q x) = q x
      @[simp]
      theorem SubfieldClass.coe_qsmul {K : Type u} [DivisionRing K] {S : Type u_1} [SetLike S K] [h : SubfieldClass S K] (s : S) (q : ) (x : s) :
      (q x) = q x
      @[instance 75]
      instance SubfieldClass.toDivisionRing {K : Type u} [DivisionRing K] (S : Type u_1) [SetLike S K] [h : SubfieldClass S K] (s : S) :

      A subfield inherits a division ring structure

      Equations
      @[instance 75]
      instance SubfieldClass.toField (S : Type u_1) {K : Type u_2} [Field K] [SetLike S K] [SubfieldClass S K] (s : S) :
      Field s

      A subfield of a field inherits a field structure

      Equations

      Subfield R is the type of subfields of R. A subfield of R is a subset s that is a multiplicative submonoid and an additive subgroup. Note in particular that it shares the same 0 and 1 as R.

        Instances For
          theorem Subfield.inv_mem' {K : Type u} [DivisionRing K] (self : Subfield K) (x : K) :
          x self.carrierx⁻¹ self.carrier

          A subfield is closed under multiplicative inverses.

          The underlying AddSubgroup of a subfield.

          Equations
          • s.toAddSubgroup = { toAddSubmonoid := s.toAddSubgroup.toAddSubmonoid, neg_mem' := }
          Instances For
            Equations
            • Subfield.instSetLike = { coe := fun (s : Subfield K) => s.carrier, coe_injective' := }
            Equations
            • =
            theorem Subfield.mem_carrier {K : Type u} [DivisionRing K] {s : Subfield K} {x : K} :
            x s.carrier x s
            @[simp]
            theorem Subfield.mem_mk {K : Type u} [DivisionRing K] {S : Subring K} {x : K} (h : xS.carrier, x⁻¹ S.carrier) :
            x { toSubring := S, inv_mem' := h } x S
            @[simp]
            theorem Subfield.coe_set_mk {K : Type u} [DivisionRing K] (S : Subring K) (h : xS.carrier, x⁻¹ S.carrier) :
            { toSubring := S, inv_mem' := h } = S
            @[simp]
            theorem Subfield.mk_le_mk {K : Type u} [DivisionRing K] {S : Subring K} {S' : Subring K} (h : xS.carrier, x⁻¹ S.carrier) (h' : xS'.carrier, x⁻¹ S'.carrier) :
            { toSubring := S, inv_mem' := h } { toSubring := S', inv_mem' := h' } S S'
            theorem Subfield.ext {K : Type u} [DivisionRing K] {S : Subfield K} {T : Subfield K} (h : ∀ (x : K), x S x T) :
            S = T

            Two subfields are equal if they have the same elements.

            def Subfield.copy {K : Type u} [DivisionRing K] (S : Subfield K) (s : Set K) (hs : s = S) :

            Copy of a subfield with a new carrier equal to the old one. Useful to fix definitional equalities.

            Equations
            • S.copy s hs = { carrier := s, mul_mem' := , one_mem' := , add_mem' := , zero_mem' := , neg_mem' := , inv_mem' := }
            Instances For
              @[simp]
              theorem Subfield.coe_copy {K : Type u} [DivisionRing K] (S : Subfield K) (s : Set K) (hs : s = S) :
              (S.copy s hs) = s
              theorem Subfield.copy_eq {K : Type u} [DivisionRing K] (S : Subfield K) (s : Set K) (hs : s = S) :
              S.copy s hs = S
              @[simp]
              theorem Subfield.coe_toSubring {K : Type u} [DivisionRing K] (s : Subfield K) :
              s.toSubring = s
              @[simp]
              theorem Subfield.mem_toSubring {K : Type u} [DivisionRing K] (s : Subfield K) (x : K) :
              x s.toSubring x s
              def Subring.toSubfield {K : Type u} [DivisionRing K] (s : Subring K) (hinv : xs, x⁻¹ s) :

              A Subring containing inverses is a Subfield.

              Equations
              • s.toSubfield hinv = { toSubring := s, inv_mem' := hinv }
              Instances For
                theorem Subfield.one_mem {K : Type u} [DivisionRing K] (s : Subfield K) :
                1 s

                A subfield contains the field's 1.

                theorem Subfield.zero_mem {K : Type u} [DivisionRing K] (s : Subfield K) :
                0 s

                A subfield contains the field's 0.

                theorem Subfield.mul_mem {K : Type u} [DivisionRing K] (s : Subfield K) {x : K} {y : K} :
                x sy sx * y s

                A subfield is closed under multiplication.

                theorem Subfield.add_mem {K : Type u} [DivisionRing K] (s : Subfield K) {x : K} {y : K} :
                x sy sx + y s

                A subfield is closed under addition.

                theorem Subfield.neg_mem {K : Type u} [DivisionRing K] (s : Subfield K) {x : K} :
                x s-x s

                A subfield is closed under negation.

                theorem Subfield.sub_mem {K : Type u} [DivisionRing K] (s : Subfield K) {x : K} {y : K} :
                x sy sx - y s

                A subfield is closed under subtraction.

                theorem Subfield.inv_mem {K : Type u} [DivisionRing K] (s : Subfield K) {x : K} :
                x sx⁻¹ s

                A subfield is closed under inverses.

                theorem Subfield.div_mem {K : Type u} [DivisionRing K] (s : Subfield K) {x : K} {y : K} :
                x sy sx / y s

                A subfield is closed under division.

                theorem Subfield.list_prod_mem {K : Type u} [DivisionRing K] (s : Subfield K) {l : List K} :
                (∀ xl, x s)l.prod s

                Product of a list of elements in a subfield is in the subfield.

                theorem Subfield.list_sum_mem {K : Type u} [DivisionRing K] (s : Subfield K) {l : List K} :
                (∀ xl, x s)l.sum s

                Sum of a list of elements in a subfield is in the subfield.

                theorem Subfield.multiset_sum_mem {K : Type u} [DivisionRing K] (s : Subfield K) (m : Multiset K) :
                (∀ am, a s)m.sum s

                Sum of a multiset of elements in a Subfield is in the Subfield.

                theorem Subfield.sum_mem {K : Type u} [DivisionRing K] (s : Subfield K) {ι : Type u_1} {t : Finset ι} {f : ιK} (h : ct, f c s) :
                it, f i s

                Sum of elements in a Subfield indexed by a Finset is in the Subfield.

                theorem Subfield.pow_mem {K : Type u} [DivisionRing K] (s : Subfield K) {x : K} (hx : x s) (n : ) :
                x ^ n s
                theorem Subfield.zsmul_mem {K : Type u} [DivisionRing K] (s : Subfield K) {x : K} (hx : x s) (n : ) :
                n x s
                theorem Subfield.intCast_mem {K : Type u} [DivisionRing K] (s : Subfield K) (n : ) :
                n s
                @[deprecated intCast_mem]
                theorem Subfield.coe_int_mem {R : Type u} {S : Type v} [Ring R] [SetLike S R] [hSR : SubringClass S R] (s : S) (n : ) :
                n s

                Alias of intCast_mem.

                theorem Subfield.zpow_mem {K : Type u} [DivisionRing K] (s : Subfield K) {x : K} (hx : x s) (n : ) :
                x ^ n s
                instance Subfield.instRingSubtypeMem {K : Type u} [DivisionRing K] (s : Subfield K) :
                Ring s
                Equations
                • s.instRingSubtypeMem = s.toRing
                instance Subfield.instDivSubtypeMem {K : Type u} [DivisionRing K] (s : Subfield K) :
                Div s
                Equations
                • s.instDivSubtypeMem = { div := fun (x y : s) => x / y, }
                instance Subfield.instInvSubtypeMem {K : Type u} [DivisionRing K] (s : Subfield K) :
                Inv s
                Equations
                • s.instInvSubtypeMem = { inv := fun (x : s) => (↑x)⁻¹, }
                instance Subfield.instPowSubtypeMemInt {K : Type u} [DivisionRing K] (s : Subfield K) :
                Pow s
                Equations
                • s.instPowSubtypeMemInt = { pow := fun (x : s) (z : ) => x ^ z, }
                Equations
                instance Subfield.toField {K : Type u_1} [Field K] (s : Subfield K) :
                Field s

                A subfield inherits a field structure

                Equations
                @[simp]
                theorem Subfield.coe_add {K : Type u} [DivisionRing K] (s : Subfield K) (x : s) (y : s) :
                (x + y) = x + y
                @[simp]
                theorem Subfield.coe_sub {K : Type u} [DivisionRing K] (s : Subfield K) (x : s) (y : s) :
                (x - y) = x - y
                @[simp]
                theorem Subfield.coe_neg {K : Type u} [DivisionRing K] (s : Subfield K) (x : s) :
                (-x) = -x
                @[simp]
                theorem Subfield.coe_mul {K : Type u} [DivisionRing K] (s : Subfield K) (x : s) (y : s) :
                (x * y) = x * y
                @[simp]
                theorem Subfield.coe_div {K : Type u} [DivisionRing K] (s : Subfield K) (x : s) (y : s) :
                (x / y) = x / y
                @[simp]
                theorem Subfield.coe_inv {K : Type u} [DivisionRing K] (s : Subfield K) (x : s) :
                x⁻¹ = (↑x)⁻¹
                @[simp]
                theorem Subfield.coe_zero {K : Type u} [DivisionRing K] (s : Subfield K) :
                0 = 0
                @[simp]
                theorem Subfield.coe_one {K : Type u} [DivisionRing K] (s : Subfield K) :
                1 = 1
                def Subfield.subtype {K : Type u} [DivisionRing K] (s : Subfield K) :
                s →+* K

                The embedding from a subfield of the field K to K.

                Equations
                • s.subtype = { toFun := Subtype.val, map_one' := , map_mul' := , map_zero' := , map_add' := }
                Instances For
                  @[simp]
                  theorem Subfield.coe_subtype {K : Type u} [DivisionRing K] (s : Subfield K) :
                  s.subtype = Subtype.val
                  theorem Subfield.toSubring_subtype_eq_subtype (K : Type u) [DivisionRing K] (S : Subfield K) :
                  S.subtype = S.subtype

                  Partial order #

                  theorem Subfield.mem_toSubmonoid {K : Type u} [DivisionRing K] {s : Subfield K} {x : K} :
                  x s.toSubmonoid x s
                  @[simp]
                  theorem Subfield.coe_toSubmonoid {K : Type u} [DivisionRing K] (s : Subfield K) :
                  s.toSubmonoid = s
                  @[simp]
                  theorem Subfield.mem_toAddSubgroup {K : Type u} [DivisionRing K] {s : Subfield K} {x : K} :
                  x s.toAddSubgroup x s
                  @[simp]
                  theorem Subfield.coe_toAddSubgroup {K : Type u} [DivisionRing K] (s : Subfield K) :
                  s.toAddSubgroup = s

                  top #

                  instance Subfield.instTop {K : Type u} [DivisionRing K] :

                  The subfield of K containing all elements of K.

                  Equations
                  • Subfield.instTop = { top := let __src := ; { toSubring := __src, inv_mem' := } }
                  Equations
                  • Subfield.instInhabited = { default := }
                  @[simp]
                  theorem Subfield.mem_top {K : Type u} [DivisionRing K] (x : K) :
                  @[simp]
                  theorem Subfield.coe_top {K : Type u} [DivisionRing K] :
                  = Set.univ

                  The ring equiv between the top element of Subfield K and K.

                  Equations
                  • Subfield.topEquiv = Subsemiring.topEquiv
                  Instances For

                    comap #

                    def Subfield.comap {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (f : K →+* L) (s : Subfield L) :

                    The preimage of a subfield along a ring homomorphism is a subfield.

                    Equations
                    Instances For
                      @[simp]
                      theorem Subfield.coe_comap {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (f : K →+* L) (s : Subfield L) :
                      (Subfield.comap f s) = f ⁻¹' s
                      @[simp]
                      theorem Subfield.mem_comap {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] {s : Subfield L} {f : K →+* L} {x : K} :
                      theorem Subfield.comap_comap {K : Type u} {L : Type v} {M : Type w} [DivisionRing K] [DivisionRing L] [DivisionRing M] (s : Subfield M) (g : L →+* M) (f : K →+* L) :

                      map #

                      def Subfield.map {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (f : K →+* L) (s : Subfield K) :

                      The image of a subfield along a ring homomorphism is a subfield.

                      Equations
                      Instances For
                        @[simp]
                        theorem Subfield.coe_map {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (s : Subfield K) (f : K →+* L) :
                        (Subfield.map f s) = f '' s
                        @[simp]
                        theorem Subfield.mem_map {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] {f : K →+* L} {s : Subfield K} {y : L} :
                        y Subfield.map f s xs, f x = y
                        theorem Subfield.map_map {K : Type u} {L : Type v} {M : Type w} [DivisionRing K] [DivisionRing L] [DivisionRing M] (s : Subfield K) (g : L →+* M) (f : K →+* L) :
                        theorem Subfield.map_le_iff_le_comap {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] {f : K →+* L} {s : Subfield K} {t : Subfield L} :

                        range #

                        def RingHom.fieldRange {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (f : K →+* L) :

                        The range of a ring homomorphism, as a subfield of the target. See Note [range copy pattern].

                        Equations
                        Instances For
                          @[simp]
                          theorem RingHom.coe_fieldRange {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (f : K →+* L) :
                          f.fieldRange = Set.range f
                          @[simp]
                          theorem RingHom.mem_fieldRange {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] {f : K →+* L} {y : L} :
                          y f.fieldRange ∃ (x : K), f x = y
                          theorem RingHom.fieldRange_eq_map {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (f : K →+* L) :
                          f.fieldRange = Subfield.map f
                          theorem RingHom.map_fieldRange {K : Type u} {L : Type v} {M : Type w} [DivisionRing K] [DivisionRing L] [DivisionRing M] (g : L →+* M) (f : K →+* L) :
                          Subfield.map g f.fieldRange = (g.comp f).fieldRange
                          theorem RingHom.mem_fieldRange_self {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (f : K →+* L) (x : K) :
                          f x f.fieldRange
                          theorem RingHom.fieldRange_eq_top_iff {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] {f : K →+* L} :
                          f.fieldRange = Function.Surjective f
                          instance RingHom.fintypeFieldRange {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] [Fintype K] [DecidableEq L] (f : K →+* L) :
                          Fintype f.fieldRange

                          The range of a morphism of fields is a fintype, if the domain is a fintype.

                          Note that this instance can cause a diamond with Subtype.Fintype if L is also a fintype.

                          Equations

                          inf #

                          instance Subfield.instInf {K : Type u} [DivisionRing K] :

                          The inf of two subfields is their intersection.

                          Equations
                          • Subfield.instInf = { inf := fun (s t : Subfield K) => let __src := s.toSubring t.toSubring; { toSubring := __src, inv_mem' := } }
                          @[simp]
                          theorem Subfield.coe_inf {K : Type u} [DivisionRing K] (p : Subfield K) (p' : Subfield K) :
                          (p p') = p.carrier p'.carrier
                          @[simp]
                          theorem Subfield.mem_inf {K : Type u} [DivisionRing K] {p : Subfield K} {p' : Subfield K} {x : K} :
                          x p p' x p x p'
                          Equations
                          • Subfield.instInfSet = { sInf := fun (S : Set (Subfield K)) => let __src := sInf (Subfield.toSubring '' S); { toSubring := __src, inv_mem' := } }
                          @[simp]
                          theorem Subfield.coe_sInf {K : Type u} [DivisionRing K] (S : Set (Subfield K)) :
                          (sInf S) = sS, s
                          theorem Subfield.mem_sInf {K : Type u} [DivisionRing K] {S : Set (Subfield K)} {x : K} :
                          x sInf S pS, x p
                          @[simp]
                          theorem Subfield.coe_iInf {K : Type u} [DivisionRing K] {ι : Sort u_1} {S : ιSubfield K} :
                          (⨅ (i : ι), S i) = ⋂ (i : ι), (S i)
                          theorem Subfield.mem_iInf {K : Type u} [DivisionRing K] {ι : Sort u_1} {S : ιSubfield K} {x : K} :
                          x ⨅ (i : ι), S i ∀ (i : ι), x S i
                          @[simp]
                          theorem Subfield.sInf_toSubring {K : Type u} [DivisionRing K] (s : Set (Subfield K)) :
                          (sInf s).toSubring = ts, t.toSubring
                          theorem Subfield.isGLB_sInf {K : Type u} [DivisionRing K] (S : Set (Subfield K)) :
                          IsGLB S (sInf S)

                          Subfields of a ring form a complete lattice.

                          Equations

                          subfield closure of a subset #

                          def Subfield.closure {K : Type u} [DivisionRing K] (s : Set K) :

                          The Subfield generated by a set.

                          Equations
                          Instances For
                            theorem Subfield.mem_closure {K : Type u} [DivisionRing K] {x : K} {s : Set K} :
                            x Subfield.closure s ∀ (S : Subfield K), s Sx S
                            @[simp]
                            theorem Subfield.subset_closure {K : Type u} [DivisionRing K] {s : Set K} :

                            The subfield generated by a set includes the set.

                            theorem Subfield.not_mem_of_not_mem_closure {K : Type u} [DivisionRing K] {s : Set K} {P : K} (hP : PSubfield.closure s) :
                            Ps
                            @[simp]
                            theorem Subfield.closure_le {K : Type u} [DivisionRing K] {s : Set K} {t : Subfield K} :

                            A subfield t includes closure s if and only if it includes s.

                            theorem Subfield.closure_mono {K : Type u} [DivisionRing K] ⦃s : Set K ⦃t : Set K (h : s t) :

                            Subfield closure of a set is monotone in its argument: if s ⊆ t, then closure s ≤ closure t.

                            theorem Subfield.closure_eq_of_le {K : Type u} [DivisionRing K] {s : Set K} {t : Subfield K} (h₁ : s t) (h₂ : t Subfield.closure s) :
                            theorem Subfield.closure_induction {K : Type u} [DivisionRing K] {s : Set K} {p : (x : K) → x Subfield.closure sProp} (mem : ∀ (x : K) (hx : x s), p x ) (one : p 1 ) (add : ∀ (x y : K) (hx : x Subfield.closure s) (hy : y Subfield.closure s), p x hxp y hyp (x + y) ) (neg : ∀ (x : K) (hx : x Subfield.closure s), p x hxp (-x) ) (inv : ∀ (x : K) (hx : x Subfield.closure s), p x hxp x⁻¹ ) (mul : ∀ (x y : K) (hx : x Subfield.closure s) (hy : y Subfield.closure s), p x hxp y hyp (x * y) ) {x : K} (h : x Subfield.closure s) :
                            p x h

                            An induction principle for closure membership. If p holds for 1, and all elements of s, and is preserved under addition, negation, and multiplication, then p holds for all elements of the closure of s.

                            def Subfield.gi (K : Type u) [DivisionRing K] :
                            GaloisInsertion Subfield.closure SetLike.coe

                            closure forms a Galois insertion with the coercion to set.

                            Equations
                            Instances For
                              theorem Subfield.closure_eq {K : Type u} [DivisionRing K] (s : Subfield K) :

                              Closure of a subfield S equals S.

                              @[simp]
                              theorem Subfield.closure_iUnion {K : Type u} [DivisionRing K] {ι : Sort u_1} (s : ιSet K) :
                              Subfield.closure (⋃ (i : ι), s i) = ⨆ (i : ι), Subfield.closure (s i)
                              theorem Subfield.map_sup {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (s : Subfield K) (t : Subfield K) (f : K →+* L) :
                              theorem Subfield.map_iSup {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] {ι : Sort u_1} (f : K →+* L) (s : ιSubfield K) :
                              Subfield.map f (iSup s) = ⨆ (i : ι), Subfield.map f (s i)
                              theorem Subfield.map_inf {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (s : Subfield K) (t : Subfield K) (f : K →+* L) :
                              theorem Subfield.map_iInf {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] {ι : Sort u_1} [Nonempty ι] (f : K →+* L) (s : ιSubfield K) :
                              Subfield.map f (iInf s) = ⨅ (i : ι), Subfield.map f (s i)
                              theorem Subfield.comap_inf {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (s : Subfield L) (t : Subfield L) (f : K →+* L) :
                              theorem Subfield.comap_iInf {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] {ι : Sort u_1} (f : K →+* L) (s : ιSubfield L) :
                              Subfield.comap f (iInf s) = ⨅ (i : ι), Subfield.comap f (s i)
                              @[simp]
                              theorem Subfield.map_bot {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (f : K →+* L) :
                              @[simp]
                              theorem Subfield.comap_top {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (f : K →+* L) :
                              theorem Subfield.mem_iSup_of_directed {K : Type u} [DivisionRing K] {ι : Sort u_1} [hι : Nonempty ι] {S : ιSubfield K} (hS : Directed (fun (x1 x2 : Subfield K) => x1 x2) S) {x : K} :
                              x ⨆ (i : ι), S i ∃ (i : ι), x S i

                              The underlying set of a non-empty directed sSup of subfields is just a union of the subfields. Note that this fails without the directedness assumption (the union of two subfields is typically not a subfield)

                              theorem Subfield.coe_iSup_of_directed {K : Type u} [DivisionRing K] {ι : Sort u_1} [hι : Nonempty ι] {S : ιSubfield K} (hS : Directed (fun (x1 x2 : Subfield K) => x1 x2) S) :
                              (⨆ (i : ι), S i) = ⋃ (i : ι), (S i)
                              theorem Subfield.mem_sSup_of_directedOn {K : Type u} [DivisionRing K] {S : Set (Subfield K)} (Sne : S.Nonempty) (hS : DirectedOn (fun (x1 x2 : Subfield K) => x1 x2) S) {x : K} :
                              x sSup S sS, x s
                              theorem Subfield.coe_sSup_of_directedOn {K : Type u} [DivisionRing K] {S : Set (Subfield K)} (Sne : S.Nonempty) (hS : DirectedOn (fun (x1 x2 : Subfield K) => x1 x2) S) :
                              (sSup S) = sS, s
                              def RingHom.rangeRestrictField {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (f : K →+* L) :
                              K →+* f.fieldRange

                              Restriction of a ring homomorphism to its range interpreted as a subfield.

                              Equations
                              • f.rangeRestrictField = f.rangeSRestrict
                              Instances For
                                @[simp]
                                theorem RingHom.coe_rangeRestrictField {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (f : K →+* L) (x : K) :
                                (f.rangeRestrictField x) = f x
                                def RingHom.eqLocusField {K : Type u} [DivisionRing K] {L : Type v} [Semiring L] (f : K →+* L) (g : K →+* L) :

                                The subfield of elements x : R such that f x = g x, i.e., the equalizer of f and g as a subfield of R

                                Equations
                                • f.eqLocusField g = { carrier := {x : K | f x = g x}, mul_mem' := , one_mem' := , add_mem' := , zero_mem' := , neg_mem' := , inv_mem' := }
                                Instances For
                                  theorem RingHom.eqOn_field_closure {K : Type u} [DivisionRing K] {L : Type v} [Semiring L] {f : K →+* L} {g : K →+* L} {s : Set K} (h : Set.EqOn (⇑f) (⇑g) s) :
                                  Set.EqOn f g (Subfield.closure s)

                                  If two ring homomorphisms are equal on a set, then they are equal on its subfield closure.

                                  theorem RingHom.eq_of_eqOn_subfield_top {K : Type u} [DivisionRing K] {L : Type v} [Semiring L] {f : K →+* L} {g : K →+* L} (h : Set.EqOn f g ) :
                                  f = g
                                  theorem RingHom.eq_of_eqOn_of_field_closure_eq_top {K : Type u} [DivisionRing K] {L : Type v} [Semiring L] {s : Set K} (hs : Subfield.closure s = ) {f : K →+* L} {g : K →+* L} (h : Set.EqOn (⇑f) (⇑g) s) :
                                  f = g
                                  theorem RingHom.map_field_closure {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (f : K →+* L) (s : Set K) :

                                  The image under a ring homomorphism of the subfield generated by a set equals the subfield generated by the image of the set.

                                  def Subfield.inclusion {K : Type u} [DivisionRing K] {S : Subfield K} {T : Subfield K} (h : S T) :
                                  S →+* T

                                  The ring homomorphism associated to an inclusion of subfields.

                                  Equations
                                  Instances For
                                    @[simp]
                                    theorem Subfield.fieldRange_subtype {K : Type u} [DivisionRing K] (s : Subfield K) :
                                    s.subtype.fieldRange = s
                                    def RingEquiv.subfieldCongr {K : Type u} [DivisionRing K] {s : Subfield K} {t : Subfield K} (h : s = t) :
                                    s ≃+* t

                                    Makes the identity isomorphism from a proof two subfields of a multiplicative monoid are equal.

                                    Equations
                                    Instances For
                                      theorem Subfield.multiset_prod_mem {K : Type u} [Field K] (s : Subfield K) (m : Multiset K) :
                                      (∀ am, a s)m.prod s

                                      Product of a multiset of elements in a subfield is in the subfield.

                                      theorem Subfield.prod_mem {K : Type u} [Field K] (s : Subfield K) {ι : Type u_1} {t : Finset ι} {f : ιK} (h : ct, f c s) :
                                      it, f i s

                                      Product of elements of a subfield indexed by a Finset is in the subfield.

                                      instance Subfield.toAlgebra {K : Type u} [Field K] (s : Subfield K) :
                                      Algebra (↥s) K
                                      Equations
                                      • s.toAlgebra = s.subtype.toAlgebra
                                      theorem Subfield.mem_closure_iff {K : Type u} [Field K] {s : Set K} {x : K} :
                                      x Subfield.closure s ySubring.closure s, zSubring.closure s, y / z = x
                                      theorem Subfield.map_comap_eq {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (f : K →+* L) (s : Subfield L) :
                                      Subfield.map f (Subfield.comap f s) = s f.fieldRange
                                      theorem Subfield.map_comap_eq_self {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] {f : K →+* L} {s : Subfield L} (h : s f.fieldRange) :
                                      theorem Subfield.comap_map {K : Type u} {L : Type v} [DivisionRing K] [DivisionRing L] (f : K →+* L) (s : Subfield K) :

                                      Actions by Subfields #

                                      These are just copies of the definitions about Subsemiring starting from Subsemiring.MulAction.

                                      instance Subfield.instSMulSubtypeMem {K : Type u} [DivisionRing K] {X : Type u_1} [SMul K X] (F : Subfield K) :
                                      SMul (↥F) X

                                      The action by a subfield is the action by the underlying field.

                                      Equations
                                      theorem Subfield.smul_def {K : Type u} [DivisionRing K] {X : Type u_1} [SMul K X] {F : Subfield K} (g : F) (m : X) :
                                      g m = g m
                                      instance Subfield.smulCommClass_left {K : Type u} [DivisionRing K] {X : Type u_2} {Y : Type u_1} [SMul K Y] [SMul X Y] [SMulCommClass K X Y] (F : Subfield K) :
                                      SMulCommClass (↥F) X Y
                                      Equations
                                      • =
                                      instance Subfield.smulCommClass_right {K : Type u} [DivisionRing K] {X : Type u_1} {Y : Type u_2} [SMul X Y] [SMul K Y] [SMulCommClass X K Y] (F : Subfield K) :
                                      SMulCommClass X (↥F) Y
                                      Equations
                                      • =
                                      instance Subfield.instIsScalarTowerSubtypeMem {K : Type u} [DivisionRing K] {X : Type u_1} {Y : Type u_2} [SMul X Y] [SMul K X] [SMul K Y] [IsScalarTower K X Y] (F : Subfield K) :
                                      IsScalarTower (↥F) X Y

                                      Note that this provides IsScalarTower F K K which is needed by smul_mul_assoc.

                                      Equations
                                      • =
                                      instance Subfield.instFaithfulSMulSubtypeMem {K : Type u} [DivisionRing K] {X : Type u_1} [SMul K X] [FaithfulSMul K X] (F : Subfield K) :
                                      FaithfulSMul (↥F) X
                                      Equations
                                      • =
                                      instance Subfield.instMulActionSubtypeMem {K : Type u} [DivisionRing K] {X : Type u_1} [MulAction K X] (F : Subfield K) :
                                      MulAction (↥F) X

                                      The action by a subfield is the action by the underlying field.

                                      Equations

                                      The action by a subfield is the action by the underlying field.

                                      Equations

                                      The action by a subfield is the action by the underlying field.

                                      Equations
                                      instance Subfield.instSMulWithZeroSubtypeMem {K : Type u} [DivisionRing K] {X : Type u_1} [Zero X] [SMulWithZero K X] (F : Subfield K) :
                                      SMulWithZero (↥F) X

                                      The action by a subfield is the action by the underlying field.

                                      Equations

                                      The action by a subfield is the action by the underlying field.

                                      Equations
                                      instance Subfield.instModuleSubtypeMem {K : Type u} [DivisionRing K] {X : Type u_1} [AddCommMonoid X] [Module K X] (F : Subfield K) :
                                      Module (↥F) X

                                      The action by a subfield is the action by the underlying field.

                                      Equations

                                      The action by a subfield is the action by the underlying field.

                                      Equations