Theorem: AffineEquiv.toAffineMap_injective
File: Mathlib/LinearAlgebra/AffineSpace/AffineEquiv.lean

tactic: rintro ⟨e, el, h⟩ ⟨e', el', h'⟩ H
state_before: k : Type u_5
P₁ : Type u_1
P₂ : Type u_2
P₃ : Type ?u.29718
P₄ : Type ?u.29721
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type ?u.29730
V₄ : Type ?u.29733
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V₁
inst✝¹⁰ : Module k V₁
inst✝⁹ : AffineSpace V₁ P₁
inst✝⁸ : AddCommGroup V₂
inst✝⁷ : Module k V₂
inst✝⁶ : AffineSpace V₂ P₂
inst✝⁵ : AddCommGroup V₃
inst✝⁴ : Module k V₃
inst✝³ : AffineSpace V₃ P₃
inst✝² : AddCommGroup V₄
inst✝¹ : Module k V₄
inst✝ : AffineSpace V₄ P₄
⊢ Injective toAffineMap

tactic: simp only [(toAffineMap_mk), (AffineMap.mk.injEq), Equiv.coe_inj,
  LinearEquiv.toLinearMap_inj] at H
state_before: case mk.mk
k : Type u_5
P₁ : Type u_1
P₂ : Type u_2
P₃ : Type ?u.29718
P₄ : Type ?u.29721
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type ?u.29730
V₄ : Type ?u.29733
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V₁
inst✝¹⁰ : Module k V₁
inst✝⁹ : AffineSpace V₁ P₁
inst✝⁸ : AddCommGroup V₂
inst✝⁷ : Module k V₂
inst✝⁶ : AffineSpace V₂ P₂
inst✝⁵ : AddCommGroup V₃
inst✝⁴ : Module k V₃
inst✝³ : AffineSpace V₃ P₃
inst✝² : AddCommGroup V₄
inst✝¹ : Module k V₄
inst✝ : AffineSpace V₄ P₄
e : P₁ ≃ P₂
el : V₁ ≃ₗ[k] V₂
h : ∀ (p : P₁) (v : V₁), ↑e (v +ᵥ p) = ↑el v +ᵥ ↑e p
e' : P₁ ≃ P₂
el' : V₁ ≃ₗ[k] V₂
h' : ∀ (p : P₁) (v : V₁), ↑e' (v +ᵥ p) = ↑el' v +ᵥ ↑e' p
H : ↑{ toEquiv := e, linear := el, map_vadd' := h } = ↑{ toEquiv := e', linear := el', map_vadd' := h' }
⊢ { toEquiv := e, linear := el, map_vadd' := h } = { toEquiv := e', linear := el', map_vadd' := h' }

tactic: congr
state_before: case mk.mk
k : Type u_5
P₁ : Type u_1
P₂ : Type u_2
P₃ : Type ?u.29718
P₄ : Type ?u.29721
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type ?u.29730
V₄ : Type ?u.29733
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V₁
inst✝¹⁰ : Module k V₁
inst✝⁹ : AffineSpace V₁ P₁
inst✝⁸ : AddCommGroup V₂
inst✝⁷ : Module k V₂
inst✝⁶ : AffineSpace V₂ P₂
inst✝⁵ : AddCommGroup V₃
inst✝⁴ : Module k V₃
inst✝³ : AffineSpace V₃ P₃
inst✝² : AddCommGroup V₄
inst✝¹ : Module k V₄
inst✝ : AffineSpace V₄ P₄
e : P₁ ≃ P₂
el : V₁ ≃ₗ[k] V₂
h : ∀ (p : P₁) (v : V₁), ↑e (v +ᵥ p) = ↑el v +ᵥ ↑e p
e' : P₁ ≃ P₂
el' : V₁ ≃ₗ[k] V₂
h' : ∀ (p : P₁) (v : V₁), ↑e' (v +ᵥ p) = ↑el' v +ᵥ ↑e' p
H : e = e' ∧ el = el'
⊢ { toEquiv := e, linear := el, map_vadd' := h } = { toEquiv := e', linear := el', map_vadd' := h' }

tactic: exacts [H.1, H.2]
state_before: case mk.mk.e_toEquiv
k : Type u_5
P₁ : Type u_1
P₂ : Type u_2
P₃ : Type ?u.29718
P₄ : Type ?u.29721
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type ?u.29730
V₄ : Type ?u.29733
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V₁
inst✝¹⁰ : Module k V₁
inst✝⁹ : AffineSpace V₁ P₁
inst✝⁸ : AddCommGroup V₂
inst✝⁷ : Module k V₂
inst✝⁶ : AffineSpace V₂ P₂
inst✝⁵ : AddCommGroup V₃
inst✝⁴ : Module k V₃
inst✝³ : AffineSpace V₃ P₃
inst✝² : AddCommGroup V₄
inst✝¹ : Module k V₄
inst✝ : AffineSpace V₄ P₄
e : P₁ ≃ P₂
el : V₁ ≃ₗ[k] V₂
h : ∀ (p : P₁) (v : V₁), ↑e (v +ᵥ p) = ↑el v +ᵥ ↑e p
e' : P₁ ≃ P₂
el' : V₁ ≃ₗ[k] V₂
h' : ∀ (p : P₁) (v : V₁), ↑e' (v +ᵥ p) = ↑el' v +ᵥ ↑e' p
H : e = e' ∧ el = el'
⊢ e = e'

case mk.mk.e_linear
k : Type u_5
P₁ : Type u_1
P₂ : Type u_2
P₃ : Type ?u.29718
P₄ : Type ?u.29721
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type ?u.29730
V₄ : Type ?u.29733
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V₁
inst✝¹⁰ : Module k V₁
inst✝⁹ : AffineSpace V₁ P₁
inst✝⁸ : AddCommGroup V₂
inst✝⁷ : Module k V₂
inst✝⁶ : AffineSpace V₂ P₂
inst✝⁵ : AddCommGroup V₃
inst✝⁴ : Module k V₃
inst✝³ : AffineSpace V₃ P₃
inst✝² : AddCommGroup V₄
inst✝¹ : Module k V₄
inst✝ : AffineSpace V₄ P₄
e : P₁ ≃ P₂
el : V₁ ≃ₗ[k] V₂
h : ∀ (p : P₁) (v : V₁), ↑e (v +ᵥ p) = ↑el v +ᵥ ↑e p
e' : P₁ ≃ P₂
el' : V₁ ≃ₗ[k] V₂
h' : ∀ (p : P₁) (v : V₁), ↑e' (v +ᵥ p) = ↑el' v +ᵥ ↑e' p
H : e = e' ∧ el = el'
⊢ el = el'