-
Notifications
You must be signed in to change notification settings - Fork 297
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(group/perm/sign): swap_adj_induction_on #3770
base: master
Are you sure you want to change the base?
Conversation
src/group_theory/perm/sign.lean
Outdated
lemma swap_eq_prod_swap_adj (n : ℕ) {i j : fin n} (hij : i ≠ j) : ∃ L : list (perm (fin n)), | ||
L.prod = equiv.swap i j ∧ ∀ l ∈ L, ∃ k : fin n, ∃ h : k.1 + 1 < n, | ||
l = equiv.swap k ⟨k.1 + 1, h⟩ := |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is quite a complicated statement. Would it be easier to say that there a list of nats, such that equiv.swap i j
is the product of the corresponding adjacent transpositions?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, it might be easier if you split this into several lemmas: prove the first one with the hypothesis that i < j
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If I were to state the lemma using a list of nats, I can't think of a good way of keeping track of an l.1 + 1 < n
for each l ∈ L
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You could, e.g. have i j : fin (n+1)
, then produce in one declaration a list (fin n)
, and then in a second declaration equiv.swap i j = (L.map ...).prod
, where the ... converts a fin n
into the adjacent transposition of fin (n+1)
.
I'm not saying this is essential, just potentially results in cleaner statements, and proofs split into smaller chunks.
I suspect the now-merged #4316 contains some pieces and lemma names that can be reused and copied here |
For the sake of review, this leaves the definitions behind as aliases. They will be removed in a later commit
I went ahead and fixed the merge conflicts, and removed all the proofs that now exist elsewhere in mathlib. |
Note that this merge removes all the alternating map stuff from this branch and replaces it with the upstream version.
I've renamed this PR, since all the algebra pieces have been merged elsewhere. |
Defines the typeclassSuperseded by [Merged by Bors] - feat(linear_algebra): Add alternating multilinear maps #5102alternating_map
that extendsmultilinear_map
.fin n
that will be useful for formalizing exterior algebras.This PR is essentially a number of lemmas and constructions I wrote for the
exterior_algebra
branch stated at the appropriate level of generality.A particular area where I could use some help is deciding where long proofs should be split into several shorter lemmas.