Documentation

Mathlib.FieldTheory.CardinalEmb

Number of embeddings of an algebraic extension of infinite separable degree #

Main results #

Sketch of the proof #

We use a transfinite recursive construction that is fairly standard in set theory, but the author has not seen similar arguments elsewhere in mathlib, and some parts proved tricky to formalize.

The extension E/F can be filtered by intermediate fields indexed by a well-order: simply put a well-order on a basis of E/F, and at each step, take the smallest basis element that is not contained in the intermediate field generated by all previous elements, so that they generate a strictly larger intermediate field together. This process can extend all the way to the initial ordinal ι of the cardinal Module.rank F E, because the dimension of the subalgebra generated by an infinite set cannot be greater than the cardinality of the set, and in an algebraic extension, any subalgebra is a field. This is proven as Algebra.rank_adjoin_le and used to show leastExt is a total function from ι to itself. It is probably mathematically the most nontrivial part of the whole argument, but turned out easy to formalize and was done the earliest.

Once we have the filtration E⟮<i⟯ for i : ι, we may build an embedding E →ₐ[F] Ē step by step. To extend an embedding E⟮<i⟯ →ₐ[F] Ē to the successor E⟮<i⁺⟯, the number of choices is equal to the (finite) separable degree of E⟮<i⁺⟯ / E⟮<i⟯, which is equal to its rank if E/F is separable. Since each extension is nontrivial, the degree is at least two (two_le_deg) but always finite. Intuitively, these choices multiply together to give the cardinality of Field.Emb F E := (E →ₐ[F] Ē), and since the total times of choices to be made is the length of the filtration , we conclude that 2 ^ #ι ≤ #(Field.Emb F E) ≤ ℵ₀ ^ #ι, but for infinite both sides are equal, so we get an equality #(Field.Emb F E) = 2 ^ #ι = 2 ^ Module.rank F E.

To rigorize the argument we formalize the choice at step i as a bijection F i⁺ ≃ F i × X i, where X i := Field.Emb E⟮<i⟯ E⟮<i⁺⟯, and we formalize the combination of all choices as the Pi type ∀ i : ι, X i. We use transfinite recursion (SuccOrder.prelimitRecOn) to build a bijection Field.Emb F E ≃ ∀ i, X i with the Pi type by successively extending bijections F i ≃ ∀ j : Iio i, X j using the bijections F i⁺ ≃ F i × X i with product types (InverseSystem.piEquivSucc). More details are found in the file about InverseLimit. Since ι is a limit ordinal, Field.Emb F E ≃ (⊤ →ₐ[F] Ē) is not actually one of the F i because is not one of the E⟮<i⟯, so we have to adjoin a top element to ι (WithTop ι) to obtain the bijection Field.Emb F E ≃ F ⊤ ≃ ∀ j : Iio ⊤, X j ≃ ∀ i : ι, X i = ∀ i : ι, Field.Emb E⟮<i⟯ E⟮<i⁺⟯. To make this straightforward, it is crucial that (↑i : WithTop ι)⁺ = ↑(i⁺) holds definitionally.

The predicate IsSuccPrelimit allows us to treat limits and the bottom element uniformly, and the only place the bottom element requires special treatment is in equivLim (the bijection between E⟮<i⟯ →ₐ[F] Ē and the inverse limit of E⟮<j⟯ →ₐ[F] Ē over j < i).

def Field.Emb.Cardinal.wellOrderedBasis (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] :
Basis (Module.rank F E).ord.toType F E

A basis of E/F indexed by the initial ordinal.

