Module docstring
{"# (Semi-)linear isometries
In this file we define LinearIsometry σ₁₂ E E₂ (notation: E →ₛₗᵢ[σ₁₂] E₂) to be a semilinear
isometric embedding of E into E₂ and LinearIsometryEquiv (notation: E ≃ₛₗᵢ[σ₁₂] E₂) to be
a semilinear isometric equivalence between E and E₂. The notation for the associated purely
linear concepts is E →ₗᵢ[R] E₂, E ≃ₗᵢ[R] E₂, and E →ₗᵢ⋆[R] E₂, E ≃ₗᵢ⋆[R] E₂ for
the star-linear versions.
We also prove some trivial lemmas and provide convenience constructors.
Since a lot of elementary properties don't require ‖x‖ = 0 → x = 0 we start setting up the
theory for SeminormedAddCommGroup and we specialize to NormedAddCommGroup when needed.
","Lemmas about mixing the group structure with definitions. Because we have multiple ways to
express LinearIsometryEquiv.refl, LinearIsometryEquiv.symm, and
LinearIsometryEquiv.trans, we want simp lemmas for every combination.
The assumption made here is that if you're using the group structure, you want to preserve it
after simp.
This copies the approach used by the lemmas near Equiv.Perm.trans_one. "}