# Basic Operations

## Accessing Vector Space Invariants

### `V . i: ModTupFld, RngIntElt -> ModTupFldElt`

Given a vector space $V$ and a positive integer $i$, return the $i$-th generating element of $V$.

### `CoefficientField(V): ModTupFld -> Fld`

### `BaseField(V): ModTupFld -> Fld`

Given a $K$-vector space $V$, return the field $K$.

### `Degree(V): ModTupFld -> RngIntElt`

Given a $K$-vector space $V$ which is a subspace of $K^{(n)}$, return $n$.

### `Degree(u): ModTupFldElt -> RngIntElt`

Given a vector $u$ belonging to a subspace of the vector space $K^{(n)}$, return $n$.

### `Dimension(V): ModTupFld -> RngIntElt`

The dimension of the vector space $V$.

### `Generators(V): ModTupFld -> { ModElt}`

The generators for the vector space $V$, returned as a set.

### `NumberOfGenerators(M): ModTupFld -> RngIntElt`

### `Ngens(M): ModTupFld -> RngIntElt`

The number of generators for the vector space $V$.

### `OverDimension(V): ModTupFld -> RngIntElt`

Given a $K$-vector space $V$ which is a subspace of $K^{(n)}$, return $n$.

### `OverDimension(u): ModTupFldElt -> RngIntElt`

Given a vector $u$ belonging to a subspace of the vector space $K^{(n)}$, return $n$.

### `Generic(V): ModFld -> ModFld`

The generic vector space containing $V$, i.e. the full vector space in which $V$ is naturally embedded.

### `Parent(V): ModFld -> SetPow`

The power structure for the vector space $V$ (the set consisting of all finite dimensional vector spaces).

## Membership and Equality

### `v in V: ModTupFldElt, ModTupFld -> BoolElt`

Returns `true` if the element $v$ lies in the vector space $V$, where $v$ and $V$ belong to a common space.

### `v notin V: ModTupFldElt, ModTupFld -> BoolElt`

Returns `true` if the element $v$ does not lie in the vector space $V$, where $v$ and $V$ belong to a common space.

### `U subset V: ModTupFld, ModTupFld -> BoolElt`

Returns `true` if the $K$-vector space $U$ is contained in the $K$-vector space $V$, where $U$ and $V$ are subspaces of some common vector space.

### `U notsubset V: ModTupFld, ModTupFld -> BoolElt`

Returns `true` if the $K$-vector space $U$ is not contained in the $K$-vector space $V$, where $U$ and $V$ are subspaces of some common vector space.

### `U eq V: ModTupFld, ModTupFld -> BoolElt`

Returns `true` if the subspaces $U$ and $V$ are equal, where $U$ and $V$ belong to a common vector space.

### `U ne V: ModTupFld, ModTupFld -> BoolElt`

Returns `true` if the subspaces $U$ and $V$ are not equal, where $U$ and $V$ belong to a common vector space.

## Operations on Subspaces

### `U + V: ModTupFld, ModTupFld -> ModTupFld`

Sum of the subspaces $U$ and $V$, where $U$ and $V$ must be subspaces of a common vector space.

### `U meet V: ModTupFld, ModTupFld -> ModTupFld`

Intersection of the subspaces $U$ and $V$, where $U$ and $V$ must be subspaces of a common vector space.

### `U meet:= V: ModTupFld, ModTupFld -> ModTupFld`

Replace $U$ with the intersection of the subspaces $U$ and $V$, where $U$ and $V$ must be subspaces of a common vector space.

### `&meet S: [ ModTupFld ] -> ModTupFld`

Intersection of the subspaces of the set or sequence $S$, which must be subspaces of a common vector space.

### `TensorProduct(U, V): ModTupFld, ModTupFld -> FldElt`

The tensor (Kronecker) product of the vector spaces $U$ and $V$, generated by all the tensor products of elements of $U$ by elements of $V$. The resulting vector space has degree equal to the product of the degrees of $U$ and $V$.

### `Complement(V, U): ModTupFld, ModTupFld -> ModTupFld`

Given a subspace $U$ of the vector space $V$, construct a complement for $U$ in $V$ (a subspace of $V$).

Note that this complement is always with respect to the standard inner product, and thus need not be orthogonal with respect to a given one.

### `Transversal(V, U): ModTupFld, ModTupFld -> { ModTupFldELt}`

Given a subspace $U$ of the vector space $V$ over a finite field, return a transversal for $U$ in $V$ as a set of vectors.
