Module docstring
{"# Bases
This file defines bases in a module or vector space.
It is inspired by Isabelle/HOL's linear algebra, and hence indirectly by HOL Light.
Main definitions
All definitions are given for families of vectors, i.e. v : ι → M where M is the module or
vector space and ι : Type* is an arbitrary indexing type.
Basis ι R Mis the type ofι-indexedR-bases for a moduleM, represented by a linear equivM ≃ₗ[R] ι →₀ R.the basis vectors of a basis
b : Basis ι R Mare available asb i, wherei : ιBasis.repris the isomorphism sendingx : Mto its coordinatesBasis.repr x : ι →₀ R. The converse, turning this isomorphism into a basis, is calledBasis.ofRepr.If
ιis finite, there is a variant ofreprcalledBasis.equivFun b : M ≃ₗ[R] ι → R(saving you from having to work withFinsupp). The converse, turning this isomorphism into a basis, is calledBasis.ofEquivFun.Basis.reindexuses an equiv to map a basis to a different indexing set.Basis.mapuses a linear equiv to map a basis to a different module.Basis.constr: givenb : Basis ι R Mandf : ι → M, construct a linear mapgso thatg (b i) = f i.Basis.coord:b.coord i xis thei-th coordinate of a vectorxwith respect to the basisb.
Main results
Basis.extstates that two linear maps are equal if they coincide on a basis. Similar results are available for linear equivs (if they coincide on the basis vectors), elements (if their coordinates coincide) and the functionsb.reprand⇑b.
Implementation notes
We use families instead of sets because it allows us to say that two identical vectors are linearly
dependent. For bases, this is useful as well because we can easily derive ordered bases by using an
ordered index type ι.
Tags
basis, bases
"}