# 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