Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

feat(algebra/add_torsor, linear_algebra/affine_space/affine_equiv, analysis/normed_space/affine_isometry): base_at construction#8837

Open
hrmacbeth wants to merge 14 commits into
masterfrom
affine-equiv-lemmas
Open

feat(algebra/add_torsor, linear_algebra/affine_space/affine_equiv, analysis/normed_space/affine_isometry): base_at construction#8837
hrmacbeth wants to merge 14 commits into
masterfrom
affine-equiv-lemmas

Conversation

@hrmacbeth
Copy link
Copy Markdown
Member

Add constructions add_equiv.base_at (of type perm), linear_equiv.base_at (of type affine_equiv), and linear_isometry_equiv.base_at (of type affine_isometry_equiv), to describe the automorphism of an add_torsor/normed_add_torsor obtained by fixing a basepoint, temporarily identifying the add_torsor with its model space using this basepoint, and applying the add_equiv/linear_equiv/linear_isometry_equiv to the space under this identification.

Also API for these constructions and a few more missing lemmas.


Open in Gitpod

@hrmacbeth hrmacbeth added the awaiting-review The author would like community review of the PR label Aug 24, 2021
@github-actions github-actions Bot added the merge-conflict Please `git merge origin/master` then a bot will remove this label. label Sep 7, 2021
@github-actions github-actions Bot removed the merge-conflict Please `git merge origin/master` then a bot will remove this label. label Sep 7, 2021
Comment on lines +414 to +415
def _root_.add_equiv.base_at (f : G ≃+ G) (x : P) : perm P :=
((vadd_const x).symm.trans f.to_equiv).trans (vadd_const x)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few other reasonable definitions:

Suggested change
def _root_.add_equiv.base_at (f : G ≃+ G) (x : P) : perm P :=
((vadd_const x).symm.trans f.to_equiv).trans (vadd_const x)
def _root_.equiv.base_at {G' P' : Type*} [add_group G'] [add_torsor G' P'] (f : G ≃ G') (x : P) (y : P') :
P ≃ P':=
((vadd_const x).symm.trans f).trans (vadd_const y)
def _root_.add_equiv.base_at {G' P' : Type*} [add_group G'] [add_torsor G' P'] (f : G ≃+ G') (x : P) (y : P') :
P ≃ P':=
f.to_equiv.base_at x y
def _root_.add_aut.base_at (f : add_aut G) (x : P) :
perm P :=
f.base_at x x

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right that one could introduce a more general base_at construction which constructs, from an isomorphism of model spaces, an isomorphism of the add_torsors according to a fixed basepoint x, y of each. It would double the size of the PR, though, so I'd rather not add it until someone needs it for something. (The version with a single add_torsor, constructing an automorphism, is more immediately useful -- it allows one to talk sensibly to talk about rotations in affine space.)

On your other point, I'd be happy to change the definition here to

Suggested change
def _root_.add_equiv.base_at (f : G ≃+ G) (x : P) : perm P :=
((vadd_const x).symm.trans f.to_equiv).trans (vadd_const x)
def _root_.equiv.base_at (f : G ≃ G) (x : P) : perm P :=
((vadd_const x).symm.trans f).trans (vadd_const x)

if you prefer, or include both.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@urkud 🏓


@[simp] lemma linear_isometry_equiv_symm :
e.linear_isometry_equiv.symm = e.symm.linear_isometry_equiv :=
rfl
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Member

@jcommelin jcommelin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Comment on lines +414 to +415
def _root_.add_equiv.base_at (f : G ≃+ G) (x : P) : perm P :=
((vadd_const x).symm.trans f.to_equiv).trans (vadd_const x)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@urkud 🏓

((vadd_const x).symm.trans f.to_equiv).trans (vadd_const x)

@[simp] lemma _root_.add_equiv.base_at_apply (f : G ≃+ G) (x y : P) :
f.base_at x y = f (y -ᵥ x) +ᵥ x :=
Copy link
Copy Markdown
Member

@eric-wieser eric-wieser Sep 30, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can @[simps apply] generate this? If not, are we missing some lemmas?

← f.map_add, vadd_vsub_assoc],
end

@[simp] lemma _root_.add_equiv.base_at_symm (f : G ≃+ G) (x : P) :
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add the refl variant of this lemma too?

variables {G : Type*} {P : Type*} [add_comm_group G] [add_torsor G P]
include G

lemma base_at_neg (x : P) : (add_equiv.neg G).base_at x = point_reflection x :=
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be in the add_equiv namespace?

..equiv.inv G}

@[simp, to_additive] lemma mul_equiv.coe_inv (G : Type*) [comm_group G] :
⇑(mul_equiv.inv G) = λ a, a⁻¹ :=
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
⇑(mul_equiv.inv G) = λ a, a⁻¹ :=
⇑(mul_equiv.inv G) = has_inv.inv :=

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alternately, can @[simps {fully_applied := ff}] generate this?

@kim-em kim-em added the awaiting-author A reviewer has asked the author a question or requested changes label Oct 1, 2021
@sgouezel sgouezel removed the awaiting-review The author would like community review of the PR label Oct 1, 2021
@github-actions github-actions Bot added the merge-conflict Please `git merge origin/master` then a bot will remove this label. label Dec 18, 2021
@kim-em kim-em added the too-late This PR was ready too late for inclusion in mathlib3 label Jul 16, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants