aboutsummaryrefslogtreecommitdiff
path: root/src/algebra
diff options
context:
space:
mode:
Diffstat (limited to 'src/algebra')
-rw-r--r--src/algebra/Makefile.in6
-rw-r--r--src/algebra/Makefile.pamphlet6
-rw-r--r--src/algebra/catdef.spad.pamphlet108
3 files changed, 72 insertions, 48 deletions
diff --git a/src/algebra/Makefile.in b/src/algebra/Makefile.in
index a56827df..5bbaa9dd 100644
--- a/src/algebra/Makefile.in
+++ b/src/algebra/Makefile.in
@@ -342,6 +342,7 @@ $(OUT)/DIFFDOM.$(FASLEXT): $(OUT)/TYPE.$(FASLEXT)
$(OUT)/DIFFSPC.$(FASLEXT): $(OUT)/DIFFDOM.$(FASLEXT)
$(OUT)/DIFFMOD.$(FASLEXT): $(OUT)/DIFFSPC.$(FASLEXT)
$(OUT)/PDDOM.$(FASLEXT): $(OUT)/TYPE.$(FASLEXT)
+$(OUT)/PDSPC.$(FASLEXT): $(OUT)/PDDOM.$(FASLEXT)
axiom_algebra_layer_0 = \
AHYP ATTREG CFCAT ELTAB KOERCE KONVERT \
@@ -368,7 +369,7 @@ axiom_algebra_layer_0 = \
DIOPS DIOPS- STRING STRICAT ISTRING ILIST \
LIST DIFFDOM DIFFDOM- DIFFSPC DIFFSPC- DIFFMOD \
LINEXP PATMAB REAL CHARZ LOGIC LOGIC- \
- RTVALUE SYSPTR PDDOM PDDOM-
+ RTVALUE SYSPTR PDDOM PDDOM- PDSPC PDSPC-
axiom_algebra_layer_0_nrlibs = \
$(addsuffix .NRLIB/code.$(FASLEXT),$(axiom_algebra_layer_0))
@@ -499,13 +500,14 @@ axiom_algebra_layer_4_objects = \
$(OUT)/KERNEL.$(FASLEXT): $(OUT)/KERNEL2.$(FASLEXT)
$(OUT)/DVARCAT.$(FASLEXT): $(OUT)/DIFFSPC.$(FASLEXT)
+$(OUT)/PDRING.$(FASLEXT): $(OUT)/PDSPC.$(FASLEXT)
axiom_algebra_layer_5 = \
CHARNZ DVARCAT DVARCAT- ELEMFUN \
ELEMFUN- ESTOOLS2 FCOMP FPATMAB IDPAM IDPO \
INCRMAPS KERNEL2 MODMONOM MONADWU MONADWU- \
MRF2 NARNG NARNG- NSUP2 ODVAR OPQUERY \
- ORDMON PATMATCH PERMCAT PDRING PDRING- \
+ ORDMON PATMATCH PERMCAT PDRING \
SDVAR SUP2 TRIGCAT TRIGCAT- ULS2 UP2 \
ELABEXPR KERNEL
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index 3149256b..c65cf20b 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -296,6 +296,7 @@ $(OUT)/DIFFDOM.$(FASLEXT): $(OUT)/TYPE.$(FASLEXT)
$(OUT)/DIFFSPC.$(FASLEXT): $(OUT)/DIFFDOM.$(FASLEXT)
$(OUT)/DIFFMOD.$(FASLEXT): $(OUT)/DIFFSPC.$(FASLEXT)
$(OUT)/PDDOM.$(FASLEXT): $(OUT)/TYPE.$(FASLEXT)
+$(OUT)/PDSPC.$(FASLEXT): $(OUT)/PDDOM.$(FASLEXT)
axiom_algebra_layer_0 = \
AHYP ATTREG CFCAT ELTAB KOERCE KONVERT \
@@ -322,7 +323,7 @@ axiom_algebra_layer_0 = \
DIOPS DIOPS- STRING STRICAT ISTRING ILIST \
LIST DIFFDOM DIFFDOM- DIFFSPC DIFFSPC- DIFFMOD \
LINEXP PATMAB REAL CHARZ LOGIC LOGIC- \
- RTVALUE SYSPTR PDDOM PDDOM-
+ RTVALUE SYSPTR PDDOM PDDOM- PDSPC PDSPC-
axiom_algebra_layer_0_nrlibs = \
$(addsuffix .NRLIB/code.$(FASLEXT),$(axiom_algebra_layer_0))
@@ -478,13 +479,14 @@ axiom_algebra_layer_4_objects = \
$(OUT)/KERNEL.$(FASLEXT): $(OUT)/KERNEL2.$(FASLEXT)
$(OUT)/DVARCAT.$(FASLEXT): $(OUT)/DIFFSPC.$(FASLEXT)
+$(OUT)/PDRING.$(FASLEXT): $(OUT)/PDSPC.$(FASLEXT)
axiom_algebra_layer_5 = \
CHARNZ DVARCAT DVARCAT- ELEMFUN \
ELEMFUN- ESTOOLS2 FCOMP FPATMAB IDPAM IDPO \
INCRMAPS KERNEL2 MODMONOM MONADWU MONADWU- \
MRF2 NARNG NARNG- NSUP2 ODVAR OPQUERY \
- ORDMON PATMATCH PERMCAT PDRING PDRING- \
+ ORDMON PATMATCH PERMCAT PDRING \
SDVAR SUP2 TRIGCAT TRIGCAT- ULS2 UP2 \
ELABEXPR KERNEL
diff --git a/src/algebra/catdef.spad.pamphlet b/src/algebra/catdef.spad.pamphlet
index 735d2e43..a09a99ea 100644
--- a/src/algebra/catdef.spad.pamphlet
+++ b/src/algebra/catdef.spad.pamphlet
@@ -1430,7 +1430,7 @@ OrderedSet(): Category == SetCategory with
++ operation named \spad{differentiate} for partial differentiation with
++ respect to some domain of variables.
++ See Also:
-++ DifferentialDomain
+++ DifferentialDomain, PartialDifferentialSpace
PartialDifferentialDomain(T: Type, S: Type): Category == Type with
differentiate: (%,S) -> T
++ \spad{differentiate(x,v)} computes the partial derivative
@@ -1443,6 +1443,65 @@ PartialDifferentialDomain(T: Type, S: Type): Category == Type with
@
+\section{Partial Differential Space}
+
+<<category PDSPC PartialDifferentialSpace>>=
+)abbrev category PDSPC PartialDifferentialSpace
+++ Author: Gabriel Dos Reis
+++ Date Created: June 16, 2010
+++ Date Last Modified: June 16, 2010
+++ Description:
+++ This category captures the interface of domains stable by partial
+++ differentiation with respect to variables from some domain.
+++ See Also:
+++ PartialDifferentialDomain
+PartialDifferentialSpace(S: SetCategory): Category ==
+ PartialDifferentialDomain(%,S) with
+ differentiate: (%,List S) -> %
+ ++ \spad{differentiate(x,[s1,...sn])} computes successive
+ ++ partial derivatives, i.e.
+ ++ \spad{differentiate(...differentiate(x, s1)..., sn)}.
+ differentiate: (%,S,NonNegativeInteger) -> %
+ ++ \spad{differentiate(x,s,n)} computes multiple partial
+ ++ derivatives, i.e. \spad{n}-th derivative of \spad{x}
+ ++ with respect to \spad{s}.
+ differentiate: (%,List S,List NonNegativeInteger) -> %
+ ++ \spad{differentiate(x,[s1,...,sn],[n1,...,nn])} computes
+ ++ multiple partial derivatives, i.e.
+ D: (%,List S) -> %
+ ++ \spad{D(x,[s1,...sn])} is a shorthand for
+ ++ \spad{differentiate(x,[s1,...sn])}.
+ D: (%,S,NonNegativeInteger) -> %
+ ++ \spad{D(x,s,n)} is a shorthand for \spad{differentiate(x,s,n)}.
+ D: (%,List S,List NonNegativeInteger) -> %
+ ++ \spad{D(x,[s1,...,sn],[n1,...,nn])} is a shorthand for
+ ++ \spad{differentiate(x,[s1,...,sn],[n1,...,nn])}.
+ add
+ differentiate(r: %,l: List S) ==
+ for s in l repeat r := differentiate(r, s)
+ r
+
+ differentiate(r: %,s: S,n: NonNegativeInteger) ==
+ for i in 1..n repeat r := differentiate(r, s)
+ r
+
+ differentiate(r: %,ls: List S,ln: List NonNegativeInteger) ==
+ for s in ls for n in ln repeat r := differentiate(r, s, n)
+ r
+
+ D(r: %,v: S) ==
+ differentiate(r,v)
+
+ D(r: %,lv: List S) ==
+ differentiate(r,lv)
+ D(r: %,v: S,n: NonNegativeInteger) ==
+ differentiate(r,v,n)
+ D(r: %,lv: List S,ln: List NonNegativeInteger) ==
+ differentiate(r, lv, ln)
+
+@
+
+
\section{category PDRING PartialDifferentialRing}
<<category PDRING PartialDifferentialRing>>=
@@ -1463,49 +1522,8 @@ PartialDifferentialDomain(T: Type, S: Type): Category == Type with
++ \spad{differentiate(x+y,e) = differentiate(x,e)+differentiate(y,e)}
++ \spad{differentiate(x*y,e) = x*differentiate(y,e) + differentiate(x,e)*y}
-PartialDifferentialRing(S:SetCategory): Category == Ring with
- differentiate: (%, S) -> %
- ++ differentiate(x,v) computes the partial derivative of x
- ++ with respect to v.
- differentiate: (%, List S) -> %
- ++ differentiate(x,[s1,...sn]) computes successive partial derivatives,
- ++ i.e. \spad{differentiate(...differentiate(x, s1)..., sn)}.
- differentiate: (%, S, NonNegativeInteger) -> %
- ++ differentiate(x, s, n) computes multiple partial derivatives, i.e.
- ++ n-th derivative of x with respect to s.
- differentiate: (%, List S, List NonNegativeInteger) -> %
- ++ differentiate(x, [s1,...,sn], [n1,...,nn]) computes
- ++ multiple partial derivatives, i.e.
- D: (%, S) -> %
- ++ D(x,v) computes the partial derivative of x
- ++ with respect to v.
- D: (%, List S) -> %
- ++ D(x,[s1,...sn]) computes successive partial derivatives,
- ++ i.e. \spad{D(...D(x, s1)..., sn)}.
- D: (%, S, NonNegativeInteger) -> %
- ++ D(x, s, n) computes multiple partial derivatives, i.e.
- ++ n-th derivative of x with respect to s.
- D: (%, List S, List NonNegativeInteger) -> %
- ++ D(x, [s1,...,sn], [n1,...,nn]) computes
- ++ multiple partial derivatives, i.e.
- ++ \spad{D(...D(x, s1, n1)..., sn, nn)}.
- add
- differentiate(r:%, l:List S) ==
- for s in l repeat r := differentiate(r, s)
- r
-
- differentiate(r:%, s:S, n:NonNegativeInteger) ==
- for i in 1..n repeat r := differentiate(r, s)
- r
-
- differentiate(r:%, ls:List S, ln:List NonNegativeInteger) ==
- for s in ls for n in ln repeat r := differentiate(r, s, n)
- r
-
- D(r:%, v:S) == differentiate(r,v)
- D(r:%, lv:List S) == differentiate(r,lv)
- D(r:%, v:S, n:NonNegativeInteger) == differentiate(r,v,n)
- D(r:%, lv:List S, ln:List NonNegativeInteger) == differentiate(r, lv, ln)
+PartialDifferentialRing(S:SetCategory): Category ==
+ Join(Ring,PartialDifferentialSpace S)
@
\section{category PFECAT PolynomialFactorizationExplicit}
@@ -1966,9 +1984,11 @@ VectorSpace(S:Field): Category == Module(S) with
<<category DIFRING DifferentialRing>>
<<category DIFFMOD DifferentialModule>>
<<category PDDOM PartialDifferentialDomain>>
+<<category PDSPC PartialDifferentialSpace>>
<<category PDRING PartialDifferentialRing>>
<<category DIFEXT DifferentialExtension>>
@
+
\eject
\begin{thebibliography}{99}
\bibitem{1} nothing