# ConstantLinearDependence(R, F)¶

`ConstantLinearDependence(R, F)` supports solving linear systems with coefficients in `Expression(R)` over constants. The parameter `ld` to each function is a list of derivations to use. By definition element `f` from `Expression(R)` is a constant if for each `d` in `ld` we have `d(f) = 0`. We assume that inputs are normalized in such a way that field of constants is generated by constant kernels.

constant_subspace: (List Vector F, List(F -> F)) -> Record(transform: Matrix F, basis: List Vector F)

`constant_subspace(b, ld)` returns [`M`, `nb`] such that `nb` is basis of subspace spanned by `b` over `F` consistng of vectors with constant coordinates. `M` is the transformation matrix, i.e. `mnb` = `M` `mb` where `mb` (`mnb` respectively) is matrix having `b` (`nb` respectively) as rows.

linearDependenceOverConstants: (Vector F, List(F -> F)) -> Union(Vector F, failed)

`linearlyDependenceOverConstants([v1, ..., vn], ld)` returns `[c1, ..., cn]` if `c1*v1 + ... + cn*vn = 0` and not all the `ci``'s` are 0, “failed” if the `vi``'s` are linearly independent over constants.

linearlyDependentOverConstants?: (Vector F, List(F -> F)) -> Boolean

`linearlyDependentOverConstants?([v1, ..., vn], ld)` returns `true` if the `vi``'s` are linearly dependent over constants, `false` otherwise.

nullSpaceOverConstants: (Matrix F, List(F -> F)) -> List Vector F

`nullSpaceOverConstants(A, ld)` returns basis of the homogeneous system `A*vc = 0` where `vc` is a vector of constants.

particularSolutionOverConstants: (Matrix F, Vector F, List(F -> F)) -> Union(Vector F, failed)

`solveLinearlyOverConstants([v1, ..., vn], u, ld)` returns `[c1, ..., cn]` such that `c1*v1 + ... + cn*vn = u`, “failed” if no such rational numbers `ci``'s` exist.

particularSolutionOverConstants: (Vector F, F, List(F -> F)) -> Union(Vector F, failed)

`particularSolutionOverConstants([v1, ..., vn], u, ld)` returns `[c1, ..., cn]` such that `c1*v1 + ... + cn*vn = u`, “failed” if no such constants numbers `ci``'s` exist.

reducedSystem: (Matrix F, List(F -> F)) -> Matrix F

`reducedSystem(A, ld)` returns a matrix of constants `B` such that `A x = 0` and `B x = 0` have the same solutions over constants.

reducedSystem: (Matrix F, Vector F, List(F -> F)) -> Record(mat: Matrix F, vec: Vector F)

`reducedSystem(A, v, ld)` returns matrix of constants `B` and vector of constants `w` such that `A x = v` and `B x = w` have the same solutions over constants.

solveLinearOverConstants: (Matrix F, Vector F, List(F -> F)) -> Record(particular: Union(Vector F, failed), basis: List Vector F)

`solveLinearOverConstants([v1, ..., vn], u, ld)` returns solution of the system `c1*v1 + ... + cn*vn = u` and and a basis of the associated homogeneous system `c1*v1 + ... + cn*vn = 0`

solveLinearOverConstants: (Vector F, F, List(F -> F)) -> Record(particular: Union(Vector F, failed), basis: List Vector F)

`solveLinearOverConstants([v1, ..., vn], u, ld)` returns solution of the system `c1*v1 + ... + cn*vn = u` and and a basis of the associated homogeneous system `c1*v1 + ... + cn*vn = 0`