Zulip Chat Archive
Stream: Is there code for X?
Topic: Sugroup sup
Patrick Massot (Oct 02 2023 at 22:08):
Are we really missing the following lemma??
example {G : Type*} [Group G] (H H' : Subgroup G) :
((H ⊔ H' : Subgroup G) : Set G) = Subgroup.closure ((H : Set G) ∪ (H' : Set G))
There is docs#Subgroup.iSup_eq_closure which is the version for any indexed family of subgroups and a completely crazy docs#Subgroup.sup_eq_closure but I can't find the above.
Eric Wieser (Oct 02 2023 at 22:27):
docs#Subgroup.closure_union is where I'd expect it
Patrick Massot (Oct 02 2023 at 22:27):
I opened #7468 in case nobody can find it.
Patrick Massot (Oct 02 2023 at 22:27):
Eric, this is very much related but not the same.
Patrick Massot (Oct 02 2023 at 22:28):
See https://github.com/leanprover-community/mathlib4/pull/7468/files#diff-3ea21bd11ed765ebb85bf53c26a6b0ced8171afca566b2b1aaf9b685dbe2e421R3543 to see my statement in action.
Eric Wieser (Oct 02 2023 at 22:28):
Looking at your PR, I see that you use precisely the two results I was going to say we already have
Eric Wieser (Oct 02 2023 at 22:29):
I think this omission is consistent across all the subobjects
Eric Wieser (Oct 02 2023 at 22:30):
(and that its omission is a semi-deliberate "this is just two lemmas together" thing)
Eric Wieser (Oct 02 2023 at 22:31):
Perhaps a good indication that this is a bad lemma is that it doesn't help for H ⊔ H' ⊔ H''
Patrick Massot (Oct 02 2023 at 22:34):
To be honest, my actual use if for teaching Lean only. I literally want to be able to say: I know H \sqcap H'
looks silly but the fact that the underlying set is H \cap H'
is kind of random, it contrasts with
example {G : Type*} [Group G] (H H' : Subgroup G) :
((H ⊔ H' : Subgroup G) : Set G) = Subgroup.closure ((H : Set G) ∪ (H' : Set G)) := sup_eq_closure H H'
Patrick Massot (Oct 02 2023 at 22:35):
and I also I won't admit how much time I wasted coming up with the proof, but it was way too much time.
Patrick Massot (Oct 02 2023 at 22:36):
And the current situation is really inconsistent with docs#Subgroup.iSup_eq_closure
Eric Wieser (Oct 02 2023 at 22:45):
It looks like there's a clash in your PR with existing lemmas that use H * H'
instead of H ∪ H'
Patrick Massot (Oct 02 2023 at 22:50):
Oh yes, I even mentioned it in my first post above...
Patrick Massot (Oct 02 2023 at 22:52):
I tried a blind fix. We'll see what CI thinks.
Eric Wieser (Oct 02 2023 at 22:54):
Is it mathematically crazy in your opinion, or just crazy in the context of the result you were hoping to find?
Patrick Massot (Oct 02 2023 at 23:01):
It is mathematically weird because it is more complicated than the union version for no apparent benefit (the multiplication is larger than the union so it's a less good generating set). Note there is a meaningful and relevant very related result in the commutative case: docs#Subgroup.mem_sup. I guess the "crazy" version exists only in relation to this.
Patrick Massot (Oct 02 2023 at 23:05):
Anyway, there is currently a marching band playing on campus next to my office, and I interpret this as a subtle clue that it may be getting late and I should leave my office and go back home.
Antoine Chambert-Loir (Oct 05 2023 at 04:29):
Patrick Massot said:
It is mathematically weird because it is more complicated than the union version for no apparent benefit (the multiplication is larger than the union so it's a less good generating set). Note there is a meaningful and relevant very related result in the commutative case: docs#Subgroup.mem_sup. I guess the "crazy" version exists only in relation to this.
The “correct” multiplicative result could be that H ⊔ H' = H * H'
when one of them normalizes the other one, at least when one of them is normal.
Last updated: Dec 20 2023 at 11:08 UTC