Equations
Instances For
    theorem Field.Emb.Cardinal.noMaxOrder_rank_toType {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] [rank_inf : Fact (Cardinal.aleph0 Module.rank F E)] :
    NoMaxOrder (Module.rank F E).ord.toType
    def Field.Emb.Cardinal.leastExt (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] [rank_inf : Fact (Cardinal.aleph0 Module.rank F E)] [Algebra.IsAlgebraic F E] :
    (Module.rank F E).ord.toType(Module.rank F E).ord.toType

    leastExt i is defined to be the smallest k : ι that generates a nontrival extension over (i.e. does not lie in) the subalgebra (= intermediate field) generated by all previous leastExt j, j < i. For cardinality reasons, such k always exist if ι is infinite.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      Extend the family E⟮<i⟯, i : ι by adjoining a top element.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        @[simp]
        theorem Field.Emb.Cardinal.filtration_apply {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] [rank_inf : Fact (Cardinal.aleph0 Module.rank F E)] [Algebra.IsAlgebraic F E] (i : WithTop (Module.rank F E).ord.toType) :
        Field.Emb.Cardinal.filtration i = WithTop.recTopCoe (fun (x : (Module.rank F E).ord.toType) => IntermediateField.adjoin F ((fun (a : (Module.rank F E).ord.toType) => (Field.Emb.Cardinal.wellOrderedBasis F E) (Field.Emb.Cardinal.leastExt F E a)) '' Set.Iio x)) i
        def Field.Emb.Cardinal.factor {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] [rank_inf : Fact (Cardinal.aleph0 Module.rank F E)] [Algebra.IsAlgebraic F E] (i : WithTop (Module.rank F E).ord.toType) :

        Extend the family X i := E⟮<i⟯ →ₐ[F] Ē from ι to WithTop ι.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          def Field.Emb.Cardinal.embFunctor (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] [rank_inf : Fact (Cardinal.aleph0 Module.rank F E)] [Algebra.IsAlgebraic F E] ⦃i j : WithTop (Module.rank F E).ord.toType (h : i j) (f : (Field.Emb.Cardinal.filtration j) →ₐ[F] AlgebraicClosure E) :
          (Field.Emb.Cardinal.filtration i) →ₐ[F] AlgebraicClosure E

          The functor on WithTop ι given by embeddings of E⟮<i⟯ into Ē

          Equations
          Instances For
            def Field.Emb.Cardinal.equivSucc {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] [rank_inf : Fact (Cardinal.aleph0 Module.rank F E)] [Algebra.IsAlgebraic F E] (i : WithTop (Module.rank F E).ord.toType) :
            ((Field.Emb.Cardinal.filtration (Order.succ i)) →ₐ[F] AlgebraicClosure E) ((Field.Emb.Cardinal.filtration i) →ₐ[F] AlgebraicClosure E) × Field.Emb.Cardinal.factor i

            Extend succEquiv from ι to WithTop ι.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem Field.Emb.Cardinal.equivSucc_coherence {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] [rank_inf : Fact (Cardinal.aleph0 Module.rank F E)] [Algebra.IsAlgebraic F E] (i : WithTop (Module.rank F E).ord.toType) (f : (Field.Emb.Cardinal.filtration (Order.succ i)) →ₐ[F] AlgebraicClosure E) :
              theorem Field.Emb.Cardinal.directed_filtration {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] [rank_inf : Fact (Cardinal.aleph0 Module.rank F E)] [Algebra.IsAlgebraic F E] {i : WithTop (Module.rank F E).ord.toType} :
              Directed (fun (x1 x2 : IntermediateField F E) => x1 x2) fun (j : (Set.Iio i)) => Field.Emb.Cardinal.filtration j
              theorem Field.Emb.Cardinal.iSup_filtration {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] [rank_inf : Fact (Cardinal.aleph0 Module.rank F E)] [Algebra.IsAlgebraic F E] {i : WithTop (Module.rank F E).ord.toType} (hi : Order.IsSuccPrelimit i) :
              ⨆ (j : (Set.Iio i)), Field.Emb.Cardinal.filtration j = Field.Emb.Cardinal.filtration i
              theorem Field.Emb.Cardinal.eq_bot_of_not_nonempty {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] [rank_inf : Fact (Cardinal.aleph0 Module.rank F E)] [Algebra.IsAlgebraic F E] {i : WithTop (Module.rank F E).ord.toType} (hi : Order.IsSuccPrelimit i) :
              ¬Nonempty (Set.Iio i)Field.Emb.Cardinal.filtration i =
              def Field.Emb.Cardinal.equivLim {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] [rank_inf : Fact (Cardinal.aleph0 Module.rank F E)] [Algebra.IsAlgebraic F E] {i : WithTop (Module.rank F E).ord.toType} (hi : Order.IsSuccPrelimit i) :
              ((Field.Emb.Cardinal.filtration i) →ₐ[F] AlgebraicClosure E) (InverseSystem.limit (Field.Emb.Cardinal.embFunctor F E) i)

              If i is a limit, the type of embeddings of E⟮<i⟯ into Ē is the limit of the types of embeddings of E⟮<j⟯ for j < i.

              Instances For
                theorem Field.Emb.Cardinal.equivLim_coherence {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] [rank_inf : Fact (Cardinal.aleph0 Module.rank F E)] [Algebra.IsAlgebraic F E] {i : WithTop (Module.rank F E).ord.toType} (hi : Order.IsSuccPrelimit i) (x : (Field.Emb.Cardinal.filtration i) →ₐ[F] AlgebraicClosure E) (l : (Set.Iio i)) :
                def Field.Emb.Cardinal.embEquivPi {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] [rank_inf : Fact (Cardinal.aleph0 Module.rank F E)] [Algebra.IsAlgebraic F E] :
                Field.Emb F E ((i : (Module.rank F E).ord.toType) → Field.Emb.Cardinal.factor i)

                A bijection between E →ₐ[F] Ē and the product of E⟮<i⁺⟯ →ₐ[E⟮<i⟯] Ē over all i : ι.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem Field.Emb.cardinal_eq_of_isSeparable {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] [Algebra.IsSeparable F E] :
                  Cardinal.mk (Field.Emb F E) = (fun (c : Cardinal.{v}) => if Cardinal.aleph0 c then 2 ^ c else c) (Module.rank F E)
                  theorem Field.Emb.cardinal_eq {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] [Algebra.IsAlgebraic F E] :
                  Cardinal.mk (Field.Emb F E) = (fun (c : Cardinal.{v}) => if Cardinal.aleph0 c then 2 ^ c else c) (Field.sepDegree F E)