File: Mathlib/LinearAlgebra/QuadraticForm/Isometry.lean

full_name: QuadraticMap.Isometry.map_app'
code: /-- An isometry between two quadratic spaces `M₁, Q₁` and `M₂, Q₂` over a ring `R`,
is a linear map between `M₁` and `M₂` that commutes with the quadratic forms. -/
structure Isometry (Q₁ : QuadraticMap R M₁ N) (Q₂ : QuadraticMap R M₂ N) extends M₁ →ₗ[R] M₂ where
  /-- The quadratic form agrees across the map. -/
  map_app' : ∀ m, Q₂ (toFun m) = Q₁ m
goal: Q₂ (self.toFun m) = Q₁ m

full_name: QuadraticMap.Isometry
code: /-- An isometry between two quadratic spaces `M₁, Q₁` and `M₂, Q₂` over a ring `R`,
is a linear map between `M₁` and `M₂` that commutes with the quadratic forms. -/
structure Isometry (Q₁ : QuadraticMap R M₁ N) (Q₂ : QuadraticMap R M₂ N) extends M₁ →ₗ[R] M₂ where
  /-- The quadratic form agrees across the map. -/
  map_app' : ∀ m, Q₂ (toFun m) = Q₁ m
goal: Type (max u_4 u_5)

full_name: QuadraticMap.Isometry._aux_Mathlib_LinearAlgebra_QuadraticForm_Isometry___unexpand_QuadraticMap_Isometry_1
code: @[inherit_doc]
notation:25 Q₁ " →qᵢ " Q₂:0 => Isometry Q₁ Q₂
goal: Lean.PrettyPrinter.Unexpander

full_name: QuadraticMap.Isometry.«_aux_Mathlib_LinearAlgebra_QuadraticForm_Isometry___macroRules_QuadraticMap_Isometry_term_→qᵢ__1»
code: @[inherit_doc]
notation:25 Q₁ " →qᵢ " Q₂:0 => Isometry Q₁ Q₂
goal: Lean.Macro

full_name: QuadraticMap.Isometry.instFunLike
code: instance instFunLike : FunLike (Q₁ →qᵢ Q₂) M₁ M₂ 
goal: FunLike (Q₁ →qᵢ Q₂) M₁ M₂

full_name: QuadraticMap.Isometry.instLinearMapClass
code: instance instLinearMapClass : LinearMapClass (Q₁ →qᵢ Q₂) R M₁ M₂ 
goal: LinearMapClass (Q₁ →qᵢ Q₂) R M₁ M₂

full_name: QuadraticMap.Isometry.toLinearMap_injective
code: theorem toLinearMap_injective :
    Function.Injective (Isometry.toLinearMap : (Q₁ →qᵢ Q₂) → M₁ →ₗ[R] M₂) 
goal: Function.Injective QuadraticMap.Isometry.toLinearMap

full_name: QuadraticMap.Isometry.ext
code: @[ext]
theorem ext ⦃f g : Q₁ →qᵢ Q₂⦄ (h : ∀ x, f x = g x) : f = g 
goal: f = g

full_name: QuadraticMap.Isometry.Simps.apply
code: /-- See Note [custom simps projection]. -/
protected def Simps.apply (f : Q₁ →qᵢ Q₂) : M₁ → M₂ 
goal: M₁ → M₂

full_name: QuadraticMap.Isometry.map_app
code: @[simp]
theorem map_app (f : Q₁ →qᵢ Q₂) (m : M₁) : Q₂ (f m) = Q₁ m 
goal: Q₂ (f m) = Q₁ m

full_name: QuadraticMap.Isometry.coe_toLinearMap
code: @[simp]
theorem coe_toLinearMap (f : Q₁ →qᵢ Q₂) : ⇑f.toLinearMap = f 
goal: ⇑f.toLinearMap = ⇑f

full_name: QuadraticMap.Isometry.id_apply
code: /-- The identity isometry from a quadratic form to itself. -/
@[simps!]
def id (Q : QuadraticMap R M N) : Q →qᵢ Q 
goal: (QuadraticMap.Isometry.id Q) a = a

