MathlibAnnex/LinearAlgebra/Basis/Semilinear.lean
Exact source · gss-v0.5.0
Fixed commit original · Raw UTF-8 source · Back to GSS Companion
Select a source link from a manuscript to highlight its exact range.
Technical identity
- Commit
ac405356bb98afed954da9b9c795d23cc8d5d149- SHA-256
110f3011064af4b3fb83c590f5aa3abb77c02763f51f7e457fbfa5d389c72323- Bytes
- 3554
1/-2Copyright (c) 2026 Ryotaro Tanaka. All rights reserved.3Released under Apache 2.0 license as described in the file LICENSE.4Authors: Ryotaro Tanaka5-/6import Mathlib.LinearAlgebra.Basis.Defs7import Mathlib.LinearAlgebra.Finsupp.Defs89/-!10# Semilinear equivalences determined by two bases1112The scalar ring isomorphism and bases determine the map on every finitely13supported coordinate family. The basis index may be infinite. These declarations14were extracted from the projectivization construction without changing their15mathematical hypotheses or proofs; no projective incidence is needed here.16-/1718set_option autoImplicit false19noncomputable section2021namespace Module.Basis2223universe uK uL uV uW uI24variable {K : Type uK} {L : Type uL} {V : Type uV} {W : Type uW}25variable [Field K] [Field L]26variable [AddCommGroup V] [Module K V] [AddCommGroup W] [Module L W]27variable {ι : Type uI}2829local instance (σ : K ≃+* L) : RingHomInvPair σ.toRingHom σ.symm.toRingHom :=30RingHomInvPair.of_ringEquiv σ31local instance (σ : K ≃+* L) : RingHomInvPair σ.symm.toRingHom σ.toRingHom :=32RingHomInvPair.of_ringEquiv_symm σ3334/-- The semilinear equivalence determined by a scalar isomorphism and two35arbitrary bases. Coefficients are finitely supported; the index type need not36be finite. This construction alone does not assert agreement with a point map. -/37def semilinearEquiv (b : Module.Basis ι K V) (c : Module.Basis ι L W)38(σ : K ≃+* L) : LinearEquiv σ.toRingHom (σ' := σ.symm.toRingHom) V W where39toFun v := c.repr.symm (Finsupp.mapRange σ σ.map_zero (b.repr v))40invFun w := b.repr.symm (Finsupp.mapRange σ.symm σ.symm.map_zero (c.repr w))41left_inv v := by42apply b.repr.injective43ext i44simp45right_inv w := by46apply c.repr.injective47ext i48simp49map_add' v w := by50apply c.repr.injective51ext i52simp53map_smul' a v := by54apply c.repr.injective55ext i56simp [map_mul]5758/-- Every coefficient of the actual semilinear map is prescribed. -/59@[simp]60theorem repr_semilinearEquiv (b : Module.Basis ι K V) (c : Module.Basis ι L W)61(σ : K ≃+* L) (v : V) (i : ι) :62c.repr (semilinearEquiv b c σ v) i = σ (b.repr v i) := by63change c.repr (c.repr.symm (Finsupp.mapRange σ σ.map_zero (b.repr v))) i = _64simp6566/-- The inverse has coefficient map `σ.symm`, with no choice of lifts. -/67@[simp]68theorem repr_semilinearEquiv_symm (b : Module.Basis ι K V)69(c : Module.Basis ι L W) (σ : K ≃+* L) (w : W) (i : ι) :70b.repr ((semilinearEquiv b c σ).symm w) i = σ.symm (c.repr w i) := by71change b.repr (b.repr.symm (Finsupp.mapRange σ.symm σ.symm.map_zero (c.repr w))) i = _72simp7374/-- Evaluation on each basis vector. -/75@[simp]76theorem semilinearEquiv_apply_basis (b : Module.Basis ι K V)77(c : Module.Basis ι L W) (σ : K ≃+* L) (i : ι) :78semilinearEquiv b c σ (b i) = c i := by79classical80apply c.repr.injective81ext j82change c.repr (semilinearEquiv b c σ (b i)) j = c.repr (c i) j83rw [repr_semilinearEquiv]84by_cases hij : i = j85· subst j86simp87· simp [hij, Ne.symm hij]8889/-- Evaluation on every finite linear combination, not just the basis rays. -/90theorem semilinearEquiv_sum (b : Module.Basis ι K V)91(c : Module.Basis ι L W) (σ : K ≃+* L) (s : Finset ι) (a : ι → K) :92semilinearEquiv b c σ (∑ i ∈ s, a i • b i) =93∑ i ∈ s, σ (a i) • c i := by94simp only [map_sum, map_smulₛₗ, semilinearEquiv_apply_basis]95apply Finset.sum_congr rfl96intro i _97rfl9899end Module.Basis