login  home  contents  what's new  discussion  bug reports help  links  subscribe  changes  refresh  edit

# Edit detail for SandBoxMyReduceInFriCAS revision 1 of 4

 1 2 3 4 Editor: Bill Page Time: 2008/04/08 15:39:22 GMT-7 Note: test for newGoGet

changed:
-
\begin{axiom}
)version
\end{axiom}
)abbrev package MYRED MyReduce
MyReduce(S:Type): with
myred: ((S,S)->S,List S) -> S
-- Waldek's local helper function
((f:(S,S)->S) = (g:(S,S)->S)):Boolean ==
print(coerceMap2E(f)$Lisp::OutputForm) print(coerceMap2E(g)$Lisp::OutputForm)
EQ(f,g)$Lisp -- import NonNegativeInteger myred(f:(S,S)->S, x:List S):S == if #x>1 then f(first x, myred(f,rest x)) else if #x=1 then first x else if S has AbelianMonoid then -- Must force "newGoGet" by applying operations before comparison! -- f(0,0)=(0+0)$S and (f = _+$S) => return 0$S
(f = _+$S) => return 0$S
if S has Monoid then
-- f(1,1)=(1*1)$S and (f = _*$S) => return 1$S (f = _*$S) => return 1$S error "reducing over an empty list needs the 3 argument form" \end{spad} \begin{axiom} myred(+,[1,2,3,4]) myred(+,[]$List Integer)
myred(*,[1,2,3,4])
myred(*,[]$List Integer) \end{axiom}  axiom)version Value = "Friday November 9, 2007 at 19:35:06 " spad)abbrev package MYRED MyReduce MyReduce(S:Type): with myred: ((S,S)->S,List S) -> S == add -- Waldek's local helper function ((f:(S,S)->S) = (g:(S,S)->S)):Boolean == print(coerceMap2E(f)$Lisp::OutputForm)
print(coerceMap2E(g)$Lisp::OutputForm) EQ(f,g)$Lisp
--
import NonNegativeInteger
myred(f:(S,S)->S, x:List S):S ==
if #x>1 then
f(first x, myred(f,rest x))
else if #x=1 then
first x
else
if S has AbelianMonoid then
-- Must force "newGoGet" by applying operations before comparison!
-- f(0,0)=(0+0)$S and (f = _+$S) => return 0$S (f = _+$S) => return 0$S if S has Monoid then -- f(1,1)=(1*1)$S and (f = _*$S) => return 1$S
(f = _*$S) => return 1$S
error "reducing over an empty list needs the 3 argument form"
   Compiling FriCAS source code from file
old system compiler.
MYRED abbreviates package MyReduce
------------------------------------------------------------------------
initializing NRLIB MYRED for MyReduce
compiling into NRLIB MYRED
compiling local = : ((S,S) -> S,(S,S) -> S) -> Boolean
Time: 0.06 SEC.
importing NonNegativeInteger
compiling exported myred : ((S,S) -> S,List S) -> S
****** Domain: S already in scope
augmenting S: (AbelianMonoid)
****** Domain: S already in scope
augmenting S: (Monoid)
Time: 0.05 SEC.
(time taken in buildFunctor:  7)
;;;     ***       |MyReduce| REDEFINED
;;;     ***       |MyReduce| REDEFINED
Time: 0.07 SEC.
Cumulative Statistics for Constructor MyReduce
Time: 0.18 seconds
finalizing NRLIB MYRED
Processing MyReduce for Browser database:
--->-->MyReduce((myred (S (Mapping S S S) (List S)))): Not documented!!!!
--->-->MyReduce(constructor): Not documented!!!!
--->-->MyReduce(): Missing Description
------------------------------------------------------------------------
MyReduce is now explicitly exposed in frame initial
MyReduce will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYRED.NRLIB/code

axiommyred(+,[1,2,3,4]) (1)
Type: PositiveInteger?
axiommyred(+,[]$List Integer) theMap(INT;+;3$;37,688)
theMap(newGoGet)
theMap(INT;+;3\$;37,688)
theMap(newGoGet)
>> Error detected within library code:
reducing over an empty list needs the 3 argument form