aboutsummaryrefslogtreecommitdiff
path: root/src/algebra
diff options
context:
space:
mode:
Diffstat (limited to 'src/algebra')
-rw-r--r--src/algebra/Makefile.in4
-rw-r--r--src/algebra/Makefile.pamphlet4
-rw-r--r--src/algebra/exposed.lsp.pamphlet2
-rw-r--r--src/algebra/term.spad.pamphlet132
4 files changed, 138 insertions, 4 deletions
diff --git a/src/algebra/Makefile.in b/src/algebra/Makefile.in
index 21ffaeee..1fe56152 100644
--- a/src/algebra/Makefile.in
+++ b/src/algebra/Makefile.in
@@ -650,7 +650,7 @@ axiom_algebra_layer_14_objects = \
$(addprefix $(OUT)/, \
$(addsuffix .$(FASLEXT),$(axiom_algebra_layer_14)))
axiom_algebra_layer_15 = \
- DSMP EXPUPXS \
+ DSMP EXPUPXS ARITY \
FRAMALG FRAMALG- MDAGG ODPOL \
PLOT RMCAT2 ROIRC SDPOL \
SMATCAT SMATCAT- TUBETOOL UPXSCCA \
@@ -663,7 +663,7 @@ axiom_algebra_layer_15_objects = \
$(addprefix $(OUT)/, \
$(addsuffix .$(FASLEXT),$(axiom_algebra_layer_15)))
axiom_algebra_layer_16 = \
- DPMM EFUPXS FFINTBAS FRIDEAL \
+ DPMM EFUPXS FFINTBAS FRIDEAL OPERCAT \
FRIDEAL2 FRMOD \
IBATOOL INTFACT \
MSETAGG MONOGEN MONOGEN- NFINTBAS \
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index cc6071bc..2dccf863 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -786,7 +786,7 @@ plot.spad.pamphlet (PLOT PLOT1)
<<layer15>>=
axiom_algebra_layer_15 = \
- DSMP EXPUPXS \
+ DSMP EXPUPXS ARITY \
FRAMALG FRAMALG- MDAGG ODPOL \
PLOT RMCAT2 ROIRC SDPOL \
SMATCAT SMATCAT- TUBETOOL UPXSCCA \
@@ -812,7 +812,7 @@ space.spad.pamphlet (SPACEC SPACE3 TOPSP)
<<layer16>>=
axiom_algebra_layer_16 = \
- DPMM EFUPXS FFINTBAS FRIDEAL \
+ DPMM EFUPXS FFINTBAS FRIDEAL OPERCAT \
FRIDEAL2 FRMOD \
IBATOOL INTFACT \
MSETAGG MONOGEN MONOGEN- NFINTBAS \
diff --git a/src/algebra/exposed.lsp.pamphlet b/src/algebra/exposed.lsp.pamphlet
index 42325b06..4193cb77 100644
--- a/src/algebra/exposed.lsp.pamphlet
+++ b/src/algebra/exposed.lsp.pamphlet
@@ -60,6 +60,7 @@
(|AlgebraGivenByStructuralConstants| . ALGSC)
(|Any| . ANY)
(|AnyFunctions1| . ANY1)
+ (|Arity| . ARITY)
(|ArrayStack| . ASTACK)
(|AssociatedJordanAlgebra| . JORDAN)
(|AssociatedLieAlgebra| . LIE)
@@ -703,6 +704,7 @@
(|OctonionCategory| . OC)
(|OneDimensionalArrayAggregate| . A1AGG)
(|OpenMath| . OM)
+ (|OperatorCategory| . OPERCAT)
(|OrderedAbelianGroup| . OAGROUP)
(|OrderedAbelianMonoid| . OAMON)
(|OrderedAbelianMonoidSup| . OAMONS)
diff --git a/src/algebra/term.spad.pamphlet b/src/algebra/term.spad.pamphlet
new file mode 100644
index 00000000..532bd720
--- /dev/null
+++ b/src/algebra/term.spad.pamphlet
@@ -0,0 +1,132 @@
+\documentclass{article}
+\usepackage{open-axiom}
+
+\title{src/algebra term.spad}
+
+\begin{document}
+\author{Gabriel Dos~Reis}
+\maketitle
+
+\begin{abstract}
+\end{abstract}
+ This file contains specifications and implementations for basic
+ support of term algebras, in the sense of Universal Algebra.
+\tableofcontents
+\eject
+
+
+\section{The \code{Arity} domain}
+
+<<domain ARITY Arity>>=
+)abbrev domain ARITY Arity
+++ Author: Gabriel Dos Reis
+++ Date Created: December 04, 2008
+++ Date Last Updated: December 04, 2008
+++ Description:
+++ This domain implements the arity of a function or an operator,
+++ e.g. the number of arguments that an operator can take. An
+++ arity is either a definition nonnegative integer, and the special
+++ value `arbitrary', signifying that an operation can take any
+++ number of arguments.
+Arity(): Public == Private where
+ Public == Join(SetCategory, RetractableTo NonNegativeInteger) with
+ arbitrary: %
+ ++ aribitrary is the arity of a function that accepts any
+ ++ number of arguments.
+ Private == add
+ Rep == SingleInteger
+ arbitrary == per(-1)
+ hash x == hash rep x
+ x = y == rep x = rep y
+ coerce(x: %): OutputForm ==
+ x = arbitrary => 'arbitrary::OutputForm
+ rep(x)::OutputForm
+ coerce(n: NonNegativeInteger): % ==
+ max()$SingleInteger < n =>
+ error "arity is too large for OpenAxiom"
+ per(n::SingleInteger)
+ retractIfCan x ==
+ (n := rep x) < 0 => "failed"
+ n::Integer::NonNegativeInteger
+
+@
+
+
+\section{Operator Interface: \code{OperatorCategory}}
+
+<<category OPERCAT OperatorCategory>>=
+)abbrev category OPERCAT OperatorCategory
+++ Author: Gabriel Dos Reis
+++ Date Created: December 04, 2008
+++ Date Last Updated: December 04, 2008
+++ Description:
+++ This category specifies the interface for operators used to build
+++ terms, in the sense of Universal Algebra. The domain parameter S
+++ provides representation for the `external name' of an operator.
+OperatorCategory(S: SetCategory): Category ==
+ SetCategory with
+ name: % -> S
+ ++ name(op) returns the externam name of `op'.
+ arity: % -> Arity
+ ++ arity(op) returns the arity of the operator `op'.
+ operator: S -> %
+ ++ operator(s) returns an operator object with external name `s',
+ ++ and of arbitrary arity.
+ operator: (S,NonNegativeInteger) -> %
+ ++ operator(s,n) returns an operator object with external
+ ++ name `s', and of arity `n'.
+ add
+ coerce(op: %): OutputForm == name(op)::OutputForm
+
+@
+
+
+\section{License}
+
+<<license>>=
+--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.
+
+@
+
+
+\section{Putting It Altogether}
+
+<<*>>=
+<<license>>
+<<domain ARITY Arity>>
+<<category OPERCAT OperatorCategory>>
+
+@
+
+
+
+\end{document}