axiom-developer
[Top][All Lists]

## [Axiom-developer] 20080824.02.tpd.patch (expose difference between ^ and

 From: daly Subject: [Axiom-developer] 20080824.02.tpd.patch (expose difference between ^ and **) Date: Wed, 27 Aug 2008 14:16:05 -0500

Although I believe ^ and ** are intended to be the same operation
clearly they are not. This will require some thought:

(1)-> )d op ^

There are 6 exposed functions called ^ :
 Boolean -> Boolean from Boolean
 D -> D from D if D has BTAGG
 (D,Integer) -> D from D if D has DIVRING
 (D,Integer) -> D from D if D has GROUP
 (D,NonNegativeInteger) -> D from D if D has MONOID
 (D,PositiveInteger) -> D from D if D has SGROUP

Examples of ^ from Boolean

Examples of ^ from BitAggregate

Examples of ^ from DivisionRing

Examples of ^ from Group

Examples of ^ from Monoid

Examples of ^ from SemiGroup

(1) -> )d op **

There are 20 exposed functions called ** :
 (CardinalNumber,CardinalNumber) -> CardinalNumber from
CardinalNumber
 (DoubleFloat,DoubleFloat) -> DoubleFloat from DoubleFloat
 (D,Integer) -> D from D if D has DIVRING
 (D,D) -> D from D if D has ELEMFUN
 (Float,Float) -> Float from Float
 (D,NonNegativeInteger) -> D from D
if D has FS D2 and D2 has ORDSET and D2 has SGROUP
 (D,Integer) -> D from D if D has GROUP
 (PolynomialIdeals(D2,D3,D4,D5),NonNegativeInteger) ->
PolynomialIdeals(D2,D3,D4,D5)
from PolynomialIdeals(D2,D3,D4,D5)
if D2 has FIELD and D3 has OAMONS and D4 has ORDSET and D5
has POLYCAT(D2,D3,D4)
 ((D3 -> D3),NonNegativeInteger) -> (D3 -> D3) from
MappingPackage1 D3
if D3 has SETCAT
 (D,Integer) -> D from D
if D has MATCAT(D2,D3,D4) and D2 has RING and D3 has FLAGG
D2 and D4 has FLAGG D2 and D2 has FIELD
 (D,NonNegativeInteger) -> D from D
if D has MATCAT(D2,D3,D4) and D2 has RING and D3 has FLAGG
D2 and D4 has FLAGG D2
 (ModuleOperator(D2,D3),Integer) -> ModuleOperator(D2,D3)
from ModuleOperator(D2,D3)
if D2 has RING and D3 has LMODULE D2
 (BasicOperator,Integer) -> ModuleOperator(D3,D4)
from ModuleOperator(D3,D4)
if D3 has RING and D4 has LMODULE D3
 (D,PositiveInteger) -> D from D if D has MONAD
 (D,NonNegativeInteger) -> D from D if D has MONADWU
 (D,NonNegativeInteger) -> D from D if D has MONOID
 (D,Fraction Integer) -> D from D if D has RADCAT
 (D,PositiveInteger) -> D from D if D has SGROUP
 (D,Integer) -> D from D
if D has SMATCAT(D2,D3,D4,D5) and D3 has RING and D4 has
DIRPCAT(D2,D3) and D5 has DIRPCAT(D2,D3) and D3 has FIELD

 (D,D1) -> D from D
if D has UTSCAT D1 and D1 has RING and D1 has FIELD

There are 18 unexposed functions called ** :
 (D1,Fraction Integer) -> D1 from AlgebraicFunction(D3,D1)
if D3 has RETRACT INT and D3 has Join(OrderedSet,
IntegralDomain) and D1 has FS D3
 (D1,D1) -> D1 from CombinatorialFunction(D2,D1)
if D2 has Join(OrderedSet,IntegralDomain) and D1 has FS D2

 (D1,Fraction Integer) -> D1
from ElementaryFunctionsUnivariateLaurentSeries(D3,D4,D1)
if D3 has FIELD and D3 has ALGEBRA FRAC INT and D4 has
UTSCAT D3 and D1 has ULSCCAT(D3,D4)
 (D1,Fraction Integer) -> D1
from ElementaryFunctionsUnivariatePuiseuxSeries(D3,D4,D1,D5
)
if D3 has FIELD and D3 has ALGEBRA FRAC INT and D4 has
ULSCAT D3 and D1 has UPXSCCA(D3,D4) and D5 has PTRANFN D4

 (D1,Integer) -> FreeGroup D1 from FreeGroup D1 if D1 has SETCAT

 (D1,NonNegativeInteger) -> FreeMonoid D1 from FreeMonoid D1
if D1 has SETCAT
 (Vector D3,Integer) -> Vector D3 from
