General plans regarding basic notions and functions for (combinatorial) matrices.
More...
Go to the source code of this file.
Detailed Description
General plans regarding basic notions and functions for (combinatorial) matrices.
 Todo:
 Complete the tests
 Todo:
 Organisation

Splitoff several files.

RandomMatrices.mac

AlgebraicOperations.mac

DONE Isomorphisms.mac
 Todo:
 Basic notions

DONE A "(combinatorial) matrix" is a triple [R,C,f], where R is the set of row indices, C the set of column indices, and f is a map with domain R x C.

DONE While a "square matrix" is a pair [I, f], where f is a map with domain I x I.

DONE Square matrices [I,f] can be converted to matrices [I,I,f].

DONE A matrix "over H" is a matrix whose values are elements of H.

So combinatorial matrices over {0,1} correspond to *incidence structures*, while combinatorial matrices over {1,0,+1} correspond to labelled boolean clausesets.

DONE We also have "ordered matrices" and "ordered square matrices", where instead of indexsets we have repetitionfree lists.

DONE Abbreviations:

"com" for combinatorial matrices

"scom" for square combinatorial matrices

"sycom" for symmetric combinatorial matrices: perhaps better not, since we only express type information?

"ocom" for ordered combinatorial matrices

"oscom" for ordered square combinatorial matrices

("osycom" for ordered symmetric combinatorial matrices).

DONE A "standardised combinatorial matrix" (stdcom) has index sets {1,...,n} for n in NN_0.
 Todo:
 Conversions

Reflect on the naming of "lmcom2m, lmscom2m" (compare with "Improving the oklarrays" in ComputerAlgebra/DataStructures/Lisp/plans/HashMaps.hpp).

DONE (it seems using "matrix" is preferable) A matrix [R,C,f] can be converted to a Maxima matrix
genmatrix(lambda([i,j],f(listify(R)[i],listify(C)[j])), length(R), length(C));

A square matrix M=[I,f] is converted into a directed graph dg(M) with vertex set I and an directed edge from i to j for i # j iff f(i,j) # 0.

dgl(M) has a loop at entry [i,i] iff f(i,i) # 0.

DONE The general hypergraph hyp(M) for matrix M=[I,J,f] has vertex set I, hyperedge set J, and hyperedge j contains vertex i iff f(i,j) # 0.

The labelled clauseset cls(M) for matrix M=[I,J,f] has variable set I, clauseindex set J, while clause j contains variable i positively, negatively or not iff f(i,j) > 0, < 0, = 0 respectively.

For a general hypergraph G we can form the vertexedge incidence matrix as well as the edgevertex incidence matrix.

For a labelled clauseset F we can form the clausevariable matrix as well as the variableclause matrix.

For a directed graph (with loops) G we can form the adjacency matrix.
 Todo:
 Symmetric matrices

Maxima has "symmetricp" (in package "ctensor"), but this does not work.

It seems to belong to the base, but is not defined.

Then, after load(ctensor), it comes up with an error, showing that apparently it is defined differently.

Make a bugreport.
 Todo:
 Duality and polarity
Definition in file Basics.hpp.