login  home  contents  what's new  discussion  bug reports help  links  subscribe  changes  refresh  edit
 Topics FrontPage SandBox SandBoxMyReduce SandBoxMyReduceInOpenAxiom <-- You are here. \begin{axiom} )version \end{axiom} \begin{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)=(11)$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} Here is another version of the same thing using the = from the Mapping domain. \begin{spad} )abbrev package MYRED2 MyReduce2 MyReduce2(S:Type): with myred2: ((S,S)->S,List S) -> S == add import NonNegativeInteger myred2(f:(S,S)->S, x:List S):S == if #x>1 then f(first x, myred2(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)$Mapping(S,S,S) => return 0$S if S has Monoid then -- f(1,1)=(11)$S and (f = _$S) => return 1$S (f = _*$S)$Mapping(S,S,S) => return 1$S error "reducing over an empty list needs the 3 argument form" \end{spad} Notice that it fails in the same way as above: \begin{axiom} myred2(+,[1,2,3,4]) myred2(+,[]$List Integer) myred2(*,[1,2,3,4]) myred2(*,[]$List Integer) \end{axiom} But it works if we used the original trick of applying the function to get rid of newGoGet before comparing the functions. \begin{spad} )abbrev package MYRED3 MyReduce3 MyReduce3(S:Type): with myred3: ((S,S)->S,List S) -> S == add import NonNegativeInteger myred3(f:(S,S)->S, x:List S):S == if #x>1 then f(first x, myred3(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)$Mapping(S,S,S) => return 0$S if S has Monoid then f(1,1)=(11)$S and (f = _$S)$Mapping(S,S,S) => return 1$S error "reducing over an empty list needs the 3 argument form" \end{spad} \begin{axiom} myred3(+,[1,2,3,4]) myred3(+,[]$List Integer) myred3(*,[1,2,3,4]) myred3(*,[]$List Integer) \end{axiom} Some or all expressions may not have rendered properly, because Axiom returned the following error:Error: export AXIOM=/usr/local/lib/open-axiom/x86_64-unknown-linux/1.1.0-2008-01-28; export ALDORROOT=/usr/local/aldor/linux/1.1.0; export PATH=$ALDORROOT/bin:$PATH; export HOME=/var/zope2/var/LatexWiki; ulimit -t 240;$AXIOM/bin/AXIOMsys < /var/zope2/var/LatexWiki/5780532334998773271-25px.axm /bin/sh: /usr/local/lib/open-axiom/x86_64-unknown-linux/1.1.0-2008-01-28/bin/AXIOMsys: not found  Some or all expressions may not have rendered properly, because Latex returned the following error:This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6) \write18 enabled. %&-line parsing enabled. entering extended mode (./7990258885462259044-16.0px.tex LaTeX2e <2005/12/01> Babel and hyphenation patterns for english, usenglishmax, dumylang, noh yphenation, arabic, farsi, croatian, ukrainian, russian, bulgarian, czech, slov ak, danish, dutch, finnish, basque, french, german, ngerman, ibycus, greek, mon ogreek, ancientgreek, hungarian, italian, latin, mongolian, norsk, icelandic, i nterlingua, turkish, coptic, romanian, welsh, serbian, slovenian, estonian, esp eranto, uppersorbian, indonesian, polish, portuguese, spanish, catalan, galicia n, swedish, ukenglish, pinyin, loaded. (/usr/share/texmf-texlive/tex/latex/base/article.cls Document Class: article 2005/09/16 v1.4f Standard LaTeX document class (/usr/share/texmf-texlive/tex/latex/base/size12.clo)) (/usr/share/texmf-texlive/tex/latex/geometry/geometry.sty (/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty) (/usr/share/texmf-texlive/tex/xelatex/xetexconfig/geometry.cfg) Package geometry Warning: lmargin' and rmargin' result in NEGATIVE (-108.405p t). width' should be shortened in length. ) (/usr/share/texmf-texlive/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the ? option. (/usr/share/texmf-texlive/tex/latex/amsmath/amstext.sty (/usr/share/texmf-texlive/tex/latex/amsmath/amsgen.sty)) (/usr/share/texmf-texlive/tex/latex/amsmath/amsbsy.sty) (/usr/share/texmf-texlive/tex/latex/amsmath/amsopn.sty)) (/usr/share/texmf-texlive/tex/latex/amsfonts/amsfonts.sty) (/usr/share/texmf-texlive/tex/latex/amsfonts/amssymb.sty) (/usr/share/texmf-texlive/tex/latex/amscls/amsthm.sty) (/usr/share/texmf-texlive/tex/latex/setspace/setspace.sty Package: setspace 6.7 <2000/12/01> ) (/usr/share/texmf-texlive/tex/generic/xypic/xy.sty (/usr/share/texmf-texlive/tex/generic/xypic/xy.tex Bootstrap'ing: catcodes, docmode, (/usr/share/texmf-texlive/tex/generic/xypic/xyrecat.tex) (/usr/share/texmf-texlive/tex/generic/xypic/xyidioms.tex) Xy-pic version 3.7 <1999/02/16> Copyright (c) 1991-1998 by Kristoffer H. Rose Xy-pic is free software: see the User's Guide for details. Loading kernel: messages; fonts; allocations: state, direction, utility macros; pictures: \xy, positions, objects, decorations; kernel objects: directionals, circles, text; options; algorithms: directions, edges, connections; Xy-pic loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xyall.tex Xy-pic option: All features v.3.3 (/usr/share/texmf-texlive/tex/generic/xypic/xycurve.tex Xy-pic option: Curve and Spline extension v.3.7 curve, circles, loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xyframe.tex Xy-pic option: Frame and Bracket extension v.3.7 loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xycmtip.tex Xy-pic option: Computer Modern tip extension v.3.3 (/usr/share/texmf-texlive/tex/generic/xypic/xytips.tex Xy-pic option: More Tips extension v.3.3 loaded) loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xyline.tex Xy-pic option: Line styles extension v.3.6 loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xyrotate.tex Xy-pic option: Rotate and Scale extension v.3.3 loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xycolor.tex Xy-pic option: Colour extension v.3.3 loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xymatrix.tex Xy-pic option: Matrix feature v.3.4 loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xyarrow.tex Xy-pic option: Arrow and Path feature v.3.5 path, \ar, loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xygraph.tex Xy-pic option: Graph feature v.3.7 loaded) loaded)) (/usr/share/texmf-texlive/tex/latex/graphics/graphicx.sty (/usr/share/texmf-texlive/tex/latex/graphics/graphics.sty (/usr/share/texmf-texlive/tex/latex/graphics/trig.sty) (/etc/texmf/tex/latex/config/graphics.cfg) (/usr/share/texmf-texlive/tex/latex/graphics/dvips.def))) (/usr/share/texmf-texlive/tex/latex/graphics/color.sty (/etc/texmf/tex/latex/config/color.cfg) (/usr/share/texmf-texlive/tex/latex/graphics/dvipsnam.def)) (/usr/share/texmf-texlive/tex/latex/tools/verbatim.sty) (/usr/share/texmf/tex/latex/graphviz/graphviz.sty (/usr/share/texmf-texlive/tex/latex/psfrag/psfrag.sty)) (/usr/share/texmf/tex/latex/sagetex.sty Writing sage input file 7990258885462259044-16.0px.sage (./7990258885462259044-16.0px.sout)) (/usr/share/texmf-texlive/tex/latex/gnuplottex/gnuplottex.sty (/usr/share/texmf-texlive/tex/latex/base/latexsym.sty) (/usr/share/texmf-texlive/tex/latex/moreverb/moreverb.sty) (/usr/share/texmf-texlive/tex/latex/base/ifthen.sty)) (./7990258885462259044-16.0px.aux) LaTeX Warning: Characters dropped after \end{axiom}' on input line 65. (/usr/share/texmf-texlive/tex/latex/amsfonts/umsa.fd) (/usr/share/texmf-texlive/tex/latex/amsfonts/umsb.fd) (/usr/share/texmf-texlive/tex/latex/base/ulasy.fd) You can't use macro parameter character #' in math mode. l.79 if # x>1 then You can't use macro parameter character #' in math mode. l.81 else if # x=1 then Missing $inserted.$ l.86 -- f(0,0)=(0+0)$S and (f = _ +$S) => return 0$S Missing$ inserted. $l.89 -- f(1,1)=(11)$S and (f = _ $S) => return 1$S Missing $inserted.$ l.92 \end{spad} \newpage Overfull \hbox (137.34442pt too wide) in paragraph at lines 67--92 \OMS/cmsy/m/n/12 ^^@\OML/cmm/m/it/12 importNonNegativeIntegermyred\OT1/cmr/m/n/ 12 (\OML/cmm/m/it/12 f \OT1/cmr/m/n/12 : (\OML/cmm/m/it/12 S; S\OT1/cmr/m/n/12 )\OMS/cmsy/m/n/12 ^^@ \OML/cmm/m/it/12 > S; x \OT1/cmr/m/n/12 : \OML/cmm/m/it/1 2 ListS\OT1/cmr/m/n/12 ) : \OML/cmm/m/it/12 S \OT1/cmr/m/n/12 == \OML/cmm/m/it/ 12 ifx > \OT1/cmr/m/n/12 1\OML/cmm/m/it/12 thenf\OT1/cmr/m/n/12 (\OML/cmm/m/it/ 12 firstx; myred\OT1/cmr/m/n/12 (\OML/cmm/m/it/12 f; restx\OT1/cmr/m/n/12 ))\OM L/cmm/m/it/12 elseifx \OT1/cmr/m/n/12 = 1\OML/cmm/m/it/12 thenfirstxelseifShasA belianMonoidthen \OMS/cmsy/m/n/12 ^^@ Overfull \hbox (36.58308pt too wide) in paragraph at lines 67--92 \OT1/cmr/m/n/12 0$\OML/cmm/m/it/12 SifShasMonoidthen \OMS/cmsy/m/n/12 ^^@ ^^@\O ML/cmm/m/it/12 f\OT1/cmr/m/n/12 (1\OML/cmm/m/it/12 ; \OT1/cmr/m/n/12 1) = (1 \O MS/cmsy/m/n/12 ^^C \OT1/cmr/m/n/12 1)$S and (f = $[]$S) => re-turn 1$\OML/cmm/m /it/12 S\OT1/cmr/m/n/12 (\OML/cmm/m/it/12 f \OT1/cmr/m/n/12 =[]$S) => re-turn 1 $\OML/cmm/m/it/12 Serror\OT1/cmr/m/n/12 "\OML/cmm/m/it/12 reducingoveranemptyli stneedsthe\OT1/cmr/m/n/12 3\OML/cmm/m/it/12 argumentform\OT1/cmr/m/n/12 "$ [1] LaTeX Warning: Characters dropped after \end{axiom}' on input line 99. You can't use macro parameter character #' in horizontal mode. l.107 if # x>1 then You can't use macro parameter character #' in horizontal mode. l.109 else if # x=1 then [2] LaTeX Warning: Characters dropped after \end{axiom}' on input line 126. You can't use macro parameter character #' in horizontal mode. l.134 if # x>1 then You can't use macro parameter character #' in horizontal mode. l.136 else if # x=1 then [3] LaTeX Warning: Characters dropped after \end{axiom}' on input line 151. [4] (./7990258885462259044-16.0px.aux) ) (see the transcript file for additional information) Output written on 7990258885462259044-16.0px.dvi (4 pages, 4304 bytes). Transcript written on 7990258885462259044-16.0px.log. `

 Subject:   Be Bold !! ( 14 subscribers )