InnerNormalBasisFieldFunctions D3
if D3 has FFIELDC
 (InputForm,Integer) -> InputForm from InputForm
 (InputForm,NonNegativeInteger) -> InputForm from InputForm
 (Matrix D3,NonNegativeInteger) -> Matrix D3
from StorageEfficientMatrixOperations D3 if D3 has RING
 (D1,NonNegativeInteger) -> OrderedFreeMonoid D1
from OrderedFreeMonoid D1 if D1 has ORDSET
 (Operator D2,Integer) -> Operator D2 from Operator D2 if D2 has
RING
 (BasicOperator,Integer) -> Operator D3 from Operator D3 if D3
has RING
 (OutputForm,OutputForm) -> OutputForm from OutputForm
 (Pattern D1,Pattern D1) -> Pattern D1 from Pattern D1 if D1 has
SETCAT
 (Pattern D2,NonNegativeInteger) -> Pattern D2 from Pattern D2
if D2 has SETCAT
 (Stream D2,Stream D2) -> Stream D2
from StreamTranscendentalFunctionsNonCommutative D2
if D2 has ALGEBRA FRAC INT
 (Stream D2,Stream D2) -> Stream D2
from StreamTranscendentalFunctions D2 if D2 has ALGEBRA
FRAC INT

Examples of ** from AlgebraicFunction

Examples of ** from CardinalNumber

c2:=2::CardinalNumber
c2**c2
A1:=Aleph 1
A1**c2
generalizedContinuumHypothesisAssumed true
A1**A1

Examples of ** from CombinatorialFunction

Examples of ** from DoubleFloat

Examples of ** from DivisionRing

Examples of ** from ElementaryFunctionsUnivariateLaurentSeries

Examples of ** from ElementaryFunctionsUnivariatePuiseuxSeries

Examples of ** from ElementaryFunctionCategory

Examples of ** from FreeGroup

Examples of ** from Float

Examples of ** from FreeMonoid

Examples of ** from FunctionSpace

Examples of ** from Group

Examples of ** from PolynomialIdeals

Examples of ** from InnerNormalBasisFieldFunctions

Examples of ** from InputForm

Examples of ** from MappingPackage1

Examples of ** from MatrixCategory

Examples of ** from StorageEfficientMatrixOperations

Examples of ** from ModuleOperator

Examples of ** from Monoid

Examples of ** from OrderedFreeMonoid

Examples of ** from Operator

Examples of ** from OutputForm

Examples of ** from Pattern

Examples of ** from SemiGroup

Examples of ** from SquareMatrixCategory

Examples of ** from StreamTranscendentalFunctionsNonCommutative

Examples of ** from StreamTranscendentalFunctions

Examples of ** from UnivariateTaylorSeriesCategory

