- interface VectorSpace
A vector space is a module over a ring that is also a field
- interface Module
A module over a ring is an additive abelian group of 'vectors' endowed with a
scale operation multiplying vectors by ring elements, and distributivity laws
relating the scale operation to both ring addition and module addition.
Must satisfy the following laws:
- Compatibility of scalar multiplication with ring multiplication:
forall a b v, a <#> (b <#> v) = (a <.> b) <#> v
- Ring unity is the identity element of scalar multiplication:
forall v, unity <#> v = v
- Distributivity of
<#>
and <+>
:
forall a v w, a <#> (v <+> w) == (a <#> v) <+> (a <#> w)
forall a b v, (a <+> b) <#> v == (a <#> v) <+> (b <#> v)
- (<#>) : Module a
b =>
a ->
b ->
b
- Fixity
- Left associative, precedence 5
- interface InnerProductSpace
An inner product space is a module – or vector space – over a ring, with a binary function
associating a ring value to each pair of vectors.
- (<||>) : InnerProductSpace a
b =>
b ->
b ->
a
- Fixity
- Left associative, precedence 2