Main commands of RankFactorizationProblem

 
Following is a table of the main commands of the Maple package RankFactorizationProblem.  
 
 
List the main functions of the RankFactorizationProblem package
RankFactorization(M, L, k) Compute the outputs of Algorithm 3 of Rank factorization paper, where M ∈ ℚm × n, L a list of matrices D1, …, Dr ∈ ℚ m × m, and k = 0, …, r-1.  
 
Using the option ''reduced'' as the last argument of the function, a reduction of the sizes of the parameters q and ti in Algorithm 3 is attempted but at the cost of calculation time.
Solutions(M, L, k) Compute the solutions of the rank factorization problem M = D1 u v1 + ... + Dr u vr, where M ∈ ℚm × n, L a list of matrices D1, …, Dr ∈ ℚ m × m, and k = 0, …, r-1.  
 
Using the option ''reduced'' as the last argument of the function, a reduction of the sizes of the parameters q and ti in Algorithm 3 is attempted but at the cost of calculation time.
IsSolution Check again that the outputs of Solutions(M, L, k) define solutions of the corresponding rank factorization problem.
List low-level functions of the RankFactorizationProblem package, where R = ℚ[x1, …, xm]  
 
For the functions which contain an argument V, if R = T[xm], where T = ℚ [x1, …, xm-1], and Vs = xm P - 1, where P, V1, …, Vs-1 ∈ T, then S corresponds to the localization AP of the factor ring A = T/⟨ V1, …, Vs-1 ⟩ at P
Factorization(M1, M2, V, R) Left factorize M1Sa × b by M2 ∈ Sc × b, i.e., find (when possible) F ∈ Sa × c such that M1 = F M2, where S = R/⟨ V1, …, Vs ⟩ and Vi ∈ R is the ith entry of the column matrix V.  
 
To compute a right factorization of M1Sa × b by M2 ∈ Sa × c, i.e., find (when possible) F ∈ Sb × c such that M1 = M2 F, simply do Transpose(Factorization(Transpose(M1),Transpose(M2), V, R)).
FittingIdeal(M, i, R) Compute a set of generators for the ith Fitting ideal Fitti(M) of the R-module cokerR(.M) finitely presented by the matrix M ∈ Rq × p.  
 
With the option ''reduced'', it returns a Gröbner basis for this set of generators for the tdeg monomial order.
IsInvertible(P, V, R) Check whether or not the residue class π(P) of P ∈ R in the factor ring R/⟨ V1, …, Vs ⟩ is invertible, where Vi ∈ R is the ith entry of the column matrix V.
IsNilpotent(P, V, R) Check whether or not the residue class π(P) of P ∈ R in the factor ring R/⟨ V1, …, Vs ⟩ is nilpotent, where Vi ∈ R is the ith entry of the column matrix V.
Saturation(P, L, R) Compute the saturation ideal ⟨ L1, …, Lr ⟩ : ⟨ P ⟩ of the ideal ⟨ L1, …, Lr ⟩ of R with respect to P, where Li is the ith entry of the list L and P, L1, …, Lr ∈ R.
Simplification(M ,V, R) Simplify the entries of the matrix M ∈ Rq × p by computing the matrix π(M) ∈ Sq × p whose entries are the normal forms of the entries of M in the factor ring R/⟨ V1, …, Vs ⟩, where Vi ∈ R is the ith entry of the column matrix V.
Syzygies(M, V, R) Compute P ∈ Sr × q such that kerS(. π(M)) = imS(.P), where S = R/⟨ V1, …, Vs ⟩, Vi ∈ R is the ith entry of the column matrix V, M ∈ Rq × p, and π(M) ∈ Sq × p the matrix formed by the residue classes of the entries of M in the factor ring S.
ReducedSyzygies(M, V, R) Reduce the output of the Syzygies function, i.e., reduce the integer r by removing trivial syzygies among the syzygies (but at the cost of calculation time).  
 
This function is used by the RankFactorization and Solutions functions when the option ''reduced'' is added to them.
LeftLift(M, V, R) Compute (when possible) a left inverse of the matrix M ∈ Rq × p whose entries belong to S = R/⟨ V1, …, Vs ⟩, where Vi ∈ R is the ith entry of the column matrix V, namely, a matrix L ∈ Sp × q satisfying L π(M) = Ip, where π(M) ∈ Sq × p denotes the matrix formed by the residue classes of the entries of M in the factor ring S.
RightLift(M, V, R) Compute (when possible) a right inverse of the matrix M ∈ Rq × p whose entries belong to S = R/⟨ V1, …, Vs ⟩, where Vi ∈ R is the ith entry of the column matrix V, namely, a matrix L ∈ Sp × q satisfying π(M) L = Iq, where π(M) ∈ Sq × p denotes the matrix formed by the residue classes of the entries of M in the factor ring S.
Lift(M, V, R) Compute (when possible) a generalized inverse of the matrix M ∈ Rq × p whose entries belong to S = R/⟨ V1, …, Vs ⟩, where Vi ∈ R is the ith entry of the column matrix V, namely, a matrix L ∈ Sp × q satisfying π(M) L π(M) = π(M), where π(M) ∈ Sq × p denotes the matrix formed by the residue classes of the entries of M in the factor ring S.
List of functions that are useful for studying the demodulation problems (more to come)
AntiDiagonal(n) Compute the antidiagonal matrix of the size n.
LeeMatrix(n) Compute a Lee matrix of size n.  
 
If the option ''unitary'' is added, then a unitary Lee matrix is returned.  
 
If the option ''unitary_symbolic'' is added, then a symbolic unitary Lee matrix is returned which depends on a parameter name q, given as the third argument, which satisfies the relation q2 = 2.
CentroHermitian(M) Test whether or not a matrix M ∈ ℚ[I]q × p is centrohermitian

 
Please, see also the Library of Examples. See Appendix of Inria Report 9438.
 

Download Maple package RankFactorizationProblem

 
RankFactorizationProblem is available for a recent version of Maple: After downloading the Maple package, you can follow the installation guide below.
 
RankFactorizationProblem requires the Maple library OreModules.
 
After installing RankFactorizationProblem, it would be helpful if you could send us a short e-mail which explains for what purpose RankFactorizationProblem is beneficial for you.
 
If you encounter any problem with RankFactorizationProblem, do not hesitate to contact us.
 

Installing RankFactorizationProblem

 
  1. Copy the file " RankFactorizationProblem.mla", which is the library RankFactorizationProblem (see download), into a directory called "RankFactorizationProblem".
  2. Click on the file RankFactorizationProblem.mla.
  3. It should open a Maple worksheet with the command march('open',"global path/RankFactorization/RankFactorizationProblem.mla");
  4. Execute this command.
  5. Finally, try:
     
    with(OreModules):
    with(RankFactorizationProblem);

     
    If you encounter any problem, then most probably the definition of libname in step 3 is wrong in the sense that its value does not point to the correct directory where your library file resides.
     
    A reasonable way to check your installation is to run one of the example worksheets of the Library of Examples.
     
    If you still have problems concerning the installation of RankFactorizationProblem, please contact us.
 

Handling similar computations with CapAndHomalg

 
For an example handled by CapAndHomalg (GAP), see Appendix of:  
 
Dagher, R., Hubert, E., Quadrat, A. (2021). "On the general solutions of a rank factorization problem arising in vibration analysis", INRIA Research Report n. 9438, version 1 ( Inria Report 9438).

The corresponding CapAndHomalg file can be downloaded here RR9438.ipynb