[Merged by Bors] - feat: make sure that the simp normal form of equiv-like classes pushes symm and trans to the right#25604
[Merged by Bors] - feat: make sure that the simp normal form of equiv-like classes pushes symm and trans to the right#25604
symm and trans to the right#25604Conversation
PR summary c34d6acfe2Import changes for modified filesNo significant changes to the import graph Import changes for all files
|
You're planning on killing it as a coercion, but keeping the constructor, right? |
j-loreaux
left a comment
There was a problem hiding this comment.
Thanks for making all these consistent!
Co-authored-by: Jireh Loreaux <loreaujy@gmail.com>
Co-authored-by: Jireh Loreaux <loreaujy@gmail.com>
|
@sgouezel I won't merge in case there was a reason you didn't take the bors d+ |
|
✌️ sgouezel can now approve this pull request. To approve and merge a pull request, simply reply with |
|
bors r+ |
…s `symm` and `trans` to the right (#25604) This follows the usual convention for coercions. See discussion at [#mathlib4 > simp normal form for symm and coercions @ 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/simp.20normal.20form.20for.20symm.20and.20coercions/near/522879475) For each equiv class, after the PR we should have lemmas like ```lean @[simp] lemma coe_toEquiv (e : G ≃+c[a, b] H) : ⇑e.toEquiv = e := rfl @[simp] lemma coe_symm_toEquiv (e : G ≃+c[a, b] H) : ⇑e.toEquiv.symm = e.symm := rfl @[simp] lemma toEquiv_symm (e : G ≃+c[a, b] H) : e.symm.toEquiv = e.toEquiv.symm := rfl @[simp] lemma toEquiv_trans (e₁ : G ≃+c[a, b] H) (e₂ : H ≃+c[b, c] K) : (e₁.trans e₂).toEquiv = e₁.toEquiv.trans e₂.toEquiv := rfl ``` The PR does not complete this task, because it would require killing the coercion from EquivLike classes to Equivs (which I am planning to do in a subsequent PR), but it is a significant first step in this direction.
|
Pull request successfully merged into master. Build succeeded: |
symm and trans to the rightsymm and trans to the right
* master: (447 commits) chore(Data/Set): move very basic lemmas earlier (leanprover-community#25707) feat: preserve draft status when migrating PRs to fork (leanprover-community#25777) chore(Data/Set/Basic): deprecate lemmas that abuse the `Set α := α → Prop` defeq (leanprover-community#25669) refactor: redefine `ProperCone` as an `abbrev` for `ClosedSubmodule` (leanprover-community#25204) feat: interaction between ContinuousLinearMap.coprod and ContinuousLinearEquiv.prodComm (leanprover-community#25564) fix: outdated docstring (leanprover-community#25717) feat(MeasureTheory): convolution of measures with densities (leanprover-community#25718) feat: make sure that the simp normal form of equiv-like classes pushes `symm` and `trans` to the right (leanprover-community#25604) feat(ModelTheory): Formula.iSup and iInf (leanprover-community#21948) feat(RingTheory/Polynomial/ContentIdeal): the content ideal of a polynomial. (leanprover-community#25333) fix: typo in labels_from_comment.yml (leanprover-community#25727) feat: is{Inducing,Embedding}_prodMkLeft (leanprover-community#25705) feat: check that the mathlib options exist (leanprover-community#25687) feat(Algebra/Group/Even): Add missing lemmas (leanprover-community#20818) refactor: make `Matrix.kroneckerTMulAlgEquiv` heterogeneous (leanprover-community#25693) feat: allow contributors to remove labels with comments (leanprover-community#25723) chore: disable build.yml and bors.yml on forks (leanprover-community#25722) feat: improvements to user_activity_report.py (leanprover-community#25721) chore: update the migration script to check for necessary permissions and prefer ssh if possible (leanprover-community#25701) chore: update the migration script to check for necessary permissions and prefer ssh if possible (leanprover-community#25701) ...
…s `symm` and `trans` to the right (leanprover-community#25604) This follows the usual convention for coercions. See discussion at [#mathlib4 > simp normal form for symm and coercions @ 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/simp.20normal.20form.20for.20symm.20and.20coercions/near/522879475) For each equiv class, after the PR we should have lemmas like ```lean @[simp] lemma coe_toEquiv (e : G ≃+c[a, b] H) : ⇑e.toEquiv = e := rfl @[simp] lemma coe_symm_toEquiv (e : G ≃+c[a, b] H) : ⇑e.toEquiv.symm = e.symm := rfl @[simp] lemma toEquiv_symm (e : G ≃+c[a, b] H) : e.symm.toEquiv = e.toEquiv.symm := rfl @[simp] lemma toEquiv_trans (e₁ : G ≃+c[a, b] H) (e₂ : H ≃+c[b, c] K) : (e₁.trans e₂).toEquiv = e₁.toEquiv.trans e₂.toEquiv := rfl ``` The PR does not complete this task, because it would require killing the coercion from EquivLike classes to Equivs (which I am planning to do in a subsequent PR), but it is a significant first step in this direction.
…s `symm` and `trans` to the right (leanprover-community#25604) This follows the usual convention for coercions. See discussion at [#mathlib4 > simp normal form for symm and coercions @ 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/simp.20normal.20form.20for.20symm.20and.20coercions/near/522879475) For each equiv class, after the PR we should have lemmas like ```lean @[simp] lemma coe_toEquiv (e : G ≃+c[a, b] H) : ⇑e.toEquiv = e := rfl @[simp] lemma coe_symm_toEquiv (e : G ≃+c[a, b] H) : ⇑e.toEquiv.symm = e.symm := rfl @[simp] lemma toEquiv_symm (e : G ≃+c[a, b] H) : e.symm.toEquiv = e.toEquiv.symm := rfl @[simp] lemma toEquiv_trans (e₁ : G ≃+c[a, b] H) (e₂ : H ≃+c[b, c] K) : (e₁.trans e₂).toEquiv = e₁.toEquiv.trans e₂.toEquiv := rfl ``` The PR does not complete this task, because it would require killing the coercion from EquivLike classes to Equivs (which I am planning to do in a subsequent PR), but it is a significant first step in this direction.
…s `symm` and `trans` to the right (leanprover-community#25604) This follows the usual convention for coercions. See discussion at [#mathlib4 > simp normal form for symm and coercions @ 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/simp.20normal.20form.20for.20symm.20and.20coercions/near/522879475) For each equiv class, after the PR we should have lemmas like ```lean @[simp] lemma coe_toEquiv (e : G ≃+c[a, b] H) : ⇑e.toEquiv = e := rfl @[simp] lemma coe_symm_toEquiv (e : G ≃+c[a, b] H) : ⇑e.toEquiv.symm = e.symm := rfl @[simp] lemma toEquiv_symm (e : G ≃+c[a, b] H) : e.symm.toEquiv = e.toEquiv.symm := rfl @[simp] lemma toEquiv_trans (e₁ : G ≃+c[a, b] H) (e₂ : H ≃+c[b, c] K) : (e₁.trans e₂).toEquiv = e₁.toEquiv.trans e₂.toEquiv := rfl ``` The PR does not complete this task, because it would require killing the coercion from EquivLike classes to Equivs (which I am planning to do in a subsequent PR), but it is a significant first step in this direction.
This follows the usual convention for coercions. See discussion at #mathlib4 > simp normal form for symm and coercions @ 💬
For each equiv class, after the PR we should have lemmas like
The PR does not complete this task, because it would require killing the coercion from EquivLike classes to Equivs (which I am planning to do in a subsequent PR), but it is a significant first step in this direction.