Doubling is invertible on a real vector space #
For a real vector space N, multiplication by 2 is a bijection, so the doubling map is a unit
of the endomorphism ring — and it remains one when N is regarded only as a ℤ-module, where
2 itself is not invertible. This file records that as an Invertible (2 : Module.End ℤ N)
instance, together with the rewrite rule identifying its inverse with the real scalar (2 : ℝ)⁻¹.
Main definitions #
TauCeti.invertibleTwoModuleEndInt: for any semiringSacting onNin which2is invertible, doubling is invertible on theℤ-endomorphisms ofN.
Main results #
TauCeti.invOf_two_moduleEndInt_apply: the inverse of doubling is halving by the scalar, for whicheverInvertible (2 : Module.End ℤ N)instance is in scope.TauCeti.instInvertibleTwoModuleEndInt: the instance forS = ℝ, so that doubling is invertible on any real vector space viewed as an endomorphism of its underlyingℤ-module.TauCeti.half_moduleEndInt_apply_eq_half_smul: that inverse acts as the scalar(2 : ℝ)⁻¹. This is theR = ℤcounterpart of Mathlib'sQuadraticMap.half_moduleEnd_apply_eq_half_smul, whoseInvertible (2 : R)hypothesis is unavailable forR = ℤ; here the halving scalar comes from the module structure instead of from the ring.
The consumer this exists for #
Mathlib builds the bilinear map associated with a quadratic map by halving the polar form:
QuadraticMap.associatedHom is ⅟(2 : Module.End R N) • QuadraticMap.polarBilin, with
QuadraticMap.associated' the ℤ-linear specialisation. Halving needs
Invertible (2 : Module.End R N), and Mathlib's docstring for associatedHom names exactly the
case this file supplies:
Note that this makes the bijection available in more cases than the simpler condition
Invertible (2 : R), e.g., whenR = ℤandN = ℝ.
Mathlib provides no instance reaching it: its only route is
[Invertible (2 : R)] → Invertible (2 : Module.End R M), which for R = ℤ asks for
Invertible (2 : ℤ) and fails. With the instance below, associated' and its API —
associated_apply, associated_isSymm, associated_flip, associated_eq_self_apply — become
usable on ℤ-quadratic maps with values in a real vector space.
Implementation notes #
The construction is stated for a general scalar semiring S but is a def rather than an
instance, because S appears nowhere in the conclusion Invertible (2 : Module.End ℤ N) and
so could never be inferred by instance search. Instances are registered by applying it to the
scalar rings that are wanted; ℝ is the one this repository needs.
Doubling is invertible on the ℤ-endomorphisms of a module over a semiring in which 2 is
invertible. The halving scalar comes from the module structure rather than from ℤ.
Equations
Instances For
The inverse of doubling is halving by the scalar, for whichever
Invertible (2 : Module.End ℤ N) instance is in scope.
Doubling is invertible on a real vector space, as an endomorphism of its ℤ-module
structure.
The inverse of doubling acts as the real scalar (2 : ℝ)⁻¹.