/usr/share/axiom-20170501/src/algebra/DIRPROD2.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 | )abbrev package DIRPROD2 DirectProductFunctions2
++ Description:
++ This package provides operations which all take as arguments direct
++ products of elements of some type \spad{A} and functions from \spad{A}
++ to another type B. The operations all iterate over their vector argument
++ and either return a value of type B or a direct product over B.
DirectProductFunctions2(dim, A, B) : SIG == CODE where
dim : NonNegativeInteger
A : Type
B : Type
DA ==> DirectProduct(dim, A)
DB ==> DirectProduct(dim, B)
VA ==> Vector A
VB ==> Vector B
O2 ==> FiniteLinearAggregateFunctions2(A, VA, B, VB)
SIG ==> with
scan : ((A, B) -> B, DA, B) -> DB
++ scan(func,vec,ident) creates a new vector whose elements are
++ the result of applying reduce to the binary function func,
++ increasing initial subsequences of the vector vec,
++ and the element ident.
reduce : ((A, B) -> B, DA, B) -> B
++ reduce(func,vec,ident) combines the elements in vec using the
++ binary function func. Argument ident is returned if the vector is empty.
map : (A -> B, DA) -> DB
++ map(f, v) applies the function f to every element of the vector v
++ producing a new vector containing the values.
CODE ==> add
import FiniteLinearAggregateFunctions2(A, VA, B, VB)
map(f, v) == directProduct map(f, v::VA)
scan(f, v, b) == directProduct scan(f, v::VA, b)
reduce(f, v, b) == reduce(f, v::VA, b)
|