Skip to content
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

Open
wants to merge 31 commits into
base: master
Choose a base branch
from

Conversation

zhangir-azerbayev
Copy link
Collaborator

@zhangir-azerbayev zhangir-azerbayev commented Aug 14, 2020

  1. Defines the multilinear map that sends a tuple of elements of an algebra to their product.
  2. Defines the typeclass alternating_map that extends multilinear_map. Superseded by [Merged by Bors] - feat(linear_algebra): Add alternating multilinear maps #5102
  3. Proves some lemmas about permutations and lists that are necessary for (1) and (2), and some lemmas about permutations of 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.

Comment on lines 717 to 719
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⟩ :=
Copy link
Collaborator

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?

Copy link
Collaborator

@semorrison semorrison Aug 14, 2020

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.

Copy link
Collaborator Author

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.

Copy link
Collaborator

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.

@semorrison semorrison added the awaiting-author A reviewer has asked the author a question or requested changes label Aug 14, 2020
@jcommelin jcommelin changed the title Algebra multilinear maps feat(linear_algebra): algebra multilinear maps Aug 14, 2020
@github-actions github-actions bot added the merge-conflict Please `git merge origin/master` then a bot will remove this label. label Oct 12, 2020
@eric-wieser
Copy link
Member

I suspect the now-merged #4316 contains some pieces and lemma names that can be reused and copied here

@github-actions github-actions bot removed the merge-conflict Please `git merge origin/master` then a bot will remove this label. label Nov 23, 2020
@eric-wieser
Copy link
Member

I went ahead and fixed the merge conflicts, and removed all the proofs that now exist elsewhere in mathlib.

@github-actions github-actions bot added the merge-conflict Please `git merge origin/master` then a bot will remove this label. label Nov 23, 2020
@github-actions github-actions bot removed the merge-conflict Please `git merge origin/master` then a bot will remove this label. label Nov 24, 2020
@eric-wieser eric-wieser added the WIP Work in progress label Nov 24, 2020
@github-actions github-actions bot added the merge-conflict Please `git merge origin/master` then a bot will remove this label. label Dec 1, 2020
Note that this merge removes all the alternating map stuff from this branch and replaces it with the upstream version.
@github-actions github-actions bot removed the merge-conflict Please `git merge origin/master` then a bot will remove this label. label Dec 1, 2020
@eric-wieser eric-wieser changed the title feat(linear_algebra): algebra multilinear maps feat(group/perm/sign): swap_adj_induction_on Dec 1, 2020
@eric-wieser
Copy link
Member

I've renamed this PR, since all the algebra pieces have been merged elsewhere.

@github-actions github-actions bot added the merge-conflict Please `git merge origin/master` then a bot will remove this label. label Apr 6, 2021
@github-actions github-actions bot removed the merge-conflict Please `git merge origin/master` then a bot will remove this label. label May 7, 2021
@github-actions github-actions bot added the merge-conflict Please `git merge origin/master` then a bot will remove this label. label Sep 24, 2021
@semorrison semorrison added the too-late This PR was ready too late for inclusion in mathlib3 label Jul 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
awaiting-author A reviewer has asked the author a question or requested changes merge-conflict Please `git merge origin/master` then a bot will remove this label. too-late This PR was ready too late for inclusion in mathlib3 WIP Work in progress
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants