testMatrixOK :-
    matrixOK([3,2,[[1,2],[3,4],[5,6]]]),
    matrixOK([0,0,[]]),
    matrixOK([1,1,[[42]]]),
    not(matrixOK([3,3,[[1,2],[3,4],[5,6]]])),
    not(matrixOK([2,4,[[1,2],[3,4],[5,6]]])),
    not(matrixOK([2,3,[[1,2],[3,4],[5,6,7]]])),
    not(matrixOK([3,3,[[1,2],[3,4],[5,6],[7,8]]])).
    
    
%matrixAt([3,2,[[1,2],[3,4],[5,6]]], 2, 0, X).

testMatrixAt :-
    matrixAt([3,2,[[1,2],[3,4],[5,6]]], 2, 0, 5),
    matrixAt([3,2,[[1,2],[3,4],[5,6]]], 0, 0, 1),
    matrixAt([3,2,[[1,2],[3,4],[5,6]]], 2, 1, 6),
    matrixAt([1,1,[[42]]], 0, 0, 42),
    not(matrixAt([3,2,[[1,2],[3,4],[5,6]]], 1, 1, 3)). 

        
%matrixAdd([3,2,[[1,2],[3,4],[5,6]]], [3,2,[[1,2],[3,4],[5,6]]], Erg). 

testMatrixAdd :-
    matrixAdd([3,2,[[1,2],[3,4],[5,6]]]
            , [3,2,[[1,2],[3,4],[5,6]]]
            , [3, 2, [[2, 4], [6, 8], [10, 12]]]),
    matrixAdd([2,3,[[1,2,3],[4,5,6]]]
            , [2,3,[[7,6,5],[4,3,2]]]
            , [2,3,[[8,8,8],[8,8,8]]]),
    matrixAdd([1,1,[[42]]], [1,1,[[5]]], [1,1,[[47]]]),
    not(matrixAdd([3,2,[[1,2],[3,4],[5,6]]]
            , [3,2,[[1,2],[3,4],[5,6]]]
            , [3, 2, [[2, 4], [6, 8], [9, 12]]])).               

testAll :-
  testMatrixOK,
  testMatrixAt,
  testMatrixAdd,
  !.    