\documentclass{article} \usepackage{open-axiom} \begin{document} \title{\$SPAD/src/algebra variable.spad} \author{The Axiom Team} \maketitle \begin{abstract} \end{abstract} \eject \tableofcontents \eject \section{domain OVAR OrderedVariableList} <>= )abbrev domain OVAR OrderedVariableList ++ Description: ++ This domain implements ordered variables OrderedVariableList(VariableList:List Symbol): Join(OrderedFinite, ConvertibleTo Symbol, ConvertibleTo InputForm, ConvertibleTo Pattern Float, ConvertibleTo Pattern Integer) with variable: Symbol -> Union(%,"failed") ++ variable(s) returns a member of the variable set or failed == add VariableList := removeDuplicates VariableList Rep := PositiveInteger s1,s2:% convert(s1):Symbol == VariableList.((s1::Rep)::PositiveInteger) coerce(s1):OutputForm == (convert(s1)@Symbol)::OutputForm convert(s1):InputForm == convert(convert(s1)@Symbol) convert(s1):Pattern(Integer) == convert(convert(s1)@Symbol) convert(s1):Pattern(Float) == convert(convert(s1)@Symbol) index i == i::% lookup j == j :: Rep size () == #VariableList variable(exp:Symbol) == for i in 1.. for exp2 in VariableList repeat if exp=exp2 then return i::PositiveInteger::% "failed" s1 < s2 == s2 <$Rep s1 s1 = s2 == s1 =$Rep s2 latex(x:%):String == latex(convert(x)@Symbol) @ \section{domain VARIABLE Variable} <>= )abbrev domain VARIABLE Variable ++ Description: ++ This domain implements variables Variable(sym:Symbol): Join(SetCategory, CoercibleTo Symbol) with variable: () -> Symbol ++ variable() returns the symbol == add coerce(x:%):Symbol == sym coerce(x:%):OutputForm == sym::OutputForm variable() == sym x = y == true latex(x:%):String == latex sym @ \section{domain RULECOLD RuleCalled} <>= )abbrev domain RULECOLD RuleCalled ++ Description: ++ This domain implements named rules RuleCalled(f:Symbol): SetCategory with name: % -> Symbol ++ name(x) returns the symbol == add name r == f coerce(r:%):OutputForm == f::OutputForm x = y == true latex(x:%):String == latex f @ \section{domain FUNCTION FunctionCalled} <>= )abbrev domain FUNCTION FunctionCalled ++ Description: ++ This domain implements named functions FunctionCalled(f:Symbol): SetCategory with name: % -> Symbol ++ name(x) returns the symbol == add name r == f coerce(r:%):OutputForm == f::OutputForm x = y == true latex(x:%):String == latex f @ \section{domain ANON AnonymousFunction} <>= )abbrev domain ANON AnonymousFunction ++ Date Last Modified: April 20, 2009 ++ Description: ++ This domain implements anonymous functions AnonymousFunction():SetCategory with parameters: % -> List Identifier ++ parameters(f) returns the list of parameters bound by `f'. body: % -> Syntax ++ body(f) returns the body of the unnamed function `f'. == add import Syntax import %lsecond: % -> Syntax from Foreign Builtin import %lthird: % -> Syntax from Foreign Builtin coerce(x:%):OutputForm == x pretend OutputForm parameters f == ps := %lsecond f ps case Identifier => [ps]$List(Identifier) getOperands(ps) pretend List(Identifier) body f == %lthird f @ \section{The ModePatternVariable} <>= )abbrev domain MODEPVAR ModePatternVariable ++ Author: Gabriel Dos Reis ++ Date Create: June 10, 2008 ++ Description: This is the datatype for pattern variables in library ++ modemap description. ModePatternVariable(): Public == Private where Public == SetCategory Private == add Rep == Symbol x = y == rep x = rep y coerce(x: %): OutputForm == outputForm rep x @ \section{License} <>= --Copyright (C) 1991-2002, The Numerical Algorithms Group Ltd. --All rights reserved. --Copyright (C) 2007-2008, Gabriel Dos Reis. --All rights reserved. -- --Redistribution and use in source and binary forms, with or without --modification, are permitted provided that the following conditions are --met: -- -- - Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- -- - Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in -- the documentation and/or other materials provided with the -- distribution. -- -- - Neither the name of The Numerical ALgorithms Group Ltd. nor the -- names of its contributors may be used to endorse or promote products -- derived from this software without specific prior written permission. -- --THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS --IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED --TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A --PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER --OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, --EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, --PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR --PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF --LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING --NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS --SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @ <<*>>= <> <> <> <> <> <> @ \eject \begin{thebibliography}{99} \bibitem{1} nothing \end{thebibliography} \end{document}