[Merged by Bors] - feat(GroupTheory/Perm/DomMulAct) : Subgroup of Equiv.Perm α preserving a function p : α → ι#9342
[Merged by Bors] - feat(GroupTheory/Perm/DomMulAct) : Subgroup of Equiv.Perm α preserving a function p : α → ι#9342AntoineChambert-Loir wants to merge 16 commits intomasterfrom
Equiv.Perm α preserving a function p : α → ι#9342Conversation
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
|
With notation, it is more readable. |
|
In the finite case, I added the proof that the cardinality is the product of the factorials. |
| theorem stabilizer_card: | ||
| Nat.card {f : Perm α // p ∘ f = p} = | ||
| Finset.univ.prod fun i => (Nat.card {a // p a = i}).factorial := by |
There was a problem hiding this comment.
I think Fintype.card is more appropriate here, since you assumed both α and ι are Fintype, and you have the necessary DecidableEq assumptions. (You could use Finset.card with Finset.filter but that seems uglier.) If you want Nat.card you only need ι to be Fintype, and α just need to be finite.
Also, I think It's better to write the RHS as Π i in ι, ....
There was a problem hiding this comment.
i did that. For the proof, however, I have to resort to Nat.card because Fintype.card_congr does not find a necessary Fintype instance.
There was a problem hiding this comment.
Question : maybe the namespace should be Equiv.Perm.DomMulAct rather than DomMulAct
There was a problem hiding this comment.
I have to resort to Nat.card because Fintype.card_congr does not find a necessary Fintype instance.
Probably because DomMulAct doesn't inherit the Fintype instance?
There was a problem hiding this comment.
Does it make sense to add that instance?
|
|
||
| /-- The cardinality of the type of permutations preserving a function -/ | ||
| theorem stabilizer_card: | ||
| Fintype.card {f : Perm α // p ∘ f = p} = |
There was a problem hiding this comment.
It's a bit confusing here that p is the function and f is the permutation,
There was a problem hiding this comment.
In my mind, p was the projection of a fibration and the permutations are called f all over mathlib.
I'll make the change.
There was a problem hiding this comment.
It might be worth waiting for a second opinion; an alterative would be to change the docstring to use the word fibration somehow
There was a problem hiding this comment.
I have done it already, that was quick…
|
I have been able (I use it elsewhere) to remove the finiteness assumption for the target in the formula for the cardinality. |
How do you state that? There's |
|
Yes, I restrict the product to |
Equiv.Perm α preserving a function p : α → ιEquiv.Perm α preserving a function p : α → ι
…ing a function `p : α → ι` (#9342) Subgroup of `Equiv.Perm α` preserving a function Let `α` and `ι` by types and let `p : α → ι` * `DomMulAct.mem_stabilizer_iff` proves that the stabilizer of `p : α → ι` in `(Equiv.Perm α)ᵈᵐᵃ` is the set of `g : (Equiv.Perm α)ᵈᵐᵃ` such that `p ∘ (mk.symm g) = p`. The natural equivalence from `stabilizer (Perm α)ᵈᵐᵃ p` to `{ g : Perm α // p ∘ g = p }` can be obtained as `subtypeEquiv mk.symm (fun _ => mem_stabilizer_iff)` * `DomMulAct.stabilizerMulEquiv` is the `MulEquiv` from the MulOpposite of this stabilizer to the product, for `i : ι`, of `Equiv.Perm {a // p a = i}`. * Under `Fintype α` and `Fintype ι`, `DomMulAct.stabilizer_card p` computes the cardinality of the type of permutations preserving `p` : `Fintype.card {f : Perm α // p ∘ f = p} = ∏ i , (Fintype.card ({a // p a = i})).factorial` Co-Authored by : Junyan Xu <junyanxu.math@gmail.com> Co-authored-by: Antoine Chambert-Loir <antoine.chambert-loir@math.univ-paris-diderot.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>
|
Pull request successfully merged into master. Build succeeded: |
Equiv.Perm α preserving a function p : α → ιEquiv.Perm α preserving a function p : α → ι
Subgroup of
Equiv.Perm αpreserving a functionLet
αandιby types and letp : α → ιDomMulAct.mem_stabilizer_iffproves that the stabilizer ofp : α → ιin
(Equiv.Perm α)ᵈᵐᵃis the set ofg : (Equiv.Perm α)ᵈᵐᵃsuch thatp ∘ (mk.symm g) = p.The natural equivalence from
stabilizer (Perm α)ᵈᵐᵃ pto{ g : Perm α // p ∘ g = p }can be obtained as
subtypeEquiv mk.symm (fun _ => mem_stabilizer_iff)DomMulAct.stabilizerMulEquivis theMulEquivfromthe MulOpposite of this stabilizer to the product,
for
i : ι, ofEquiv.Perm {a // p a = i}.Under
Fintype αandFintype ι,DomMulAct.stabilizer_card pcomputesthe cardinality of the type of permutations preserving
p:Fintype.card {f : Perm α // p ∘ f = p} = ∏ i , (Fintype.card ({a // p a = i})).factorialCo-Authored by : Junyan Xu junyanxu.math@gmail.com
This was written by Junyan Xu after a request on Zulip, https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/permutations.20preserving.20a.20function/near/391930331
It appeared again in
https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there-code-for-X.3F/topic/Cardinality.20of.20permutation/near/410241414