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)
Subfield K: the type of subfields of a division ringK.
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
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
- SubfieldClass.instNNRatCast s = { nnratCast := fun (q : ℚ≥0) => ⟨↑q, ⋯⟩ }
Equations
- SubfieldClass.instRatCast s = { ratCast := fun (q : ℚ) => ⟨↑q, ⋯⟩ }
Equations
- SubfieldClass.instSMulNNRat s = { smul := fun (q : ℚ≥0) (x : ↥s) => ⟨q • ↑x, ⋯⟩ }
Equations
- SubfieldClass.instSMulRat s = { smul := fun (q : ℚ) (x : ↥s) => ⟨q • ↑x, ⋯⟩ }
A subfield inherits a division ring structure
Equations
- SubfieldClass.toDivisionRing S s = DivisionRing.mk ⋯ GroupWithZero.zpow ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ DivisionSemiring.nnqsmul ⋯ ⋯ (fun (x1 : ℚ) (x2 : ↥s) => x1 • x2) ⋯
A subfield of a field inherits a field structure
Equations
- SubfieldClass.toField S s = Field.mk ⋯ DivisionRing.zpow ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ DivisionRing.nnqsmul ⋯ ⋯ DivisionRing.qsmul ⋯
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.
Stacks Tag 09FD (second part)
A subfield is closed under multiplicative inverses.
Instances For
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' := ⋯ }
Two subfields are equal if they have the same elements.
Copy of a subfield with a new carrier equal to the old one. Useful to fix definitional
equalities.
Equations
Instances For
A Subring containing inverses is a Subfield.
Equations
- s.toSubfield hinv = { toSubring := s, inv_mem' := hinv }
Instances For
A subfield contains the field's 1.
A subfield contains the field's 0.
A subfield is closed under multiplication.
A subfield is closed under addition.
A subfield is closed under negation.
A subfield is closed under subtraction.
A subfield is closed under inverses.
A subfield is closed under division.
Equations
Equations
- s.instDivSubtypeMem = { div := fun (x y : ↥s) => ⟨↑x / ↑y, ⋯⟩ }
Equations
- s.instInvSubtypeMem = { inv := fun (x : ↥s) => ⟨(↑x)⁻¹, ⋯⟩ }
Equations
- s.instPowSubtypeMemInt = { pow := fun (x : ↥s) (z : ℤ) => ⟨↑x ^ z, ⋯⟩ }
Equations
A subfield inherits a field structure
Equations
- s.toField = SubfieldClass.toField (Subfield K) s
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' := ⋯ }