@@ -603,13 +603,68 @@ end RestrictScalars
603
603
/-- This was formerly an instance called `lift2_alg`, but an instance above already provides it. -/
604
604
example {F : IntermediateField K L} {E : IntermediateField F L} : Algebra K E := by infer_instance
605
605
606
+ end Tower
607
+
608
+ end IntermediateField
609
+
606
610
section ExtendScalars
607
611
612
+ namespace Subfield
613
+
614
+ variable {F E E' : Subfield L} (h : F ≤ E) (h' : F ≤ E') {x : L}
615
+
616
+ /-- If `F ≤ E` are two subfields of `L`, then `E` is also an intermediate field of
617
+ `L / F`. It can be viewed as an inverse to `IntermediateField.toSubfield`. -/
618
+ def extendScalars : IntermediateField F L := E.toIntermediateField fun ⟨_, hf⟩ ↦ h hf
619
+
620
+ @[simp]
621
+ theorem coe_extendScalars : (extendScalars h : Set L) = (E : Set L) := rfl
622
+
623
+ @[simp]
624
+ theorem extendScalars_toSubfield : (extendScalars h).toSubfield = E := SetLike.coe_injective rfl
625
+
626
+ @[simp]
627
+ theorem mem_extendScalars : x ∈ extendScalars h ↔ x ∈ E := Iff.rfl
628
+
629
+ theorem extendScalars_le_extendScalars_iff : extendScalars h ≤ extendScalars h' ↔ E ≤ E' := Iff.rfl
630
+
631
+ theorem extendScalars_le_iff (E' : IntermediateField F L) :
632
+ extendScalars h ≤ E' ↔ E ≤ E'.toSubfield := Iff.rfl
633
+
634
+ theorem le_extendScalars_iff (E' : IntermediateField F L) :
635
+ E' ≤ extendScalars h ↔ E'.toSubfield ≤ E := Iff.rfl
636
+
637
+ variable (F)
638
+
639
+ /-- `Subfield.extendScalars.orderIso` bundles `Subfield.extendScalars`
640
+ into an order isomorphism from
641
+ `{ E : Subfield L // F ≤ E }` to `IntermediateField F L`. Its inverse is
642
+ `IntermediateField.toSubfield`. -/
643
+ @[simps]
644
+ def extendScalars.orderIso :
645
+ { E : Subfield L // F ≤ E } ≃o IntermediateField F L where
646
+ toFun E := extendScalars E.2
647
+ invFun E := ⟨E.toSubfield, fun x hx ↦ E.algebraMap_mem ⟨x, hx⟩⟩
648
+ left_inv E := rfl
649
+ right_inv E := rfl
650
+ map_rel_iff' {E E'} := by
651
+ simp only [Equiv.coe_fn_mk]
652
+ exact extendScalars_le_extendScalars_iff _ _
653
+
654
+ theorem extendScalars_injective :
655
+ Function.Injective fun E : { E : Subfield L // F ≤ E } ↦ extendScalars E.2 :=
656
+ (extendScalars.orderIso F).injective
657
+
658
+ end Subfield
659
+
660
+ namespace IntermediateField
661
+
608
662
variable {F E E' : IntermediateField K L} (h : F ≤ E) (h' : F ≤ E') {x : L}
609
663
610
664
/-- If `F ≤ E` are two intermediate fields of `L / K`, then `E` is also an intermediate field of
611
665
`L / F`. It can be viewed as an inverse to `IntermediateField.restrictScalars`. -/
612
- def extendScalars : IntermediateField F L := E.toSubfield.toIntermediateField fun ⟨_, hf⟩ ↦ h hf
666
+ def extendScalars : IntermediateField F L :=
667
+ Subfield.extendScalars (show F.toSubfield ≤ E.toSubfield from h)
613
668
614
669
@[simp]
615
670
theorem coe_extendScalars : (extendScalars h : Set L) = (E : Set L) := rfl
@@ -634,9 +689,11 @@ theorem le_extendScalars_iff (E' : IntermediateField F L) :
634
689
635
690
variable (F)
636
691
637
- /-- `IntermediateField.extendScalars` is an order isomorphism from
692
+ /-- `IntermediateField.extendScalars.orderIso` bundles `IntermediateField.extendScalars`
693
+ into an order isomorphism from
638
694
`{ E : IntermediateField K L // F ≤ E }` to `IntermediateField F L`. Its inverse is
639
695
`IntermediateField.restrictScalars`. -/
696
+ @[simps]
640
697
def extendScalars.orderIso : { E : IntermediateField K L // F ≤ E } ≃o IntermediateField F L where
641
698
toFun E := extendScalars E.2
642
699
invFun E := ⟨E.restrictScalars K, fun x hx ↦ E.algebraMap_mem ⟨x, hx⟩⟩
@@ -650,8 +707,16 @@ theorem extendScalars_injective :
650
707
Function.Injective fun E : { E : IntermediateField K L // F ≤ E } ↦ extendScalars E.2 :=
651
708
(extendScalars.orderIso F).injective
652
709
710
+ end IntermediateField
711
+
653
712
end ExtendScalars
654
713
714
+ namespace IntermediateField
715
+
716
+ variable {S}
717
+
718
+ section Tower
719
+
655
720
section Restrict
656
721
657
722
variable {F E : IntermediateField K L} (h : F ≤ E)
0 commit comments