Skip to content

Commit 54aa5b5

Browse files
committed
feat: elements of adjoin S are fixed by m iff elements of S are (leanprover-community#33989)
This PR proves: ```lean (∀ x ∈ adjoin F S, m • x = x) ↔ (∀ x ∈ S, m • x = x) ``` both in the `Algebra.adjoin` and `IntermediateField.adjoin` cases
1 parent 1b5be7f commit 54aa5b5

3 files changed

Lines changed: 29 additions & 4 deletions

File tree

Mathlib/Algebra/Algebra/Subalgebra/Lattice.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -819,6 +819,11 @@ theorem ext_of_eq_adjoin {S : Subalgebra R A} {s : Set A} (hS : S = adjoin R s)
819819
φ₁ = φ₂ := by
820820
subst hS; exact adjoin_ext h
821821

822+
theorem _root_.Algebra.forall_mem_adjoin_smul_eq_self_iff (S : Set A) {M : Type*} [Monoid M]
823+
[MulSemiringAction M A] [SMulCommClass M R A] (m : M) :
824+
(∀ x ∈ adjoin R S, m • x = x) ↔ (∀ x ∈ S, m • x = x) :=
825+
AlgHom.eqOn_adjoin_iff (φ := MulSemiringAction.toAlgHom R A m) (ψ := .id R A)
826+
822827
end AlgHom
823828

824829
section NatInt

Mathlib/FieldTheory/Fixed.lean

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ universe u v w
4242

4343
variable {M : Type u} [Monoid M]
4444
variable (G : Type u) [Group G]
45-
variable (F : Type v) [Field F] [MulSemiringAction M F] [MulSemiringAction G F] (m : M)
45+
variable (K : Type*) (F : Type v) [Field F] [MulSemiringAction M F] [MulSemiringAction G F] (m : M)
4646

47-
/-- The subfield of F fixed by the field endomorphism `m`. -/
47+
/-- The subfield of `F` fixed by the field endomorphism `m`. -/
4848
def FixedBy.subfield : Subfield F where
4949
carrier := fixedBy F m
5050
zero_mem' := smul_zero m
@@ -54,6 +54,21 @@ def FixedBy.subfield : Subfield F where
5454
mul_mem' hx hy := (smul_mul' m _ _).trans <| congr_arg₂ _ hx hy
5555
inv_mem' x hx := (smul_inv'' m x).trans <| congr_arg _ hx
5656

57+
@[simp]
58+
theorem FixedBy.subfield_mem_iff (x : F) :
59+
x ∈ FixedBy.subfield F m ↔ m • x = x := Iff.rfl
60+
61+
variable [Field K] [Algebra K F] [SMulCommClass M K F]
62+
63+
/-- The intermediate field between `K` and `F` fixed by the field endomorphism `m`. -/
64+
def FixedBy.intermediateField : IntermediateField K F where
65+
__ := FixedBy.subfield F m
66+
algebraMap_mem' x := smul_algebraMap m x
67+
68+
@[simp]
69+
theorem FixedBy.intermediateField_mem_iff (x : F) :
70+
x ∈ FixedBy.intermediateField K F m ↔ m • x = x := Iff.rfl
71+
5772
section InvariantSubfields
5873

5974
variable (M) {F}

Mathlib/FieldTheory/IntermediateField/Adjoin/Basic.lean

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ module
77

88
public import Mathlib.Algebra.Algebra.Subalgebra.Directed
99
public import Mathlib.Algebra.Algebra.Subalgebra.IsSimpleOrder
10-
public import Mathlib.FieldTheory.Separable
10+
public import Mathlib.FieldTheory.Fixed
1111
public import Mathlib.FieldTheory.SplittingField.IsSplittingField
12-
public import Mathlib.LinearAlgebra.Dual.Lemmas
1312
public import Mathlib.RingTheory.Adjoin.Dimension
1413
public import Mathlib.RingTheory.TensorProduct.Finite
1514

@@ -63,6 +62,12 @@ theorem mem_adjoin_simple_iff {α : E} (x : E) :
6362
simp only [mem_adjoin_iff_div, Algebra.adjoin_singleton_eq_range_aeval,
6463
AlgHom.mem_range, exists_exists_eq_and]
6564

65+
theorem forall_mem_adjoin_smul_eq_self_iff {M : Type*} [Monoid M] [MulSemiringAction M E]
66+
[SMulCommClass M F E] (m : M) :
67+
(∀ x ∈ adjoin F S, m • x = x) ↔ ∀ x ∈ S, m • x = x := by
68+
change adjoin F S ≤ FixedBy.intermediateField F E m ↔ _
69+
simp [IntermediateField.adjoin_le_iff, Set.subset_def]
70+
6671
variable {F}
6772

6873
section Supremum

0 commit comments

Comments
 (0)