Zulip Chat Archive
Stream: Is there code for X?
Topic: IntermediateField.sup_toSubfield
Jz Pan (Jul 23 2024 at 20:21):
We only have docs#IntermediateField.inf_toSubfield. Is IntermediateField.sup_toSubfield
correct? I tried and found that rfl
can't prove it. Perhaps some arguments are needed.
Thomas Browning (Jul 23 2024 at 21:19):
Does it follow from some combination of le_antisymm
and sup_le_iff
?
Jz Pan (Jul 23 2024 at 21:56):
Thomas Browning said:
Does it follow from some combination of
le_antisymm
andsup_le_iff
?
I think this approach is a little bit complicated since it needs to use docs#Subfield.toIntermediateField and some others...
Jz Pan (Jul 23 2024 at 22:03):
This works:
import Mathlib.FieldTheory.Adjoin
namespace IntermediateField
@[simp]
theorem sup_toSubfield {F E : Type*} [Field F] [Field E] [Algebra F E] (S T : IntermediateField F E) :
(S ⊔ T).toSubfield = S.toSubfield ⊔ T.toSubfield := by
rw [← S.toSubfield.closure_eq, ← T.toSubfield.closure_eq, ← Subfield.closure_union]
change Subfield.closure (Set.range (algebraMap F E) ∪ (S ∪ T)) = Subfield.closure (S ∪ T)
congr 1
rw [Set.union_eq_right]
rintro _ ⟨x, rfl⟩
exact Or.inl (algebraMap_mem S x)
Jz Pan (Jul 23 2024 at 23:32):
PR created as #15088.
Eric Wieser (Jul 24 2024 at 07:35):
Arguably we should redefine sup
in the complete lattice instance above to make this true by definition
Jz Pan (Jul 24 2024 at 08:50):
Eric Wieser said:
Arguably we should redefine
sup
in the complete lattice instance above to make this true by definition
I don't know how to do that. Besides, IntermediateField.sSup_toSubfield
and IntermediateField.iSup_toSubfield
requires that the set in question is not empty, otherwise they are not equal. So I'm afraid that the lattice structure is different.
Eric Wieser (Jul 24 2024 at 08:53):
You can see how it's done for bot
a few lines above. I suggest you only change sup
, not sSup
.
Jz Pan (Jul 24 2024 at 09:11):
Eric Wieser said:
You can see how it's done for
bot
a few lines above. I suggest you only changesup
, notsSup
.
Do you mean this:
instance : CompleteLattice (IntermediateField F E) where
__ := GaloisInsertion.liftCompleteLattice IntermediateField.gi
bot :=
{ toSubalgebra := ⊥
inv_mem' := by rintro x ⟨r, rfl⟩; exact ⟨r⁻¹, map_inv₀ _ _⟩ }
bot_le x := (bot_le : ⊥ ≤ x.toSubalgebra)
sup S T := (S.toSubfield ⊔ T.toSubfield).toIntermediateField fun x ↦ by
have : S.toSubfield ≤ S.toSubfield ⊔ T.toSubfield := le_sup_left
exact this (algebraMap_mem S x)
le_sup_left S T := by
sorry
le_sup_right S T := by
sorry
sup_le a b c := by
sorry
Unfortunately, it breaks a lot of existing code relying on the old definition of sup
:(
Eric Wieser (Jul 24 2024 at 09:38):
Ah sorry, I got confused between toSubfield
and toSubalgebra
. Maybe my suggestion isn't worthwhile after all, and certainly your PR is an improvement over the status quo
Jz Pan (Jul 28 2024 at 11:23):
Probably Subalgebra->Subring->Subsemiring
version should also be added...
Jz Pan (Oct 04 2024 at 16:51):
ping What's the progress on reviewing #15088?
Jz Pan (Oct 15 2024 at 16:21):
ping I got some reviews last week, but there are 3 opening conversations I'm not intended to fix. Any other comments?
Last updated: May 02 2025 at 03:31 UTC