=======================================================================
diff --git a/changelog b/changelog
index e2cd290..d736c79 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+20080824 tpd src/input/Makefile add liu.input to regression
+20080824 lxx src/input/liu.input expose difference between ^ and **
+20080824 tpd src/interp/setq.lisp add Liu Xiaojun to credits
20080824 tpd src/interp/format.boot use ++X
index 7735016..be93ed8 100644
@@ -216,8 +216,8 @@ at the axiom command prompt will prettyprint the list.
"Kai Kaminski           Grant Keady            Tony Kennedy"
"Paul Kosinski          Klaus Kusche           Bernhard Kutzler"
"Larry Lambe            Franz Lehner           Frederic Lehobey"
-"Michel Levaud          Howard Levy            Rudiger Loos"
-"Michael Lucks          Richard Luczak"
+"Michel Levaud          Howard Levy            Liu Xiaojun"
+"Rudiger Loos           Michael Lucks          Richard Luczak"
"Camm Maguire           Francois Maltey        Alasdair McAndrew"
"Bob McElrath           Michael McGettrick     Ian Meikle"
"David Mentre           Victor S. Miller       Gerard Milmeister"
diff --git a/src/input/Makefile.pamphlet b/src/input/Makefile.pamphlet
index 3f80d67..8bc5aa4 100644
--- a/src/input/Makefile.pamphlet
+++ b/src/input/Makefile.pamphlet
@@ -324,8 +324,8 @@ REGRES= algaggr.regress algbrbf.regress  algfacob.regress
alist.regress  \
kamke4.regress    kamke5.regress   kamke6.regress   kamke7.regress \
kernel.regress    knot2.regress    kovacic.regress  kuipers.regress \
laplace.regress   leg.regress      limit.regress    linalg.regress \
-    lindep.regress \
-    list.regress      lode.regress     lodesys.regress  lodo1.regress \
+    lindep.regress    list.regress     liu.regress   \
+    lode.regress      lodesys.regress  lodo1.regress \
lodo2.regress     lodo3.regress    lodof.regress    lodo.regress \
log.regress \
lpoly.regress     lupfact.regress  lword.regress    macbug.regress \
@@ -595,7 +595,8 @@ FILES= ${OUT}/algaggr.input${OUT}/algbrbf.input
${OUT}/algfacob.input \${OUT}/lextripk.input ${OUT}/lib.input${OUT}/limit.input \
${OUT}/linalg.input \${OUT}/lindep.input   ${OUT}/liss1.input${OUT}/liss2.input \
-       ${OUT}/list.input${OUT}/lode.input       ${OUT}/lodesys.input \ +${OUT}/list.input     ${OUT}/liu.input \ +${OUT}/lode.input     ${OUT}/lodesys.input \${OUT}/lodo1.input    ${OUT}/lodo2.input${OUT}/lodof.input \
${OUT}/lodo.input${OUT}/lodo3.input      ${OUT}/log.input \${OUT}/lpoly.input    ${OUT}/lump.input \ @@ -896,7 +897,8 @@ DOCFILES= \${DOC}/lib.input.dvi         ${DOC}/limit.input.dvi \${DOC}/linalg.input.dvi      ${DOC}/lindep.input.dvi \${DOC}/liss1.input.dvi       ${DOC}/liss2.input.dvi \ -${DOC}/list.input.dvi        ${DOC}/lode.input.dvi \ +${DOC}/list.input.dvi        ${DOC}/liu.input.dvi \ +${DOC}/lode.input.dvi       \
${DOC}/lodesys.input.dvi${DOC}/lodo1.input.dvi      \
${DOC}/lodo2.input.dvi${DOC}/lodo3.input.dvi      \
${DOC}/lodof.input.dvi${DOC}/lodo.input.dvi       \
diff --git a/src/input/liu.input.pamphlet b/src/input/liu.input.pamphlet
new file mode 100644
index 0000000..65aa30d
--- /dev/null
+++ b/src/input/liu.input.pamphlet
@@ -0,0 +1,94 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\author{Xiaojun Liu}
+\maketitle
+\begin{abstract}
+This makes it clear that the exponential operation semantics is different
+for the use of \verb|^|'' and \verb|**|'' in some cases.
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+Does exponential operation \verb|^|'' and \verb|**|'' of a differential
+operator, say L, means repeating multiplications of L in Axiom ? If
+so, it seems the following code produced an unexpected result:
+@
+<<*>>=
+)spool liu.output
+)set message test on
+)set message auto off
+)set message type off
+)clear all
+
+--S 1 of 9
+Dx: LODO(EXPR INT, f+->D(f,x)) := D()
+--R
+--R   (1)  D
+--E 1
+
+--S 2 of 9
+u := operator 'u
+--R
+--R   (2)  u
+--E 2
+
+--S 3 of 9
+L := Dx + u(x)
+--R
+--R   (3)  D + u(x)
+--E 3
+
+--S 4 of 9
+L**2 = L*L
+--R
+--R         2                2   2             ,          2
+--R   (4)  D  + 2u(x)D + u(x) = D  + 2u(x)D + u (x) + u(x)
+--R
+--E 4
+
+)clear all
+
+--S 5 of 9
+f: INT->INT:=x+->x+1
+--R
+--R   (1)  theMap(Closure)
+--E 5
+
+--S 6 of 9
+K := OREUP ( x, INT, 1, f);
+--R
+--E 6
+
+--S 7 of 9
+x:K
+--E 7
+
+--S 8 of 9
+L:=x+1
+--R
+--R   (4)  x + 1
+--E 8
+
+--S 9 of 9
+L^2=L*L
+--R
+--R         2            2
+--R   (5)  x  + 2x + 1= x  + 4x + 3
+--E 9
+
+)spool
+)lisp (bye)
+
+@
+Clearly, the r.h.s. is correct too. I checked the .spad file, it seems the
+exponential operation of LODO (or its parent OREUP) is missed (or I guess it
+is directly inherited as usual polynomial operation). However I am not
+clever enough to modify the code. Please check this, thanks.
+
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}
diff --git a/src/interp/setq.lisp.pamphlet b/src/interp/setq.lisp.pamphlet
index e9b34ec..37b7fba 100644
--- a/src/interp/setq.lisp.pamphlet
+++ b/src/interp/setq.lisp.pamphlet
@@ -627,8 +627,8 @@
"Kai Kaminski           Grant Keady            Tony Kennedy"
"Paul Kosinski          Klaus Kusche           Bernhard Kutzler"
"Larry Lambe            Franz Lehner           Frederic Lehobey"
-"Michel Levaud          Howard Levy            Rudiger Loos"
-"Michael Lucks          Richard Luczak"
+"Michel Levaud          Howard Levy            Liu Xiaojun"
+"Rudiger Loos           Michael Lucks          Richard Luczak"
"Camm Maguire           Francois Maltey        Alasdair McAndrew"
"Bob McElrath           Michael McGettrick     Ian Meikle"
"David Mentre           Victor S. Miller       Gerard Milmeister"