This file is indexed.

/usr/share/axiom-20170501/src/algebra/IMATRIX.spad is in axiom-source 20170501-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
)abbrev domain IMATRIX IndexedMatrix
++ Author: Grabmeier, Gschnitzer, Williamson
++ Date Created: 1987
++ Date Last Updated: July 1990
++ Description:
++ An \spad{IndexedMatrix} is a matrix where the minimal row and column
++ indices are parameters of the type.  The domains Row and Col
++ are both IndexedVectors.
++ The index of the 'first' row may be obtained by calling the
++ function \spadfun{minRowIndex}.  The index of the 'first' column may
++ be obtained by calling the function \spadfun{minColIndex}.  The index of
++ the first element of a 'Row' is the same as the index of the
++ first column in a matrix and vice versa.

IndexedMatrix(R,mnRow,mnCol) : SIG == CODE where
  R : Ring
  mnRow : Integer
  mnCol : Integer

  Row ==> IndexedVector(R,mnCol)
  Col ==> IndexedVector(R,mnRow)
  MATLIN ==> MatrixLinearAlgebraFunctions(R,Row,Col,$)
 
  SIG ==> MatrixCategory(R,Row,Col)
 
  CODE ==> InnerIndexedTwoDimensionalArray(R,mnRow,mnCol,Row,Col) add
 
      swapRows_!(x,i1,i2) ==
        (i1 < minRowIndex(x)) or (i1 > maxRowIndex(x)) or _
           (i2 < minRowIndex(x)) or (i2 > maxRowIndex(x)) =>
             error "swapRows!: index out of range"
        i1 = i2 => x
        minRow := minRowIndex x
        xx := x pretend PrimitiveArray(PrimitiveArray(R))
        n1 := i1 - minRow; n2 := i2 - minRow
        row1 := qelt(xx,n1)
        qsetelt_!(xx,n1,qelt(xx,n2))
        qsetelt_!(xx,n2,row1)
        xx pretend $
 
      if R has commutative("*") then
 
        determinant x == determinant(x)$MATLIN

        minordet    x == minordet(x)$MATLIN
 
      if R has EuclideanDomain then
 
        rowEchelon  x == rowEchelon(x)$MATLIN
 
      if R has IntegralDomain then
 
        rank        x == rank(x)$MATLIN

        nullity     x == nullity(x)$MATLIN

        nullSpace   x == nullSpace(x)$MATLIN
 
      if R has Field then
 
        inverse     x == inverse(x)$MATLIN