/usr/share/axiom-20170501/src/algebra/RETRACT.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 | )abbrev category RETRACT RetractableTo
++ Date Last Updated: 14 May 1991
++ Description:
++ A is retractable to B means that some elements if A can be converted
++ into elements of B and any element of B can be converted into an
++ element of A.
RetractableTo(S) : Category == SIG where
S : Type
SIG ==> with
coerce : S -> %
++ coerce(a) transforms a into an element of %.
retractIfCan : % -> Union(S,"failed")
++ retractIfCan(a) transforms a into an element of S if possible.
++ Returns "failed" if a cannot be made into an element of S.
retract : % -> S
++ retract(a) transforms a into an element of S if possible.
++ Error: if a cannot be made into an element of S.
add
retract(s) ==
(u:=retractIfCan s) case "failed" => error "not retractable"
u
|