full_name: QuadraticMap.Isometry.id
code: /-- The identity isometry from a quadratic form to itself. -/
@[simps!]
def id (Q : QuadraticMap R M N) : Q →qᵢ Q 
goal: Q →qᵢ Q

full_name: QuadraticMap.Isometry.ofEq_apply
code: /-- The identity isometry between equal quadratic forms. -/
@[simps!]
def ofEq {Q₁ Q₂ : QuadraticMap R M₁ N} (h : Q₁ = Q₂) : Q₁ →qᵢ Q₂ 
goal: (QuadraticMap.Isometry.ofEq h) a = a

full_name: QuadraticMap.Isometry.ofEq
code: /-- The identity isometry between equal quadratic forms. -/
@[simps!]
def ofEq {Q₁ Q₂ : QuadraticMap R M₁ N} (h : Q₁ = Q₂) : Q₁ →qᵢ Q₂ 
goal: Q₁ →qᵢ Q₂

full_name: QuadraticMap.Isometry.ofEq_rfl
code: @[simp]
theorem ofEq_rfl {Q : QuadraticMap R M₁ N} : ofEq (rfl : Q = Q) = .id Q 
goal: QuadraticMap.Isometry.ofEq ⋯ = QuadraticMap.Isometry.id Q

full_name: QuadraticMap.Isometry.comp
code: /-- The composition of two isometries between quadratic forms. -/
@[simps]
def comp (g : Q₂ →qᵢ Q₃) (f : Q₁ →qᵢ Q₂) : Q₁ →qᵢ Q₃ 
goal: Q₁ →qᵢ Q₃

full_name: QuadraticMap.Isometry.comp_apply
code: /-- The composition of two isometries between quadratic forms. -/
@[simps]
def comp (g : Q₂ →qᵢ Q₃) (f : Q₁ →qᵢ Q₂) : Q₁ →qᵢ Q₃ 
goal: (g.comp f) x = g (f x)

full_name: QuadraticMap.Isometry.toLinearMap_comp
code: @[simp]
theorem toLinearMap_comp (g : Q₂ →qᵢ Q₃) (f : Q₁ →qᵢ Q₂) :
    (g.comp f).toLinearMap = g.toLinearMap.comp f.toLinearMap 
goal: (g.comp f).toLinearMap = g.toLinearMap ∘ₗ f.toLinearMap

full_name: QuadraticMap.Isometry.id_comp
code: @[simp]
theorem id_comp (f : Q₁ →qᵢ Q₂) : (id Q₂).comp f = f 
goal: (QuadraticMap.Isometry.id Q₂).comp f = f

full_name: QuadraticMap.Isometry.comp_id
code: @[simp]
theorem comp_id (f : Q₁ →qᵢ Q₂) : f.comp (id Q₁) = f 
goal: f.comp (QuadraticMap.Isometry.id Q₁) = f

full_name: QuadraticMap.Isometry.comp_assoc
code: theorem comp_assoc (h : Q₃ →qᵢ Q₄) (g : Q₂ →qᵢ Q₃) (f : Q₁ →qᵢ Q₂) :
    (h.comp g).comp f = h.comp (g.comp f) 
goal: (h.comp g).comp f = h.comp (g.comp f)

full_name: QuadraticMap.Isometry.instZeroOfNat
code: /-- There is a zero map from any module with the zero form. -/
instance : Zero ((0 : QuadraticMap R M₁ N) →qᵢ Q₂) 
goal: Zero (0 →qᵢ Q₂)

full_name: QuadraticMap.Isometry.hasZeroOfSubsingleton
code: /-- There is a zero map from the trivial module. -/
instance hasZeroOfSubsingleton [Subsingleton M₁] : Zero (Q₁ →qᵢ Q₂) 
goal: Zero (Q₁ →qᵢ Q₂)

full_name: QuadraticMap.Isometry.instSubsingleton
code: /-- Maps into the zero module are trivial -/
instance [Subsingleton M₂] : Subsingleton (Q₁ →qᵢ Q₂) 
goal: Subsingleton (Q₁ →qᵢ Q₂)