[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Axiom-developer] 20070906.01.tpd.patch
From: |
daly |
Subject: |
[Axiom-developer] 20070906.01.tpd.patch |
Date: |
Fri, 7 Sep 2007 20:53:12 -0500 |
This patch adds help files and regression test files for these
algebra files and their abbreviations:
o ZeroDimensionalSolvePackage (ZDSOLVE)
o XPolynomialRing (XPR)
o XPolynomial (XPOLY)
o XPBWPolynomial (XPBWPOLY)
o WuWenTsunTriangularSet (WUTSET)
o Void (VOID)
o Vector (VECTOR)
o UniversalSegment (UNISEG)
o UnivariatePolynomial (UP)
o TwoDimensionalArray (ARRAY2)
o TextFile (TEXTFILE)
o Table (TABLE)
o StringTable (STRTBL)
o String (STRING)
o Stream (STREAM)
o SquareFreeRegularTriangularSet (SREGSET)
o SquareMatrix (SQMATRIX)
o SparseTable (STBL)
o SingleInteger (SINT)
o Set (SET)
Tim
====================================================================
diff --git a/changelog b/changelog
index 6ffd80a..753235b 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,81 @@
+20070906 tpd merge help files branch
+20070906 tpd src/doc/spadhelp add ZeroDimensionalSolvePackage
+20070906 tpd src/algebra/Makefile add ZeroDimensionalSolvePackage.help
+20070906 tpd src/algebra/zerodim.spad add ZeroDimensionalSolvePackage.help
+20070906 tpd src/algebra/zerodim.spad ZeroDimensionalSolvePackage.input
+20070906 tpd src/doc/spadhelp add XPolynomialRing
+20070906 tpd src/algebra/Makefile add XPolynomialRing.help
+20070906 tpd src/algebra/xpoly.spad add XPolynomialRing.help (XPR)
+20070906 tpd src/algebra/xpoly.spad XPolynomialRing.input
+20070906 tpd src/doc/spadhelp add XPolynomial
+20070906 tpd src/algebra/Makefile add XPolynomial.help
+20070906 tpd src/algebra/xpoly.spad add XPolynomial.help (XPOLY)
+20070906 tpd src/algebra/xpoly.spad XPolynomial.input
+20070906 tpd src/doc/spadhelp add XPBWPolynomial
+20070906 tpd src/algebra/Makefile add XPBWPolynomial.help
+20070906 tpd src/algebra/xlpoly.spad add XPBWPolynomial.help (XPBWPOLY)
+20070906 tpd src/algebra/xlpoly.spad XPBWPolynomial.input
+20070905 tpd src/doc/spadhelp add WuWenTsunTriangularSet
+20070905 tpd src/algebra/Makefile add WuWenTsunTriangularSet.help
+20070905 tpd src/algebra/triset.spad add WuWenTsunTriangularSet.help (WUTSET)
+20070905 tpd src/algebra/triset.spad WuWenTsunTriangularSet.input
+20070905 tpd src/doc/spadhelp add Void
+20070905 tpd src/algebra/Makefile add Void.help
+20070905 tpd src/algebra/void.spad add Void.help (VOID)
+20070905 tpd src/algebra/void.spad Void.input
+20070905 tpd src/doc/spadhelp add Vector
+20070905 tpd src/algebra/Makefile add Vector.help
+20070905 tpd src/algebra/vector.spad add Vector.help (Vector)
+20070905 tpd src/algebra/vector.spad Vector.input
+20070905 tpd src/doc/spadhelp add UniversalSegment
+20070905 tpd src/algebra/Makefile add UniversalSegment.help
+20070905 tpd src/algebra/seg.spad add UniversalSegment.help (UNISEG)
+20070905 tpd src/algebra/seg.spad UniversalSegment.input
+20070905 tpd src/doc/spadhelp add UnivariatePolynomial
+20070905 tpd src/algebra/Makefile add UnivariatePolynomial.help
+20070905 tpd src/algebra/poly.spad add UnivariatePolynomial.help (UP)
+20070905 tpd src/algebra/poly.spad UnivariatePolynomial.input
+20070905 tpd src/doc/spadhelp add TwoDimensionalArray
+20070905 tpd src/algebra/Makefile add TwoDimensionalArray.help
+20070905 tpd src/algebra/array2.spad add TwoDimensionalArray.help (ARRAY2)
+20070905 tpd src/algebra/array2.spad TwoDimensionalArray.input
+20070905 tpd src/doc/spadhelp add TextFile
+20070905 tpd src/algebra/Makefile add TextFile.help
+20070905 tpd src/algebra/files.spad add TextFile.help (TEXTFILE)
+20070905 tpd src/algebra/files.spad TextFile.input
+20070905 tpd src/doc/spadhelp add Table
+20070905 tpd src/algebra/Makefile add Table.help
+20070905 tpd src/algebra/table.spad add Table.help (TABLE)
+20070905 tpd src/algebra/table.spad Table.input
+20070905 tpd src/doc/spadhelp add StringTable
+20070905 tpd src/algebra/Makefile add StringTable.help
+20070905 tpd src/algebra/table.spad add StringTable.help (STRTBL)
+20070905 tpd src/algebra/table.spad StringTable.input
+20070905 tpd src/doc/spadhelp add String
+20070905 tpd src/algebra/Makefile add String.help
+20070905 tpd src/algebra/stream.spad add String.help (STRING)
+20070905 tpd src/algebra/stream.spad String.input
+20070905 tpd src/doc/book remove duplicate upperCase, lowerCase typo
+20070905 tpd src/doc/spadhelp add Stream
+20070905 tpd src/algebra/Makefile add Stream.help
+20070905 tpd src/algebra/stream.spad add Stream.help (STREAM)
+20070905 tpd src/algebra/stream.spad Stream.input
+20070905 tpd src/doc/spadhelp add SquareFreeRegularTriangularSet
+20070905 tpd src/algebra/Makefile add SquareFreeRegularTriangularSet.help
+20070905 tpd src/algebra/sregset.spad add SquareFreeRegularTriangularSet.help
+20070905 tpd src/algebra/sregset.spad SquareFreeRegularTriangularSet.input
+20070905 tpd src/doc/spadhelp add SquareMatrix
+20070905 tpd src/algebra/Makefile add SquareMatrix.help
+20070905 tpd src/algebra/matrix.spad add SquareMatrix.help (SQMATRIX)
+20070905 tpd src/algebra/matrix.spad SquareMatrix.input
+20070905 tpd src/doc/spadhelp add SparseTable
+20070905 tpd src/algebra/Makefile add SparseTable.help
+20070905 tpd src/algebra/table.spad add SparseTable.help (STBL)
+20070905 tpd src/algebra/table.spad SparseTable.input
+20070905 tpd src/doc/spadhelp add SingleInteger
+20070905 tpd src/algebra/Makefile add SingleInteger.help
+20070905 tpd src/algebra/si.spad add SingleInteger.help (SINT)
+20070905 tpd src/algebra/si.spad SingleInteger.input
20070905 tpd src/doc/spadhelp add Set
20070905 tpd src/algebra/Makefile add Set.help
20070905 tpd src/algebra/sets.spad add Set.help (SET)
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index 8c50591..ba8b53f 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -2069,46 +2069,60 @@ This keeps the regression test list in the algebra
Makefile.
<<environment>>=
SPADHELP=\
- ${HELP}/AssociationList.help ${HELP}/BalancedBinaryTree.help \
- ${HELP}/BasicOperator.help ${HELP}/BinaryExpansion.help \
- ${HELP}/BinarySearchTree.help ${HELP}/CardinalNumber.help \
- ${HELP}/CartesianTensor.help ${HELP}/Character.help \
- ${HELP}/CharacterClass.help ${HELP}/CliffordAlgebra.help \
- ${HELP}/Complex.help ${HELP}/ContinuedFraction.help \
- ${HELP}/CycleIndicators.help ${HELP}/DeRhamComplex.help \
- ${HELP}/DecimalExpansion.help ${HELP}/DoubleFloat.help \
- ${HELP}/EqTable.help ${HELP}/Equation.help \
+ ${HELP}/AssociationList.help ${HELP}/BalancedBinaryTree.help \
+ ${HELP}/BasicOperator.help ${HELP}/BinaryExpansion.help \
+ ${HELP}/BinarySearchTree.help ${HELP}/CardinalNumber.help \
+ ${HELP}/CartesianTensor.help ${HELP}/Character.help \
+ ${HELP}/CharacterClass.help ${HELP}/CliffordAlgebra.help \
+ ${HELP}/Complex.help ${HELP}/ContinuedFraction.help \
+ ${HELP}/CycleIndicators.help ${HELP}/DeRhamComplex.help \
+ ${HELP}/DecimalExpansion.help ${HELP}/DoubleFloat.help \
+ ${HELP}/EqTable.help ${HELP}/Equation.help \
${HELP}/DistributedMultivariatePolynomial.help \
- ${HELP}/Factored.help ${HELP}/Fraction.help \
+ ${HELP}/Factored.help ${HELP}/FactoredFunctions2.help \
+ ${HELP}/File.help ${HELP}/FileName.help \
+ ${HELP}/FlexibleArray.help ${HELP}/Float.help \
+ ${HELP}/Fraction.help \
+ ${HELP}/FullPartialFractionExpansion.help \
${HELP}/GeneralDistributedMultivariatePolynomial.help \
${HELP}/GeneralSparseTable.help ${HELP}/GroebnerFactorizationPackage.help \
- ${HELP}/Heap.help ${HELP}/HexadecimalExpansion.help \
+ ${HELP}/Heap.help ${HELP}/HexadecimalExpansion.help \
${HELP}/HomogeneousDistributedMultivariatePolynomial.help \
- ${HELP}/Integer.help ${HELP}/IntegerLinearDependence.help \
- ${HELP}/IntegerNumberTheoryFunctions.help ${HELP}/Kernel.help \
- ${HELP}/KeyedAccessFile.help ${HELP}/LexTriangularPackage.help \
- ${HELP}/Library.help ${HELP}/LieExponentials.help \
- ${HELP}/LiePolynomial.help \
+ ${HELP}/Integer.help ${HELP}/IntegerLinearDependence.help \
+ ${HELP}/IntegerNumberTheoryFunctions.help \
+ ${HELP}/Kernel.help ${HELP}/KeyedAccessFile.help \
+ ${HELP}/LexTriangularPackage.help ${HELP}/Library.help \
+ ${HELP}/LieExponentials.help ${HELP}/LiePolynomial.help \
${HELP}/LinearOrdinaryDifferentialOperator.help \
${HELP}/LinearOrdinaryDifferentialOperator1.help \
${HELP}/LinearOrdinaryDifferentialOperator2.help ${HELP}/List.help \
- ${HELP}/LyndonWord.help ${HELP}/Magma.help \
- ${HELP}/MakeFunction.help ${HELP}/MappingPackage1.help \
- ${HELP}/MappingPackage2.help ${HELP}/MappingPackage3.help \
- ${HELP}/Matrix.help ${HELP}/Multiset.help \
+ ${HELP}/LyndonWord.help ${HELP}/Magma.help \
+ ${HELP}/MakeFunction.help ${HELP}/MappingPackage1.help \
+ ${HELP}/MappingPackage2.help ${HELP}/MappingPackage3.help \
+ ${HELP}/Matrix.help ${HELP}/Multiset.help \
${HELP}/MultivariatePolynomial.help ${HELP}/None.help \
- ${HELP}/Octonion.help ${HELP}/OneDimensionalArray.help \
- ${HELP}/Operator.help ${HELP}/OrderedVariableList.help \
+ ${HELP}/Octonion.help ${HELP}/OneDimensionalArray.help \
+ ${HELP}/Operator.help ${HELP}/OrderedVariableList.help \
${HELP}/OrderlyDifferentialPolynomial.help \
${HELP}/PlaneAlgebraicCurvePlot.help \
- ${HELP}/Permutation.help ${HELP}/PartialFraction.help \
- ${HELP}/Permanent.help ${HELP}/Polynomial.help \
- ${HELP}/Quaternion.help ${HELP}/RadixExpansion.help \
- ${HELP}/RealClosure.help ${HELP}/RealSolvePackage.help \
- ${HELP}/RegularTriangularSet.help \
- ${HELP}/RomanNumeral.help ${HELP}/Segment.help \
- ${HELP}/Set.help \
- ${HELP}/TwoDimensionalViewport.help
+ ${HELP}/PartialFraction.help \
+ ${HELP}/Permanent.help ${HELP}/Permutation.help \
+ ${HELP}/Polynomial.help ${HELP}/Quaternion.help \
+ ${HELP}/RadixExpansion.help ${HELP}/RealClosure.help \
+ ${HELP}/RealSolvePackage.help ${HELP}/RegularTriangularSet.help \
+ ${HELP}/RomanNumeral.help ${HELP}/Segment.help \
+ ${HELP}/Set.help ${HELP}/SingleInteger.help \
+ ${HELP}/SparseTable.help ${HELP}/SquareMatrix.help \
+ ${HELP}/SquareFreeRegularTriangularSet.help \
+ ${HELP}/Stream.help ${HELP}/String.help \
+ ${HELP}/StringTable.help ${HELP}/Symbol.help \
+ ${HELP}/Table.help ${HELP}/TextFile.help \
+ ${HELP}/TwoDimensionalArray.help ${HELP}/TwoDimensionalViewport.help \
+ ${HELP}/UnivariatePolynomial.help ${HELP}/UniversalSegment.help \
+ ${HELP}/Vector.help ${HELP}/Void.help \
+ ${HELP}/WuWenTsunTriangularSet.help ${HELP}/XPBWPolynomial.help \
+ ${HELP}/XPolynomial.help ${HELP}/XPolynomialRing.help \
+ ${HELP}/ZeroDimensionalSolvePackage.help
@
The algebra files contain input chunks in regress format.
@@ -2119,46 +2133,60 @@ is put into a int/Makefile.algebra and then executed by
make.
TESTSYS= ${OBJ}/${SYS}/bin/interpsys
REGRESS=\
- AssociationList.regress BalancedBinaryTree.regress \
- BasicOperator.regress BinaryExpansion.regress \
- BinarySearchTree.regress CardinalNumber.regress \
- CartesianTensor.regress Character.regress \
- CharacterClass.regress CliffordAlgebra.regress \
- Complex.regress ContinuedFraction.regress \
- CycleIndicators.regress DeRhamComplex.regress \
- DecimalExpansion.regress DoubleFloat.regress \
- EqTable.regress Equation.regress \
+ AssociationList.regress BalancedBinaryTree.regress \
+ BasicOperator.regress BinaryExpansion.regress \
+ BinarySearchTree.regress CardinalNumber.regress \
+ CartesianTensor.regress Character.regress \
+ CharacterClass.regress CliffordAlgebra.regress \
+ Complex.regress ContinuedFraction.regress \
+ CycleIndicators.regress DeRhamComplex.regress \
+ DecimalExpansion.regress DoubleFloat.regress \
+ EqTable.regress Equation.regress \
DistributedMultivariatePolynomial.regress \
- Factored.regress Fraction.regress \
+ Factored.regress FactoredFunctions2.regress \
+ File.regress FileName.regress \
+ FlexibleArray.regress Float.regress \
+ Fraction.regress FullPartialFractionExpansion.regress \
GeneralDistributedMultivariatePolynomial.regress \
- GeneralSparseTable.regress GroebnerFactorizationPackage.regress \
- Heap.regress HexadecimalExpansion.regress \
+ GeneralSparseTable.regress GroebnerFactorizationPackage.regress \
+ Heap.regress HexadecimalExpansion.regress \
HomogeneousDistributedMultivariatePolynomial.regress \
- Integer.regress IntegerLinearDependence.regress \
+ Integer.regress IntegerLinearDependence.regress \
IntegerNumberTheoryFunctions.regress \
- Kernel.regress KeyedAccessFile.regress \
- LexTriangularPackage.regress Library.regress \
- LieExponentials.regress LiePolynomial.regress \
+ Kernel.regress KeyedAccessFile.regress \
+ LexTriangularPackage.regress Library.regress \
+ LieExponentials.regress LiePolynomial.regress \
LinearOrdinaryDifferentialOperator.regress \
LinearOrdinaryDifferentialOperator1.regress \
LinearOrdinaryDifferentialOperator2.regress List.regress \
- LyndonWord.regress Magma.regress \
- MakeFunction.regress MappingPackage1.regress \
- MappingPackage2.regress MappingPackage3.regress \
- Matrix.regress Multiset.regress \
+ LyndonWord.regress Magma.regress \
+ MakeFunction.regress MappingPackage1.regress \
+ MappingPackage2.regress MappingPackage3.regress \
+ Matrix.regress Multiset.regress \
MultivariatePolynomial.regress None.regress \
- Octonion.regress OneDimensionalArray.regress \
- Operator.regress OrderedVariableList.regress \
- OrderlyDifferentialPolynomial.regress PartialFraction.regress \
- Permanent.regress Permutation.regress \
+ Octonion.regress OneDimensionalArray.regress \
+ Operator.regress OrderedVariableList.regress \
+ OrderlyDifferentialPolynomial.regress \
+ PartialFraction.regress \
+ Permanent.regress Permutation.regress \
PlaneAlgebraicCurvePlot.regress \
- Polynomial.regress Quaternion.regress \
- RadixExpansion.regress RealClosure.regress \
- RealSolvePackage.regress RegularTriangularSet.regress \
- RomanNumeral.regress Segment.regress \
- Set.regress
-
-# this requires graphics
+ Polynomial.regress Quaternion.regress \
+ RadixExpansion.regress RealClosure.regress \
+ RealSolvePackage.regress RegularTriangularSet.regress \
+ RomanNumeral.regress Segment.regress \
+ Set.regress SingleInteger.regress \
+ SparseTable.regress SquareMatrix.regress \
+ SquareFreeRegularTriangularSet.regress \
+ Stream.regress String.regress \
+ StringTable.regress Symbol.regress \
+ Table.regress TextFile.regress \
+ TwoDimensionalArray.regress \
+ UnivariatePolynomial.regress UniversalSegment.regress \
+ Vector.regress Void.regress \
+ WuWenTsunTriangularSet.regress XPBWPolynomial.regress \
+ XPolynomial.regress XPolynomialRing.regress \
+ ZeroDimensionalSolvePackage.regress
+# these requires graphics
# TwoDimensionalViewport
%.regress: %.input
@@ -2339,8 +2367,48 @@ ${HELP}/Factored.help: ${IN}/fr.spad.pamphlet
@${TANGLE} -R"Factored.input" ${IN}/fr.spad.pamphlet \
>${INPUT}/Factored.input
+${HELP}/FactoredFunctions2.help: ${IN}/fr.spad.pamphlet
+ @echo 7020 create FactoredFunctions2.help from ${IN}/fr.spad.pamphlet
+ @${TANGLE} -R"FactoredFunctions2.help" ${IN}/fr.spad.pamphlet \
+ >${HELP}/FactoredFunctions2.help
+ @cp ${HELP}/FactoredFunctions2.help ${HELP}/FR2.help
+ @${TANGLE} -R"FactoredFunctions2.input" ${IN}/fr.spad.pamphlet \
+ >${INPUT}/FactoredFunctions2.input
+
+${HELP}/File.help: ${IN}/files.spad.pamphlet
+ @echo 7021 create File.help from ${IN}/files.spad.pamphlet
+ @${TANGLE} -R"File.help" ${IN}/files.spad.pamphlet \
+ >${HELP}/File.help
+ @cp ${HELP}/File.help ${HELP}/FILE.help
+ @${TANGLE} -R"File.input" ${IN}/files.spad.pamphlet \
+ >${INPUT}/File.input
+
+${HELP}/FileName.help: ${IN}/fname.spad.pamphlet
+ @echo 7022 create FileName.help from ${IN}/fname.spad.pamphlet
+ @${TANGLE} -R"FileName.help" ${IN}/fname.spad.pamphlet \
+ >${HELP}/FileName.help
+ @cp ${HELP}/FileName.help ${HELP}/FNAME.help
+ @${TANGLE} -R"FileName.input" ${IN}/fname.spad.pamphlet \
+ >${INPUT}/FileName.input
+
+${HELP}/FlexibleArray.help: ${IN}/array1.spad.pamphlet
+ @echo 7023 create FlexibleArray.help from ${IN}/array1.spad.pamphlet
+ @${TANGLE} -R"FlexibleArray.help" ${IN}/array1.spad.pamphlet \
+ >${HELP}/FlexibleArray.help
+ @cp ${HELP}/FlexibleArray.help ${HELP}/FARRAY.help
+ @${TANGLE} -R"FlexibleArray.input" ${IN}/array1.spad.pamphlet \
+ >${INPUT}/FlexibleArray.input
+
+${HELP}/Float.help: ${IN}/float.spad.pamphlet
+ @echo 7024 create Float.help from ${IN}/float.spad.pamphlet
+ @${TANGLE} -R"Float.help" ${IN}/float.spad.pamphlet \
+ >${HELP}/Float.help
+ @cp ${HELP}/Float.help ${HELP}/FLOAT.help
+ @${TANGLE} -R"Float.input" ${IN}/float.spad.pamphlet \
+ >${INPUT}/Float.input
+
${HELP}/Fraction.help: ${IN}/fraction.spad.pamphlet
- @echo 7020 create Fraction.help from ${IN}/fraction.spad.pamphlet
+ @echo 7025 create Fraction.help from ${IN}/fraction.spad.pamphlet
@${TANGLE} -R"Fraction.help" ${IN}/fraction.spad.pamphlet \
>${HELP}/Fraction.help
@cp ${HELP}/Fraction.help ${HELP}/FR.help
@@ -2348,7 +2416,7 @@ ${HELP}/Fraction.help: ${IN}/fraction.spad.pamphlet
>${INPUT}/Fraction.input
${HELP}/FullPartialFractionExpansion.help: ${IN}/fparfrac.spad.pamphlet
- @echo 7021 create FullPartialFractionExpansion.help from \
+ @echo 7026 create FullPartialFractionExpansion.help from \
${IN}/fparfrac.spad.pamphlet
@${TANGLE} -R"FullPartialFractionExpansion.help" \
${IN}/fparfrac.spad.pamphlet \
@@ -2360,7 +2428,7 @@ ${HELP}/FullPartialFractionExpansion.help:
${IN}/fparfrac.spad.pamphlet
${HELP}/GeneralDistributedMultivariatePolynomial.help: \
${IN}/gdpoly.spad.pamphlet
- @echo 7022 create GeneralDistributedMultivariatePolynomial.help \
+ @echo 7027 create GeneralDistributedMultivariatePolynomial.help \
from ${IN}/gdpoly.spad.pamphlet
@${TANGLE} -R"GeneralDistributedMultivariatePolynomial.help" \
${IN}/gdpoly.spad.pamphlet \
@@ -2372,7 +2440,7 @@ ${HELP}/GeneralDistributedMultivariatePolynomial.help: \
>${INPUT}/GeneralDistributedMultivariatePolynomial.input
${HELP}/GeneralSparseTable.help: ${IN}/table.spad.pamphlet
- @echo 7023 create GeneralSparseTable.help from \
+ @echo 7028 create GeneralSparseTable.help from \
${IN}/table.spad.pamphlet
@${TANGLE} -R"GeneralSparseTable.help" ${IN}/table.spad.pamphlet \
>${HELP}/GeneralSparseTable.help
@@ -2381,7 +2449,7 @@ ${HELP}/GeneralSparseTable.help: ${IN}/table.spad.pamphlet
>${INPUT}/GeneralSparseTable.input
${HELP}/GroebnerFactorizationPackage.help: ${IN}/groebf.spad.pamphlet
- @echo 7024 create GroebnerFactorizationPackage.help \
+ @echo 7029 create GroebnerFactorizationPackage.help \
from ${IN}/groebf.spad.pamphlet
@${TANGLE} -R"GroebnerFactorizationPackage.help" \
${IN}/groebf.spad.pamphlet \
@@ -2392,14 +2460,14 @@ ${HELP}/GroebnerFactorizationPackage.help:
${IN}/groebf.spad.pamphlet
>${INPUT}/GroebnerFactorizationPackage.input
${HELP}/Heap.help: ${IN}/bags.spad.pamphlet
- @echo 7025 create Heap.help from ${IN}/bags.spad.pamphlet
+ @echo 7030 create Heap.help from ${IN}/bags.spad.pamphlet
@${TANGLE} -R"Heap.help" ${IN}/bags.spad.pamphlet >${HELP}/Heap.help
@cp ${HELP}/Heap.help ${HELP}/HEAP.help
@${TANGLE} -R"Heap.input" ${IN}/bags.spad.pamphlet \
>${INPUT}/Heap.input
${HELP}/HexadecimalExpansion.help: ${IN}/radix.spad.pamphlet
- @echo 7026 create HexadecimalExpansion.help \
+ @echo 7031 create HexadecimalExpansion.help \
from ${IN}/radix.spad.pamphlet
@${TANGLE} -R"HexadecimalExpansion.help" ${IN}/radix.spad.pamphlet \
>${HELP}/HexadecimalExpansion.help
@@ -2409,7 +2477,7 @@ ${HELP}/HexadecimalExpansion.help:
${IN}/radix.spad.pamphlet
${HELP}/HomogeneousDistributedMultivariatePolynomial.help: \
${IN}/gdpoly.spad.pamphlet
- @echo 7027 create HomogeneousDistributedMultivariatePolynomial.help \
+ @echo 7032 create HomogeneousDistributedMultivariatePolynomial.help \
from ${IN}/gdpoly.spad.pamphlet
@${TANGLE} -R"HomogeneousDistributedMultivariatePolynomial.help" \
${IN}/gdpoly.spad.pamphlet \
@@ -2421,7 +2489,7 @@
${HELP}/HomogeneousDistributedMultivariatePolynomial.help: \
>${INPUT}/HomogeneousDistributedMultivariatePolynomial.input
${HELP}/Integer.help: ${IN}/integer.spad.pamphlet
- @echo 7028 create Integer.help from ${IN}/integer.spad.pamphlet
+ @echo 7033 create Integer.help from ${IN}/integer.spad.pamphlet
@${TANGLE} -R"Integer.help" ${IN}/integer.spad.pamphlet \
>${HELP}/Integer.help
@cp ${HELP}/Integer.help ${HELP}/INT.help
@@ -2429,7 +2497,7 @@ ${HELP}/Integer.help: ${IN}/integer.spad.pamphlet
>${INPUT}/Integer.input
${HELP}/IntegerLinearDependence.help: ${IN}/lindep.spad.pamphlet
- @echo 7029 create IntegerLinearDependence.help from \
+ @echo 7034 create IntegerLinearDependence.help from \
${IN}/lindep.spad.pamphlet
@${TANGLE} -R"IntegerLinearDependence.help" \
${IN}/lindep.spad.pamphlet \
@@ -2440,7 +2508,7 @@ ${HELP}/IntegerLinearDependence.help:
${IN}/lindep.spad.pamphlet
>${INPUT}/IntegerLinearDependence.input
${HELP}/IntegerNumberTheoryFunctions.help: ${IN}/numtheor.spad.pamphlet
- @echo 7030 create IntegerNumberTheoryFunctions.help \
+ @echo 7035 create IntegerNumberTheoryFunctions.help \
from ${IN}/numtheor.spad.pamphlet
@${TANGLE} -R"IntegerNumberTheoryFunctions.help" \
${IN}/numtheor.spad.pamphlet \
@@ -2452,7 +2520,7 @@ ${HELP}/IntegerNumberTheoryFunctions.help:
${IN}/numtheor.spad.pamphlet
>${INPUT}/IntegerNumberTheoryFunctions.input
${HELP}/Kernel.help: ${IN}/kl.spad.pamphlet
- @echo 7031 create Kernel.help from ${IN}/kl.spad.pamphlet
+ @echo 7036 create Kernel.help from ${IN}/kl.spad.pamphlet
@${TANGLE} -R"Kernel.help" ${IN}/kl.spad.pamphlet \
>${HELP}/Kernel.help
@cp ${HELP}/Kernel.help ${HELP}/KERNEL.help
@@ -2460,7 +2528,7 @@ ${HELP}/Kernel.help: ${IN}/kl.spad.pamphlet
>${INPUT}/Kernel.input
${HELP}/KeyedAccessFile.help: ${IN}/files.spad.pamphlet
- @echo 7032 create KeyedAccessFile.help from ${IN}/files.spad.pamphlet
+ @echo 7037 create KeyedAccessFile.help from ${IN}/files.spad.pamphlet
@${TANGLE} -R"KeyedAccessFile.help" ${IN}/files.spad.pamphlet \
>${HELP}/KeyedAccessFile.help
@cp ${HELP}/KeyedAccessFile.help ${HELP}/KAFILE.help
@@ -2468,7 +2536,7 @@ ${HELP}/KeyedAccessFile.help: ${IN}/files.spad.pamphlet
>${INPUT}/KeyedAccessFile.input
${HELP}/LexTriangularPackage.help: ${IN}/zerodim.spad.pamphlet
- @echo 7033 create LexTriangularPackage.help from \
+ @echo 7038 create LexTriangularPackage.help from \
${IN}/zerodim.spad.pamphlet
@${TANGLE} -R"LexTriangularPackage.help" ${IN}/zerodim.spad.pamphlet \
>${HELP}/LexTriangularPackage.help
@@ -2477,7 +2545,7 @@ ${HELP}/LexTriangularPackage.help:
${IN}/zerodim.spad.pamphlet
>${INPUT}/LexTriangularPackage.input
${HELP}/Library.help: ${IN}/files.spad.pamphlet
- @echo 7034 create Library.help from ${IN}/files.spad.pamphlet
+ @echo 7039 create Library.help from ${IN}/files.spad.pamphlet
@${TANGLE} -R"Library.help" ${IN}/files.spad.pamphlet \
>${HELP}/Library.help
@cp ${HELP}/Library.help ${HELP}/LIB.help
@@ -2485,7 +2553,7 @@ ${HELP}/Library.help: ${IN}/files.spad.pamphlet
>${INPUT}/Library.input
${HELP}/LieExponentials.help: ${IN}/xlpoly.spad.pamphlet
- @echo 7035 create LieExponentials.help from ${IN}/xlpoly.spad.pamphlet
+ @echo 7040 create LieExponentials.help from ${IN}/xlpoly.spad.pamphlet
@${TANGLE} -R"LieExponentials.help" ${IN}/xlpoly.spad.pamphlet \
>${HELP}/LieExponentials.help
@cp ${HELP}/LieExponentials.help ${HELP}/LEXP.help
@@ -2493,7 +2561,7 @@ ${HELP}/LieExponentials.help: ${IN}/xlpoly.spad.pamphlet
>${INPUT}/LieExponentials.input
${HELP}/LiePolynomial.help: ${IN}/xlpoly.spad.pamphlet
- @echo 7035 create LiePolynomial.help from ${IN}/xlpoly.spad.pamphlet
+ @echo 7041 create LiePolynomial.help from ${IN}/xlpoly.spad.pamphlet
@${TANGLE} -R"LiePolynomial.help" ${IN}/xlpoly.spad.pamphlet \
>${HELP}/LiePolynomial.help
@cp ${HELP}/LiePolynomial.help ${HELP}/LPOLY.help
@@ -2501,7 +2569,7 @@ ${HELP}/LiePolynomial.help: ${IN}/xlpoly.spad.pamphlet
>${INPUT}/LiePolynomial.input
${HELP}/LinearOrdinaryDifferentialOperator.help: ${IN}/lodo.spad.pamphlet
- @echo 7037 create LinearOrdinaryDifferentialOperator.help \
+ @echo 7042 create LinearOrdinaryDifferentialOperator.help \
from ${IN}/lodo.spad.pamphlet
@${TANGLE} -R"LinearOrdinaryDifferentialOperator.help" \
${IN}/lodo.spad.pamphlet \
@@ -2512,7 +2580,7 @@ ${HELP}/LinearOrdinaryDifferentialOperator.help:
${IN}/lodo.spad.pamphlet
>${INPUT}/LinearOrdinaryDifferentialOperator.input
${HELP}/LinearOrdinaryDifferentialOperator1.help: ${IN}/lodo.spad.pamphlet
- @echo 7038 create LinearOrdinaryDifferentialOperator1.help \
+ @echo 7043 create LinearOrdinaryDifferentialOperator1.help \
from ${IN}/lodo.spad.pamphlet
@${TANGLE} -R"LinearOrdinaryDifferentialOperator1.help" \
${IN}/lodo.spad.pamphlet \
@@ -2523,7 +2591,7 @@ ${HELP}/LinearOrdinaryDifferentialOperator1.help:
${IN}/lodo.spad.pamphlet
>${INPUT}/LinearOrdinaryDifferentialOperator1.input
${HELP}/LinearOrdinaryDifferentialOperator2.help: ${IN}/lodo.spad.pamphlet
- @echo 7039 create LinearOrdinaryDifferentialOperator2.help \
+ @echo 7044 create LinearOrdinaryDifferentialOperator2.help \
from ${IN}/lodo.spad.pamphlet
@${TANGLE} -R"LinearOrdinaryDifferentialOperator2.help" \
${IN}/lodo.spad.pamphlet \
@@ -2534,7 +2602,7 @@ ${HELP}/LinearOrdinaryDifferentialOperator2.help:
${IN}/lodo.spad.pamphlet
>${INPUT}/LinearOrdinaryDifferentialOperator2.input
${HELP}/List.help: ${IN}/list.spad.pamphlet
- @echo 7040 create List.help from ${IN}/list.spad.pamphlet
+ @echo 7045 create List.help from ${IN}/list.spad.pamphlet
@${TANGLE} -R"List.help" ${IN}/list.spad.pamphlet \
>${HELP}/List.help
@cp ${HELP}/List.help ${HELP}/LIST.help
@@ -2542,7 +2610,7 @@ ${HELP}/List.help: ${IN}/list.spad.pamphlet
>${INPUT}/List.input
${HELP}/LyndonWord.help: ${IN}/xlpoly.spad.pamphlet
- @echo 7041 create LyndonWord.help from ${IN}/xlpoly.spad.pamphlet
+ @echo 7046 create LyndonWord.help from ${IN}/xlpoly.spad.pamphlet
@${TANGLE} -R"LyndonWord.help" ${IN}/xlpoly.spad.pamphlet \
>${HELP}/LyndonWord.help
@cp ${HELP}/LyndonWord.help ${HELP}/LWORD.help
@@ -2550,7 +2618,7 @@ ${HELP}/LyndonWord.help: ${IN}/xlpoly.spad.pamphlet
>${INPUT}/LyndonWord.input
${HELP}/Magma.help: ${IN}/xlpoly.spad.pamphlet
- @echo 7042 create Magma.help from ${IN}/xlpoly.spad.pamphlet
+ @echo 7047 create Magma.help from ${IN}/xlpoly.spad.pamphlet
@${TANGLE} -R"Magma.help" ${IN}/xlpoly.spad.pamphlet \
>${HELP}/Magma.help
@cp ${HELP}/Magma.help ${HELP}/MAGMA.help
@@ -2558,7 +2626,7 @@ ${HELP}/Magma.help: ${IN}/xlpoly.spad.pamphlet
>${INPUT}/Magma.input
${HELP}/MakeFunction.help: ${IN}/mkfunc.spad.pamphlet
- @echo 7043 create MakeFunction.help from ${IN}/mkfunc.spad.pamphlet
+ @echo 7048 create MakeFunction.help from ${IN}/mkfunc.spad.pamphlet
@${TANGLE} -R"MakeFunction.help" ${IN}/mkfunc.spad.pamphlet \
>${HELP}/MakeFunction.help
@cp ${HELP}/MakeFunction.help ${HELP}/MKFUNC.help
@@ -2566,7 +2634,7 @@ ${HELP}/MakeFunction.help: ${IN}/mkfunc.spad.pamphlet
>${INPUT}/MakeFunction.input
${HELP}/MappingPackage1.help: ${IN}/mappkg.spad.pamphlet
- @echo 7044 create MappingPackage1.help from ${IN}/mappkg.spad.pamphlet
+ @echo 7049 create MappingPackage1.help from ${IN}/mappkg.spad.pamphlet
@${TANGLE} -R"MappingPackage1.help" ${IN}/mappkg.spad.pamphlet \
>${HELP}/MappingPackage1.help
@cp ${HELP}/MappingPackage1.help ${HELP}/MAPPKG1.help
@@ -2574,7 +2642,7 @@ ${HELP}/MappingPackage1.help: ${IN}/mappkg.spad.pamphlet
>${INPUT}/MappingPackage1.input
${HELP}/MappingPackage2.help: ${IN}/mappkg.spad.pamphlet
- @echo 7045 create MappingPackage2.help from ${IN}/mappkg.spad.pamphlet
+ @echo 7050 create MappingPackage2.help from ${IN}/mappkg.spad.pamphlet
@${TANGLE} -R"MappingPackage2.help" ${IN}/mappkg.spad.pamphlet \
>${HELP}/MappingPackage2.help
@cp ${HELP}/MappingPackage2.help ${HELP}/MAPPKG2.help
@@ -2582,7 +2650,7 @@ ${HELP}/MappingPackage2.help: ${IN}/mappkg.spad.pamphlet
>${INPUT}/MappingPackage2.input
${HELP}/MappingPackage3.help: ${IN}/mappkg.spad.pamphlet
- @echo 7046 create MappingPackage3.help from ${IN}/mappkg.spad.pamphlet
+ @echo 7051 create MappingPackage3.help from ${IN}/mappkg.spad.pamphlet
@${TANGLE} -R"MappingPackage3.help" ${IN}/mappkg.spad.pamphlet \
>${HELP}/MappingPackage3.help
@cp ${HELP}/MappingPackage3.help ${HELP}/MAPPKG3.help
@@ -2590,7 +2658,7 @@ ${HELP}/MappingPackage3.help: ${IN}/mappkg.spad.pamphlet
>${INPUT}/MappingPackage3.input
${HELP}/Matrix.help: ${IN}/matrix.spad.pamphlet
- @echo 7047 create Matrix.help from ${IN}/matrix.spad.pamphlet
+ @echo 7052 create Matrix.help from ${IN}/matrix.spad.pamphlet
@${TANGLE} -R"Matrix.help" ${IN}/matrix.spad.pamphlet \
>${HELP}/Matrix.help
@cp ${HELP}/Matrix.help ${HELP}/MATRIX.help
@@ -2598,7 +2666,7 @@ ${HELP}/Matrix.help: ${IN}/matrix.spad.pamphlet
>${INPUT}/Matrix.input
${HELP}/Multiset.help: ${IN}/mset.spad.pamphlet
- @echo 7048 create Multiset.help from ${IN}/mset.spad.pamphlet
+ @echo 7053 create Multiset.help from ${IN}/mset.spad.pamphlet
@${TANGLE} -R"Multiset.help" ${IN}/mset.spad.pamphlet \
>${HELP}/Multiset.help
@cp ${HELP}/Multiset.help ${HELP}/MSET.help
@@ -2606,7 +2674,7 @@ ${HELP}/Multiset.help: ${IN}/mset.spad.pamphlet
>${INPUT}/Multiset.input
${HELP}/MultivariatePolynomial.help: ${IN}/multpoly.spad.pamphlet
- @echo 7049 create MultivariatePolynomial.help from \
+ @echo 7054 create MultivariatePolynomial.help from \
${IN}/multpoly.spad.pamphlet
@${TANGLE} -R"MultivariatePolynomial.help" \
${IN}/multpoly.spad.pamphlet \
@@ -2617,13 +2685,13 @@ ${HELP}/MultivariatePolynomial.help:
${IN}/multpoly.spad.pamphlet
>${INPUT}/MultivariatePolynomial.input
${HELP}/None.help: ${IN}/any.spad.pamphlet
- @echo 7050 create None.help from ${IN}/any.spad.pamphlet
+ @echo 7055 create None.help from ${IN}/any.spad.pamphlet
@${TANGLE} -R"None.help" ${IN}/any.spad.pamphlet >${HELP}/None.help
@cp ${HELP}/None.help ${HELP}/NONE.help
@${TANGLE} -R"None.input" ${IN}/any.spad.pamphlet >${INPUT}/None.input
${HELP}/Octonion.help: ${IN}/oct.spad.pamphlet
- @echo 7051 create Octonion.help from ${IN}/oct.spad.pamphlet
+ @echo 7056 create Octonion.help from ${IN}/oct.spad.pamphlet
@${TANGLE} -R"Octonion.help" ${IN}/oct.spad.pamphlet \
>${HELP}/Octonion.help
@cp ${HELP}/Octonion.help ${HELP}/OCT.help
@@ -2631,7 +2699,7 @@ ${HELP}/Octonion.help: ${IN}/oct.spad.pamphlet
>${INPUT}/Octonion.input
${HELP}/OneDimensionalArray.help: ${IN}/array1.spad.pamphlet
- @echo 7052 create OneDimensionalArray.help from \
+ @echo 7057 create OneDimensionalArray.help from \
${IN}/array1.spad.pamphlet
@${TANGLE} -R"OneDimensionalArray.help" ${IN}/array1.spad.pamphlet \
>${HELP}/OneDimensionalArray.help
@@ -2640,7 +2708,7 @@ ${HELP}/OneDimensionalArray.help:
${IN}/array1.spad.pamphlet
>${INPUT}/OneDimensionalArray.input
${HELP}/Operator.help: ${IN}/opalg.spad.pamphlet
- @echo 7053 create Operator.help from ${IN}/opalg.spad.pamphlet
+ @echo 7058 create Operator.help from ${IN}/opalg.spad.pamphlet
@${TANGLE} -R"Operator.help" ${IN}/opalg.spad.pamphlet \
>${HELP}/Operator.help
@cp ${HELP}/Operator.help ${HELP}/OP.help
@@ -2648,7 +2716,7 @@ ${HELP}/Operator.help: ${IN}/opalg.spad.pamphlet
>${INPUT}/Operator.input
${HELP}/OrderedVariableList.help: ${IN}/variable.spad.pamphlet
- @echo 7054 create OrderedVariableList.help from \
+ @echo 7059 create OrderedVariableList.help from \
${IN}/variable.spad.pamphlet
@${TANGLE} -R"OrderedVariableList.help" ${IN}/variable.spad.pamphlet \
>${HELP}/OrderedVariableList.help
@@ -2657,7 +2725,7 @@ ${HELP}/OrderedVariableList.help:
${IN}/variable.spad.pamphlet
>${INPUT}/OrderedVariableList.input
${HELP}/OrderlyDifferentialPolynomial.help: ${IN}/dpolcat.spad.pamphlet
- @echo 7055 create OrderlyDifferentialPolynomial.help from \
+ @echo 7060 create OrderlyDifferentialPolynomial.help from \
${IN}/dpolcat.spad.pamphlet
@${TANGLE} -R"OrderlyDifferentialPolynomial.help" \
${IN}/dpolcat.spad.pamphlet \
@@ -2668,7 +2736,7 @@ ${HELP}/OrderlyDifferentialPolynomial.help:
${IN}/dpolcat.spad.pamphlet
>${INPUT}/OrderlyDifferentialPolynomial.input
${HELP}/PartialFraction.help: ${IN}/pfr.spad.pamphlet
- @echo 7056 create PartialFraction.help from ${IN}/pfr.spad.pamphlet
+ @echo 7061 create PartialFraction.help from ${IN}/pfr.spad.pamphlet
@${TANGLE} -R"PartialFraction.help" ${IN}/pfr.spad.pamphlet \
>${HELP}/PartialFraction.help
@cp ${HELP}/PartialFraction.help ${HELP}/PFR.help
@@ -2676,23 +2744,23 @@ ${HELP}/PartialFraction.help: ${IN}/pfr.spad.pamphlet
>${INPUT}/PartialFraction.input
${HELP}/Permanent.help: ${IN}/perman.spad.pamphlet
- @echo 7057 create Permanent.help from ${IN}/perman.spad.pamphlet
+ @echo 7062 create Permanent.help from ${IN}/perman.spad.pamphlet
@${TANGLE} -R"Permanent.help" ${IN}/perman.spad.pamphlet \
>${HELP}/Permanent.help
@cp ${HELP}/Permanent.help ${HELP}/PERMAN.help
@${TANGLE} -R"Permanent.input" ${IN}/perman.spad.pamphlet \
>${INPUT}/Permanent.input
-${HELP}/Polynomial.help: ${IN}/multpoly.spad.pamphlet
- @echo 7058 create Polynomial.help from ${IN}/multpoly.spad.pamphlet
- @${TANGLE} -R"Polynomial.help" ${IN}/multpoly.spad.pamphlet \
- >${HELP}/Polynomial.help
- @cp ${HELP}/Polynomial.help ${HELP}/POLY.help
- @${TANGLE} -R"Polynomial.input" ${IN}/multpoly.spad.pamphlet \
- >${INPUT}/Polynomial.input
+${HELP}/Permutation.help: ${IN}/perm.spad.pamphlet
+ @echo 7063 create Permutation.help from ${IN}/perm.spad.pamphlet
+ @${TANGLE} -R"Permutation.help" ${IN}/perm.spad.pamphlet \
+ >${HELP}/Permutation.help
+ @cp ${HELP}/Permutation.help ${HELP}/PERM.help
+ @${TANGLE} -R"Permutation.input" ${IN}/perm.spad.pamphlet \
+ >${INPUT}/Permutation.input
${HELP}/PlaneAlgebraicCurvePlot.help: ${IN}/acplot.spad.pamphlet
- @echo 7059 create PlaneAlgebraicCurvePlot.help from \
+ @echo 7064 create PlaneAlgebraicCurvePlot.help from \
${IN}/acplot.spad.pamphlet
@${TANGLE} -R"PlaneAlgebraicCurvePlot.help" \
${IN}/acplot.spad.pamphlet \
@@ -2702,16 +2770,16 @@ ${HELP}/PlaneAlgebraicCurvePlot.help:
${IN}/acplot.spad.pamphlet
${IN}/acplot.spad.pamphlet \
>${INPUT}/PlaneAlgebraicCurvePlot.input
-${HELP}/Permutation.help: ${IN}/perm.spad.pamphlet
- @echo 7060 create Permutation.help from ${IN}/perm.spad.pamphlet
- @${TANGLE} -R"Permutation.help" ${IN}/perm.spad.pamphlet \
- >${HELP}/Permutation.help
- @cp ${HELP}/Permutation.help ${HELP}/PERM.help
- @${TANGLE} -R"Permutation.input" ${IN}/perm.spad.pamphlet \
- >${INPUT}/Permutation.input
+${HELP}/Polynomial.help: ${IN}/multpoly.spad.pamphlet
+ @echo 7065 create Polynomial.help from ${IN}/multpoly.spad.pamphlet
+ @${TANGLE} -R"Polynomial.help" ${IN}/multpoly.spad.pamphlet \
+ >${HELP}/Polynomial.help
+ @cp ${HELP}/Polynomial.help ${HELP}/POLY.help
+ @${TANGLE} -R"Polynomial.input" ${IN}/multpoly.spad.pamphlet \
+ >${INPUT}/Polynomial.input
${HELP}/Quaternion.help: ${IN}/quat.spad.pamphlet
- @echo 7061 create Quaternion.help from ${IN}/quat.spad.pamphlet
+ @echo 7066 create Quaternion.help from ${IN}/quat.spad.pamphlet
@${TANGLE} -R"Quaternion.help" ${IN}/quat.spad.pamphlet \
>${HELP}/Quaternion.help
@cp ${HELP}/Quaternion.help ${HELP}/QUAT.help
@@ -2719,7 +2787,7 @@ ${HELP}/Quaternion.help: ${IN}/quat.spad.pamphlet
>${INPUT}/Quaternion.input
${HELP}/RadixExpansion.help: ${IN}/radix.spad.pamphlet
- @echo 7062 create RadixExpansion.help from ${IN}/radix.spad.pamphlet
+ @echo 7067 create RadixExpansion.help from ${IN}/radix.spad.pamphlet
@${TANGLE} -R"RadixExpansion.help" ${IN}/radix.spad.pamphlet \
>${HELP}/RadixExpansion.help
@cp ${HELP}/RadixExpansion.help ${HELP}/RADIX.help
@@ -2727,7 +2795,7 @@ ${HELP}/RadixExpansion.help: ${IN}/radix.spad.pamphlet
>${INPUT}/RadixExpansion.input
${HELP}/RealClosure.help: ${IN}/reclos.spad.pamphlet
- @echo 7063 create RealClosure.help from ${IN}/reclos.spad.pamphlet
+ @echo 7068 create RealClosure.help from ${IN}/reclos.spad.pamphlet
@${TANGLE} -R"RealClosure.help" ${IN}/reclos.spad.pamphlet \
>${HELP}/RealClosure.help
@cp ${HELP}/RealClosure.help ${HELP}/RECLOS.help
@@ -2735,7 +2803,7 @@ ${HELP}/RealClosure.help: ${IN}/reclos.spad.pamphlet
>${INPUT}/RealClosure.input
${HELP}/RealSolvePackage.help: ${IN}/acplot.spad.pamphlet
- @echo 7064 create RealSolvePackage.help from ${IN}/acplot.spad.pamphlet
+ @echo 7069 create RealSolvePackage.help from ${IN}/acplot.spad.pamphlet
@${TANGLE} -R"RealSolvePackage.help" ${IN}/acplot.spad.pamphlet \
>${HELP}/RealSolvePackage.help
@cp ${HELP}/RealSolvePackage.help ${HELP}/REALSOLV.help
@@ -2743,7 +2811,7 @@ ${HELP}/RealSolvePackage.help: ${IN}/acplot.spad.pamphlet
>${INPUT}/RealSolvePackage.input
${HELP}/RegularTriangularSet.help: ${IN}/regset.spad.pamphlet
- @echo 7065 create RegularTriangularSet.help from \
+ @echo 7070 create RegularTriangularSet.help from \
${IN}/regset.spad.pamphlet
@${TANGLE} -R"RegularTriangularSet.help" ${IN}/regset.spad.pamphlet \
>${HELP}/RegularTriangularSet.help
@@ -2752,7 +2820,7 @@ ${HELP}/RegularTriangularSet.help:
${IN}/regset.spad.pamphlet
>${INPUT}/RegularTriangularSet.input
${HELP}/RomanNumeral.help: ${IN}/integer.spad.pamphlet
- @echo 7066 create RomanNumeral.help from ${IN}/integer.spad.pamphlet
+ @echo 7071 create RomanNumeral.help from ${IN}/integer.spad.pamphlet
@${TANGLE} -R"RomanNumeral.help" ${IN}/integer.spad.pamphlet \
>${HELP}/RomanNumeral.help
@cp ${HELP}/RomanNumeral.help ${HELP}/ROMAN.help
@@ -2760,7 +2828,7 @@ ${HELP}/RomanNumeral.help: ${IN}/integer.spad.pamphlet
>${INPUT}/RomanNumeral.input
${HELP}/Segment.help: ${IN}/seg.spad.pamphlet
- @echo 7067 create Segment.help from ${IN}/seg.spad.pamphlet
+ @echo 7072 create Segment.help from ${IN}/seg.spad.pamphlet
@${TANGLE} -R"Segment.help" ${IN}/seg.spad.pamphlet \
>${HELP}/Segment.help
@cp ${HELP}/Segment.help ${HELP}/SEG.help
@@ -2768,15 +2836,107 @@ ${HELP}/Segment.help: ${IN}/seg.spad.pamphlet
>${INPUT}/Segment.input
${HELP}/Set.help: ${IN}/sets.spad.pamphlet
- @echo 7068 create Set.help from ${IN}/sets.spad.pamphlet
+ @echo 7073 create Set.help from ${IN}/sets.spad.pamphlet
@${TANGLE} -R"Set.help" ${IN}/sets.spad.pamphlet \
>${HELP}/Set.help
@cp ${HELP}/Set.help ${HELP}/SET.help
@${TANGLE} -R"Set.input" ${IN}/sets.spad.pamphlet \
>${INPUT}/Set.input
+${HELP}/SingleInteger.help: ${IN}/si.spad.pamphlet
+ @echo 7074 create SingleInteger.help from ${IN}/si.spad.pamphlet
+ @${TANGLE} -R"SingleInteger.help" ${IN}/si.spad.pamphlet \
+ >${HELP}/SingleInteger.help
+ @cp ${HELP}/SingleInteger.help ${HELP}/SINT.help
+ @${TANGLE} -R"SingleInteger.input" ${IN}/si.spad.pamphlet \
+ >${INPUT}/SingleInteger.input
+
+${HELP}/SparseTable.help: ${IN}/table.spad.pamphlet
+ @echo 7075 create SparseTable.help from ${IN}/table.spad.pamphlet
+ @${TANGLE} -R"SparseTable.help" ${IN}/table.spad.pamphlet \
+ >${HELP}/SparseTable.help
+ @cp ${HELP}/SparseTable.help ${HELP}/STBL.help
+ @${TANGLE} -R"SparseTable.input" ${IN}/table.spad.pamphlet \
+ >${INPUT}/SparseTable.input
+
+${HELP}/SquareMatrix.help: ${IN}/matrix.spad.pamphlet
+ @echo 7076 create SquareMatrix.help from ${IN}/matrix.spad.pamphlet
+ @${TANGLE} -R"SquareMatrix.help" ${IN}/matrix.spad.pamphlet \
+ >${HELP}/SquareMatrix.help
+ @cp ${HELP}/SquareMatrix.help ${HELP}/SQMATRIX.help
+ @${TANGLE} -R"SquareMatrix.input" ${IN}/matrix.spad.pamphlet \
+ >${INPUT}/SquareMatrix.input
+
+${HELP}/SquareFreeRegularTriangularSet.help: ${IN}/sregset.spad.pamphlet
+ @echo 7077 create SquareFreeRegularTriangularSet.help from \
+ ${IN}/sregset.spad.pamphlet
+ @${TANGLE} -R"SquareFreeRegularTriangularSet.help" \
+ ${IN}/sregset.spad.pamphlet \
+ >${HELP}/SquareFreeRegularTriangularSet.help
+ @cp ${HELP}/SquareFreeRegularTriangularSet.help ${HELP}/SREGSET.help
+ @${TANGLE} -R"SquareFreeRegularTriangularSet.input" \
+ ${IN}/sregset.spad.pamphlet \
+ >${INPUT}/SquareFreeRegularTriangularSet.input
+
+${HELP}/Stream.help: ${IN}/stream.spad.pamphlet
+ @echo 7078 create Stream.help from ${IN}/stream.spad.pamphlet
+ @${TANGLE} -R"Stream.help" ${IN}/stream.spad.pamphlet \
+ >${HELP}/Stream.help
+ @cp ${HELP}/Stream.help ${HELP}/STREAM.help
+ @${TANGLE} -R"Stream.input" ${IN}/stream.spad.pamphlet \
+ >${INPUT}/Stream.input
+
+${HELP}/String.help: ${IN}/string.spad.pamphlet
+ @echo 7079 create String.help from ${IN}/string.spad.pamphlet
+ @${TANGLE} -R"String.help" ${IN}/string.spad.pamphlet \
+ >${HELP}/String.help
+ @cp ${HELP}/String.help ${HELP}/STRING.help
+ @${TANGLE} -R"String.input" ${IN}/string.spad.pamphlet \
+ >${INPUT}/String.input
+
+${HELP}/StringTable.help: ${IN}/table.spad.pamphlet
+ @echo 7080 create StringTable.help from ${IN}/table.spad.pamphlet
+ @${TANGLE} -R"StringTable.help" ${IN}/table.spad.pamphlet \
+ >${HELP}/StringTable.help
+ @cp ${HELP}/StringTable.help ${HELP}/STRTBL.help
+ @${TANGLE} -R"StringTable.input" ${IN}/table.spad.pamphlet \
+ >${INPUT}/StringTable.input
+
+${HELP}/Symbol.help: ${IN}/symbol.spad.pamphlet
+ @echo 7081 create Symbol.help from ${IN}/symbol.spad.pamphlet
+ @${TANGLE} -R"Symbol.help" ${IN}/symbol.spad.pamphlet \
+ >${HELP}/Symbol.help
+ @cp ${HELP}/Symbol.help ${HELP}/SYMBOL.help
+ @${TANGLE} -R"Symbol.input" ${IN}/symbol.spad.pamphlet \
+ >${INPUT}/Symbol.input
+
+${HELP}/Table.help: ${IN}/table.spad.pamphlet
+ @echo 7082 create Table.help from ${IN}/table.spad.pamphlet
+ @${TANGLE} -R"Table.help" ${IN}/table.spad.pamphlet \
+ >${HELP}/Table.help
+ @cp ${HELP}/Table.help ${HELP}/TABLE.help
+ @${TANGLE} -R"Table.input" ${IN}/table.spad.pamphlet \
+ >${INPUT}/Table.input
+
+${HELP}/TextFile.help: ${IN}/files.spad.pamphlet
+ @echo 7083 create TextFile.help from ${IN}/files.spad.pamphlet
+ @${TANGLE} -R"TextFile.help" ${IN}/files.spad.pamphlet \
+ >${HELP}/TextFile.help
+ @cp ${HELP}/TextFile.help ${HELP}/TEXTFILE.help
+ @${TANGLE} -R"TextFile.input" ${IN}/files.spad.pamphlet \
+ >${INPUT}/TextFile.input
+
+${HELP}/TwoDimensionalArray.help: ${IN}/array2.spad.pamphlet
+ @echo 7084 create TwoDimensionalArray.help from \
+ ${IN}/array2.spad.pamphlet
+ @${TANGLE} -R"TwoDimensionalArray.help" ${IN}/array2.spad.pamphlet \
+ >${HELP}/TwoDimensionalArray.help
+ @cp ${HELP}/TwoDimensionalArray.help ${HELP}/ARRAY2.help
+ @${TANGLE} -R"TwoDimensionalArray.input" ${IN}/array2.spad.pamphlet \
+ >${INPUT}/TwoDimensionalArray.input
+
${HELP}/TwoDimensionalViewport.help: ${IN}/view2d.spad.pamphlet
- @echo 7069 create TwoDimensionalViewport.help from \
+ @echo 7085 create TwoDimensionalViewport.help from \
${IN}/view2d.spad.pamphlet
@${TANGLE} -R"TwoDimensionalViewport.help" \
${IN}/view2d.spad.pamphlet \
@@ -2784,6 +2944,86 @@ ${HELP}/TwoDimensionalViewport.help:
${IN}/view2d.spad.pamphlet
@cp ${HELP}/TwoDimensionalViewport.help ${HELP}/VIEW2D.help
# Note:no input regression file due to graphics
+${HELP}/UnivariatePolynomial.help: ${IN}/poly.spad.pamphlet
+ @echo 7086 create UnivariatePolynomial.help from \
+ ${IN}/poly.spad.pamphlet
+ @${TANGLE} -R"UnivariatePolynomial.help" ${IN}/poly.spad.pamphlet \
+ >${HELP}/UnivariatePolynomial.help
+ @cp ${HELP}/UnivariatePolynomial.help ${HELP}/UP.help
+ @${TANGLE} -R"UnivariatePolynomial.input" ${IN}/poly.spad.pamphlet \
+ >${INPUT}/UnivariatePolynomial.input
+
+${HELP}/UniversalSegment.help: ${IN}/seg.spad.pamphlet
+ @echo 7087 create UniversalSegment.help from ${IN}/seg.spad.pamphlet
+ @${TANGLE} -R"UniversalSegment.help" ${IN}/seg.spad.pamphlet \
+ >${HELP}/UniversalSegment.help
+ @cp ${HELP}/UniversalSegment.help ${HELP}/UNISEG.help
+ @${TANGLE} -R"UniversalSegment.input" ${IN}/seg.spad.pamphlet \
+ >${INPUT}/UniversalSegment.input
+
+${HELP}/Vector.help: ${IN}/vector.spad.pamphlet
+ @echo 7088 create Vector.help from ${IN}/vector.spad.pamphlet
+ @${TANGLE} -R"Vector.help" ${IN}/vector.spad.pamphlet \
+ >${HELP}/Vector.help
+ @cp ${HELP}/Vector.help ${HELP}/VECTOR.help
+ @${TANGLE} -R"Vector.input" ${IN}/vector.spad.pamphlet \
+ >${INPUT}/Vector.input
+
+${HELP}/Void.help: ${IN}/void.spad.pamphlet
+ @echo 7089 create Void.help from ${IN}/void.spad.pamphlet
+ @${TANGLE} -R"Void.help" ${IN}/void.spad.pamphlet >${HELP}/Void.help
+ @cp ${HELP}/Void.help ${HELP}/VOID.help
+ @${TANGLE} -R"Void.input" ${IN}/void.spad.pamphlet >${INPUT}/Void.input
+
+${HELP}/WuWenTsunTriangularSet.help: ${IN}/triset.spad.pamphlet
+ @echo 7090 create WuWenTsunTriangularSet.help from \
+ ${IN}/triset.spad.pamphlet
+ @${TANGLE} -R"WuWenTsunTriangularSet.help" \
+ ${IN}/triset.spad.pamphlet \
+ >${HELP}/WuWenTsunTriangularSet.help
+ @cp ${HELP}/WuWenTsunTriangularSet.help ${HELP}/WUTSET.help
+ @${TANGLE} -R"WuWenTsunTriangularSet.input" \
+ ${IN}/triset.spad.pamphlet \
+ >${INPUT}/WuWenTsunTriangularSet.input
+
+${HELP}/XPBWPolynomial.help: ${IN}/xlpoly.spad.pamphlet
+ @echo 7091 create XPBWPolynomial.help from \
+ ${IN}/xlpoly.spad.pamphlet
+ @${TANGLE} -R"XPBWPolynomial.help" \
+ ${IN}/xlpoly.spad.pamphlet \
+ >${HELP}/XPBWPolynomial.help
+ @cp ${HELP}/XPBWPolynomial.help ${HELP}/XPBWPOLY.help
+ @${TANGLE} -R"XPBWPolynomial.input" \
+ ${IN}/xlpoly.spad.pamphlet \
+ >${INPUT}/XPBWPolynomial.input
+
+${HELP}/XPolynomial.help: ${IN}/xpoly.spad.pamphlet
+ @echo 7092 create XPolynomial.help from ${IN}/xpoly.spad.pamphlet
+ @${TANGLE} -R"XPolynomial.help" ${IN}/xpoly.spad.pamphlet \
+ >${HELP}/XPolynomial.help
+ @cp ${HELP}/XPolynomial.help ${HELP}/XPOLY.help
+ @${TANGLE} -R"XPolynomial.input" ${IN}/xpoly.spad.pamphlet \
+ >${INPUT}/XPolynomial.input
+
+${HELP}/XPolynomialRing.help: ${IN}/xpoly.spad.pamphlet
+ @echo 7093 create XPolynomialRing.help from ${IN}/xpoly.spad.pamphlet
+ @${TANGLE} -R"XPolynomialRing.help" ${IN}/xpoly.spad.pamphlet \
+ >${HELP}/XPolynomialRing.help
+ @cp ${HELP}/XPolynomialRing.help ${HELP}/XPR.help
+ @${TANGLE} -R"XPolynomialRing.input" ${IN}/xpoly.spad.pamphlet \
+ >${INPUT}/XPolynomialRing.input
+
+${HELP}/ZeroDimensionalSolvePackage.help: ${IN}/zerodim.spad.pamphlet
+ @echo 7094 create ZeroDimensionalSolvePackage.help from \
+ ${IN}/zerodim.spad.pamphlet
+ @${TANGLE} -R"ZeroDimensionalSolvePackage.help" \
+ ${IN}/zerodim.spad.pamphlet \
+ >${HELP}/ZeroDimensionalSolvePackage.help
+ @cp ${HELP}/ZeroDimensionalSolvePackage.help ${HELP}/ZDSOLVE.help
+ @${TANGLE} -R"ZeroDimensionalSolvePackage.input" \
+ ${IN}/zerodim.spad.pamphlet \
+ >${INPUT}/ZeroDimensionalSolvePackage.input
+
@
\section{The Makefile}
diff --git a/src/algebra/array2.spad.pamphlet b/src/algebra/array2.spad.pamphlet
index ef540c4..38f6ba0 100644
--- a/src/algebra/array2.spad.pamphlet
+++ b/src/algebra/array2.spad.pamphlet
@@ -387,6 +387,452 @@ IndexedTwoDimensionalArray(R,mnRow,mnCol):Exports ==
Implementation where
@
\section{domain ARRAY2 TwoDimensionalArray}
+<<TwoDimensionalArray.input>>=
+-- array2.spad.pamphlet TwoDimensionalArray.input
+)spool TwoDimensionalArray.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 20
+arr : ARRAY2 INT := new(5,4,0)
+--R
+--R
+--R +0 0 0 0+
+--R | |
+--R |0 0 0 0|
+--R | |
+--R (1) |0 0 0 0|
+--R | |
+--R |0 0 0 0|
+--R | |
+--R +0 0 0 0+
+--R Type: TwoDimensionalArray
Integer
+--E 1
+
+--S 2 of 20
+setelt(arr,1,1,17)
+--R
+--R
+--R (2) 17
+--R Type:
PositiveInteger
+--E 2
+
+--S 3 of 20
+arr
+--R
+--R
+--R +17 0 0 0+
+--R | |
+--R |0 0 0 0|
+--R | |
+--R (3) |0 0 0 0|
+--R | |
+--R |0 0 0 0|
+--R | |
+--R +0 0 0 0+
+--R Type: TwoDimensionalArray
Integer
+--E 3
+
+--S 4 of 20
+elt(arr,1,1)
+--R
+--R
+--R (4) 17
+--R Type:
PositiveInteger
+--E 4
+
+--S 5 of 20
+arr(3,2) := 15
+--R
+--R
+--R (5) 15
+--R Type:
PositiveInteger
+--E 5
+
+--S 6 of 20
+arr(3,2)
+--R
+--R
+--R (6) 15
+--R Type:
PositiveInteger
+--E 6
+
+--S 7 of 20
+row(arr,1)
+--R
+--R
+--R (7) [17,0,0,0]
+--R Type: OneDimensionalArray
Integer
+--E 7
+
+--S 8 of 20
+column(arr,1)
+--R
+--R
+--R (8) [17,0,0,0,0]
+--R Type: OneDimensionalArray
Integer
+--E 8
+
+--S 9 of 20
+nrows(arr)
+--R
+--R
+--R (9) 5
+--R Type:
PositiveInteger
+--E 9
+
+--S 10 of 20
+ncols(arr)
+--R
+--R
+--R (10) 4
+--R Type:
PositiveInteger
+--E 10
+
+--S 11 of 20
+map(-,arr)
+--R
+--R
+--R +- 17 0 0 0+
+--R | |
+--R | 0 0 0 0|
+--R | |
+--R (11) | 0 - 15 0 0|
+--R | |
+--R | 0 0 0 0|
+--R | |
+--R + 0 0 0 0+
+--R Type: TwoDimensionalArray
Integer
+--E 11
+
+--S 12 of 20
+map((x +-> x + x),arr)
+--R
+--R
+--R +34 0 0 0+
+--R | |
+--R |0 0 0 0|
+--R | |
+--R (12) |0 30 0 0|
+--R | |
+--R |0 0 0 0|
+--R | |
+--R +0 0 0 0+
+--R Type: TwoDimensionalArray
Integer
+--E 12
+
+--S 13 of 20
+arrc := copy(arr)
+--R
+--R
+--R +17 0 0 0+
+--R | |
+--R |0 0 0 0|
+--R | |
+--R (13) |0 15 0 0|
+--R | |
+--R |0 0 0 0|
+--R | |
+--R +0 0 0 0+
+--R Type: TwoDimensionalArray
Integer
+--E 13
+
+--S 14 of 20
+map!(-,arrc)
+--R
+--R
+--R +- 17 0 0 0+
+--R | |
+--R | 0 0 0 0|
+--R | |
+--R (14) | 0 - 15 0 0|
+--R | |
+--R | 0 0 0 0|
+--R | |
+--R + 0 0 0 0+
+--R Type: TwoDimensionalArray
Integer
+--E 14
+
+--S 15 of 20
+arrc
+--R
+--R
+--R +- 17 0 0 0+
+--R | |
+--R | 0 0 0 0|
+--R | |
+--R (15) | 0 - 15 0 0|
+--R | |
+--R | 0 0 0 0|
+--R | |
+--R + 0 0 0 0+
+--R Type: TwoDimensionalArray
Integer
+--E 15
+
+--S 16 of 20
+arr
+--R
+--R
+--R +17 0 0 0+
+--R | |
+--R |0 0 0 0|
+--R | |
+--R (16) |0 15 0 0|
+--R | |
+--R |0 0 0 0|
+--R | |
+--R +0 0 0 0+
+--R Type: TwoDimensionalArray
Integer
+--E 16
+
+--S 17 of 20
+member?(17,arr)
+--R
+--R
+--R (17) true
+--R Type:
Boolean
+--E 17
+
+--S 18 of 20
+member?(10317,arr)
+--R
+--R
+--R (18) false
+--R Type:
Boolean
+--E 18
+
+--S 19 of 20
+count(17,arr)
+--R
+--R
+--R (19) 1
+--R Type:
PositiveInteger
+--E 19
+
+--S 20 of 20
+count(0,arr)
+--R
+--R
+--R (20) 18
+--R Type:
PositiveInteger
+--E 20
+)spool
+)lisp (bye)
+@
+<<TwoDimensionalArray.help>>=
+====================================================================
+TwoDimensionalArray examples
+====================================================================
+
+The TwoDimensionalArray domain is used for storing data in a two
+dimensional data structure indexed by row and by column. Such an
+array is a homogeneous data structure in that all the entries of the
+array must belong to the same Axiom domain.. Each array has a fixed
+number of rows and columns specified by the user and arrays are not
+extensible. In Axiom, the indexing of two-dimensional arrays is
+one-based. This means that both the "first" row of an array and the
+"first" column of an array are given the index 1. Thus, the entry
+in the upper left corner of an array is in position (1,1).
+
+The operation new creates an array with a specified number of rows and
+columns and fills the components of that array with a specified entry.
+The arguments of this operation specify the number of rows, the number
+of columns, and the entry.
+
+This creates a five-by-four array of integers, all of whose entries are
+zero.
+
+ arr : ARRAY2 INT := new(5,4,0)
+ +0 0 0 0+
+ | |
+ |0 0 0 0|
+ | |
+ |0 0 0 0|
+ | |
+ |0 0 0 0|
+ | |
+ +0 0 0 0+
+ Type: TwoDimensionalArray Integer
+
+The entries of this array can be set to other integers using setelt.
+
+Issue this to set the element in the upper left corner of this array to 17.
+
+ setelt(arr,1,1,17)
+ 17
+ Type: PositiveInteger
+
+Now the first element of the array is 17.
+
+ arr
+ +17 0 0 0+
+ | |
+ |0 0 0 0|
+ | |
+ |0 0 0 0|
+ | |
+ |0 0 0 0|
+ | |
+ +0 0 0 0+
+ Type: TwoDimensionalArray Integer
+
+Likewise, elements of an array are extracted using the operation elt.
+
+ elt(arr,1,1)
+ 17
+ Type: PositiveInteger
+
+Another way to use these two operations is as follows. This sets the
+element in position (3,2) of the array to 15.
+
+ arr(3,2) := 15
+ 15
+ Type: PositiveInteger
+
+This extracts the element in position (3,2) of the array.
+
+ arr(3,2)
+ 15
+ Type: PositiveInteger
+
+The operations elt and setelt come equipped with an error check which
+verifies that the indices are in the proper ranges. For example, the
+above array has five rows and four columns, so if you ask for the
+entry in position (6,2) with arr(6,2) Axiom displays an error message.
+If there is no need for an error check, you can call the operations qelt
+and qsetelt which provide the same functionality but without the error
+check. Typically, these operations are called in well-tested programs.
+
+The operations row and column extract rows and columns, respectively,
+and return objects of OneDimensionalArray with the same underlying
+element type.
+
+ row(arr,1)
+ [17,0,0,0]
+ Type: OneDimensionalArray Integer
+
+ column(arr,1)
+ [17,0,0,0,0]
+ Type: OneDimensionalArray Integer
+
+You can determine the dimensions of an array by calling the operations
+nrows and ncols, which return the number of rows and columns, respectively.
+
+ nrows(arr)
+ 5
+ Type: PositiveInteger
+
+ ncols(arr)
+ 4
+ Type: PositiveInteger
+
+To apply an operation to every element of an array, use map. This
+creates a new array. This expression negates every element.
+
+ map(-,arr)
+ +- 17 0 0 0+
+ | |
+ | 0 0 0 0|
+ | |
+ | 0 - 15 0 0|
+ | |
+ | 0 0 0 0|
+ | |
+ + 0 0 0 0+
+ Type: TwoDimensionalArray Integer
+
+This creates an array where all the elements are doubled.
+
+ map((x +-> x + x),arr)
+ +34 0 0 0+
+ | |
+ |0 0 0 0|
+ | |
+ |0 30 0 0|
+ | |
+ |0 0 0 0|
+ | |
+ +0 0 0 0+
+ Type: TwoDimensionalArray Integer
+
+To change the array destructively, use map instead of map. If you
+need to make a copy of any array, use copy.
+
+ arrc := copy(arr)
+ +17 0 0 0+
+ | |
+ |0 0 0 0|
+ | |
+ |0 15 0 0|
+ | |
+ |0 0 0 0|
+ | |
+ +0 0 0 0+
+ Type: TwoDimensionalArray Integer
+
+ map!(-,arrc)
+ +- 17 0 0 0+
+ | |
+ | 0 0 0 0|
+ | |
+ | 0 - 15 0 0|
+ | |
+ | 0 0 0 0|
+ | |
+ + 0 0 0 0+
+ Type: TwoDimensionalArray Integer
+
+ arrc
+ +- 17 0 0 0+
+ | |
+ | 0 0 0 0|
+ | |
+ | 0 - 15 0 0|
+ | |
+ | 0 0 0 0|
+ | |
+ + 0 0 0 0+
+ Type: TwoDimensionalArray Integer
+
+ arr
+ +17 0 0 0+
+ | |
+ |0 0 0 0|
+ | |
+ |0 15 0 0|
+ | |
+ |0 0 0 0|
+ | |
+ +0 0 0 0+
+ Type: TwoDimensionalArray Integer
+
+Use member? to see if a given element is in an array.
+
+ member?(17,arr)
+ true
+ Type: Boolean
+
+ member?(10317,arr)
+ false
+ Type: Boolean
+
+To see how many times an element appears in an array, use count.
+
+ count(17,arr)
+ 1
+ Type: PositiveInteger
+
+ count(0,arr)
+ 18
+ Type: PositiveInteger
+
+See Also:
+o )help Matrix
+o )help OneDimensionalArray
+o )show TwoDimensionalArray
+o $AXIOM/doc/src/algebra/array2.spad.dvi
+
+@
<<domain ARRAY2 TwoDimensionalArray>>=
)abbrev domain ARRAY2 TwoDimensionalArray
TwoDimensionalArray(R):Exports == Implementation where
diff --git a/src/algebra/files.spad.pamphlet b/src/algebra/files.spad.pamphlet
index ec29146..e13ed79 100644
--- a/src/algebra/files.spad.pamphlet
+++ b/src/algebra/files.spad.pamphlet
@@ -348,6 +348,173 @@ File(S:SetCategory): FileCategory(FileName, S) with
@
\section{domain TEXTFILE TextFile}
+<<TextFile.input>>=
+-- files.spad.pamphlet TextFile.input
+)spool TextFile.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 10
+f1: TextFile := open("/etc/group", "input")
+--R
+--R
+--R (1) "/etc/group"
+--R Type:
TextFile
+--E 1
+
+--S 2 of 10
+f2: TextFile := open("MOTD", "output")
+--R
+--R
+--R (2) "MOTD"
+--R Type:
TextFile
+--E 2
+
+--S 3 of 10
+l := readLine! f1
+--R
+--R
+--R (3) "root:x:0:root"
+--R Type:
String
+--E 3
+
+--S 4 of 10
+writeLine!(f2, upperCase l)
+--R
+--R
+--R (4) "ROOT:X:0:ROOT"
+--R Type:
String
+--E 4
+
+--S 5 of 10
+while not endOfFile? f1 repeat
+ s := readLine! f1
+ writeLine!(f2, upperCase s)
+--R
+--R Type:
Void
+--E 5
+
+--S 6 of 10
+close! f1
+--R
+--R
+--R (6) "/etc/group"
+--R Type:
TextFile
+--E 6
+
+--S 7 of 10
+write!(f2, "-The-")
+--R
+--R
+--R (7) "-The-"
+--R Type:
String
+--E 7
+
+--S 8 of 10
+write!(f2, "-End-")
+--R
+--R
+--R (8) "-End-"
+--R Type:
String
+--E 8
+
+--S 9 of 10
+writeLine! f2
+--R
+--R
+--R (9) ""
+--R Type:
String
+--E 9
+
+--S 10 of 10
+close! f2
+--R
+--R
+--R (10) "MOTD"
+--R Type:
TextFile
+--E 10
+)system rm -f MOTD
+)spool
+)lisp (bye)
+@
+<<TextFile.help>>=
+====================================================================
+TextFile examples
+====================================================================
+
+The domain TextFile allows Axiom to read and write character data and
+exchange text with other programs. This type behaves in Axiom much
+like a File of strings, with additional operations to cause new lines.
+We give an example of how to produce an upper case copy of a file.
+
+This is the file from which we read the text.
+
+ f1: TextFile := open("/etc/group", "input")
+ "/etc/group"
+ Type: TextFile
+
+This is the file to which we write the text.
+
+ f2: TextFile := open("/tmp/MOTD", "output")
+ "MOTD"
+ Type: TextFile
+
+Entire lines are handled using the readLine and writeLine operations.
+
+ l := readLine! f1
+ "root:x:0:root"
+ Type: String
+
+ writeLine!(f2, upperCase l)
+ "ROOT:X:0:ROOT"
+ Type: String
+
+Use the endOfFile? operation to check if you have reached the end of the file.
+
+ while not endOfFile? f1 repeat
+ s := readLine! f1
+ writeLine!(f2, upperCase s)
+ Type: Void
+
+The file f1 is exhausted and should be closed.
+
+ close! f1
+ "/etc/group"
+ Type: TextFile
+
+It is sometimes useful to write lines a bit at a time. The write operation
+allows this.
+
+ write!(f2, "-The-")
+ "-The-"
+ Type: String
+
+ write!(f2, "-End-")
+ "-End-"
+ Type: String
+
+This ends the line. This is done in a machine-dependent manner.
+
+ writeLine! f2
+ ""
+ Type: String
+
+ close! f2
+ "MOTD"
+ Type: TextFile
+
+Finally, clean up.
+
+ )system rm /tmp/MOTD
+
+See Also:
+o )help File
+o )help KeyedAccessFile
+o )help Library
+o )show TextFile
+o $AXIOM/doc/src/algebra/files.spad.dvi
+
+@
<<domain TEXTFILE TextFile>>=
)abbrev domain TEXTFILE TextFile
++ Author: Stephen M. Watt
diff --git a/src/algebra/fname.spad.pamphlet b/src/algebra/fname.spad.pamphlet
index f4738b5..4c44625 100644
--- a/src/algebra/fname.spad.pamphlet
+++ b/src/algebra/fname.spad.pamphlet
@@ -203,20 +203,20 @@ writable? "/tmp/DoesNotExist"
--R
--R
--R (17) true
---R Type: Boolean
+--R Type:
Boolean
--E 17
--S 18 of 18
fn := new(objdir, "xxx", "yy")
--R
--R
---R (18) "/tmp/xxx1419.yy"
+--I (18) "/tmp/xxx1419.yy"
--R Type:
FileName
--E 18
)spool
)lisp (bye)
@
-<<Filename.help>>=
+<<FileName.help>>=
====================================================================
FileName examples
====================================================================
diff --git a/src/algebra/fparfrac.spad.pamphlet
b/src/algebra/fparfrac.spad.pamphlet
index 38d5f9f..09b6ba3 100644
--- a/src/algebra/fparfrac.spad.pamphlet
+++ b/src/algebra/fparfrac.spad.pamphlet
@@ -44,7 +44,7 @@ g := fullPartialFraction f
--R x - 2 x + 1 --+ 2
--R 2 (x - %A)
--R %A - 1= 0
-Type: FullPartialFractionExpansion(Fraction
Integer,UnivariatePolynomial(x,Fraction Integer))
+--RType: FullPartialFractionExpansion(Fraction
Integer,UnivariatePolynomial(x,Fraction Integer))
--E 3
--S 4 of 16
@@ -67,7 +67,7 @@ g5 := D(g, 5)
--R 6 6 --+ 7
--R (x - 2) (x + 1) 2 (x - %A)
--R %A - 1= 0
-Type: FullPartialFractionExpansion(Fraction
Integer,UnivariatePolynomial(x,Fraction Integer))
+--RType: FullPartialFractionExpansion(Fraction
Integer,UnivariatePolynomial(x,Fraction Integer))
--E 5
--S 6 of 16
@@ -262,8 +262,6 @@ g :: Fx - f
--R Type: Fraction UnivariatePolynomial(x,Fraction
Integer)
--E 16
)spool
-
-)spool
)lisp (bye)
@
<<FullPartialFractionExpansion.help>>=
diff --git a/src/algebra/matrix.spad.pamphlet b/src/algebra/matrix.spad.pamphlet
index 7b7a10f..590cd3e 100644
--- a/src/algebra/matrix.spad.pamphlet
+++ b/src/algebra/matrix.spad.pamphlet
@@ -1256,6 +1256,150 @@ RectangularMatrix(m,n,R): Exports == Implementation
where
@
\section{domain SQMATRIX SquareMatrix}
+<<SquareMatrix.input>>=
+-- matrix.spad.pamphlet SquareMatrix.input
+)spool SquareMatrix.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 6
+)set expose add constructor SquareMatrix
+--R
+--I SquareMatrix is now explicitly exposed in frame frame0
+--E 1
+
+--S 2 of 6
+m := squareMatrix [ [1,-%i],[%i,4] ]
+--R
+--R
+--R +1 - %i+
+--R (1) | |
+--R +%i 4 +
+--R Type: SquareMatrix(2,Complex
Integer)
+--E 2
+
+--S 3 of 6
+m*m - m
+--R
+--R
+--R + 1 - 4%i+
+--R (2) | |
+--R +4%i 13 +
+--R Type: SquareMatrix(2,Complex
Integer)
+--E 3
+
+--S 4 of 6
+mm := squareMatrix [ [m, 1], [1-m, m**2] ]
+--R
+--R
+--R ++1 - %i+ +1 0+ +
+--R || | | | |
+--R |+%i 4 + +0 1+ |
+--R (3) | |
+--R |+ 0 %i + + 2 - 5%i+|
+--R || | | ||
+--R ++- %i - 3+ +5%i 17 ++
+--R Type: SquareMatrix(2,SquareMatrix(2,Complex
Integer))
+--E 4
+
+--S 5 of 6
+p := (x + m)**2
+--R
+--R
+--R 2 + 2 - 2%i+ + 2 - 5%i+
+--R (4) x + | |x + | |
+--R +2%i 8 + +5%i 17 +
+--R Type: Polynomial SquareMatrix(2,Complex
Integer)
+--E 5
+
+--S 6 of 6
+p::SquareMatrix(2, ?)
+--R
+--R
+--R + 2 +
+--R |x + 2x + 2 - 2%i x - 5%i|
+--R (5) | |
+--R | 2 |
+--R +2%i x + 5%i x + 8x + 17 +
+--R Type: SquareMatrix(2,Polynomial Complex
Integer)
+--E 6
+)spool
+)lisp (bye)
+@
+<<SquareMatrix.help>>=
+====================================================================
+SquareMatrix examples
+====================================================================
+
+The top level matrix type in Axiom is Matrix, which provides basic
+arithmetic and linear algebra functions. However, since the matrices
+can be of any size it is not true that any pair can be added or
+multiplied. Thus Matrix has little algebraic structure.
+
+Sometimes you want to use matrices as coefficients for polynomials or
+in other algebraic contexts. In this case, SquareMatrix should be
+used. The domain SquareMatrix(n,R) gives the ring of n by n square
+matrices over R.
+
+Since SquareMatrix is not normally exposed at the top level, you must
+expose it before it can be used.
+
+ )set expose add constructor SquareMatrix
+
+Once SQMATRIX has been exposed, values can be created using the
+squareMatrix function.
+
+ m := squareMatrix [ [1,-%i],[%i,4] ]
+ +1 - %i+
+ | |
+ +%i 4 +
+ Type: SquareMatrix(2,Complex Integer)
+
+The usual arithmetic operations are available.
+
+ m*m - m
+ + 1 - 4%i+
+ | |
+ +4%i 13 +
+ Type: SquareMatrix(2,Complex Integer)
+
+Square matrices can be used where ring elements are required.
+For example, here is a matrix with matrix entries.
+
+ mm := squareMatrix [ [m, 1], [1-m, m**2] ]
+ ++1 - %i+ +1 0+ +
+ || | | | |
+ |+%i 4 + +0 1+ |
+ | |
+ |+ 0 %i + + 2 - 5%i+|
+ || | | ||
+ ++- %i - 3+ +5%i 17 ++
+ Type: SquareMatrix(2,SquareMatrix(2,Complex Integer))
+
+Or you can construct a polynomial with square matrix coefficients.
+
+ p := (x + m)**2
+ 2 + 2 - 2%i+ + 2 - 5%i+
+ x + | |x + | |
+ +2%i 8 + +5%i 17 +
+ Type: Polynomial SquareMatrix(2,Complex Integer)
+
+This value can be converted to a square matrix with polynomial coefficients.
+
+ p::SquareMatrix(2, ?)
+ + 2 +
+ |x + 2x + 2 - 2%i x - 5%i|
+ | |
+ | 2 |
+ +2%i x + 5%i x + 8x + 17 +
+ Type: SquareMatrix(2,Polynomial Complex Integer)
+
+See Also:
+o )help Matrix
+o )show SquareMatrix
+o $AXIOM/doc/src/algebra/matrix.spad.dvi
+
+@
<<domain SQMATRIX SquareMatrix>>=
)abbrev domain SQMATRIX SquareMatrix
++ Author: Grabmeier, Gschnitzer, Williamson
diff --git a/src/algebra/opalg.spad.pamphlet b/src/algebra/opalg.spad.pamphlet
index 8eab785..d9ffc6d 100644
--- a/src/algebra/opalg.spad.pamphlet
+++ b/src/algebra/opalg.spad.pamphlet
@@ -263,7 +263,7 @@ t := operator("tilde") :: OP(R)
--S 3 of 21
)set expose add constructor Operator
--R
---R Operator is now explicitly exposed in frame frame0
+--I Operator is now explicitly exposed in frame frame0
--E 3
--S 4 of 21
diff --git a/src/algebra/poly.spad.pamphlet b/src/algebra/poly.spad.pamphlet
index ad0206c..9f28927 100644
--- a/src/algebra/poly.spad.pamphlet
+++ b/src/algebra/poly.spad.pamphlet
@@ -766,6 +766,633 @@ SparseUnivariatePolynomialFunctions2(R:Ring, S:Ring): with
@
\section{domain UP UnivariatePolynomial}
+<<UnivariatePolynomial.input>>=
+-- poly.spad.pamphlet UnivariatePolynomial.input
+)spool UnivariatePolynomial.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 35
+(p,q) : UP(x,INT)
+--R
+--R Type:
Void
+--E 1
+
+--S 2 of 35
+p := (3*x-1)**2 * (2*x + 8)
+--R
+--R
+--R 3 2
+--R (2) 18x + 60x - 46x + 8
+--R Type:
UnivariatePolynomial(x,Integer)
+--E 2
+
+--S 3 of 35
+q := (1 - 6*x + 9*x**2)**2
+--R
+--R
+--R 4 3 2
+--R (3) 81x - 108x + 54x - 12x + 1
+--R Type:
UnivariatePolynomial(x,Integer)
+--E 3
+
+--S 4 of 35
+p**2 + p*q
+--R
+--R
+--R 7 6 5 4 3 2
+--R (4) 1458x + 3240x - 7074x + 10584x - 9282x + 4120x - 878x + 72
+--R Type:
UnivariatePolynomial(x,Integer)
+--E 4
+
+--S 5 of 35
+leadingCoefficient p
+--R
+--R
+--R (5) 18
+--R Type:
PositiveInteger
+--E 5
+
+--S 6 of 35
+degree p
+--R
+--R
+--R (6) 3
+--R Type:
PositiveInteger
+--E 6
+
+--S 7 of 35
+reductum p
+--R
+--R
+--R 2
+--R (7) 60x - 46x + 8
+--R Type:
UnivariatePolynomial(x,Integer)
+--E 7
+
+--S 8 of 35
+gcd(p,q)
+--R
+--R
+--R 2
+--R (8) 9x - 6x + 1
+--R Type:
UnivariatePolynomial(x,Integer)
+--E 8
+
+--S 9 of 35
+lcm(p,q)
+--R
+--R
+--R 5 4 3 2
+--R (9) 162x + 432x - 756x + 408x - 94x + 8
+--R Type:
UnivariatePolynomial(x,Integer)
+--E 9
+
+--S 10 of 35
+resultant(p,q)
+--R
+--R
+--R (10) 0
+--R Type:
NonNegativeInteger
+--E 10
+
+--S 11 of 35
+D p
+--R
+--R
+--R 2
+--R (11) 54x + 120x - 46
+--R Type:
UnivariatePolynomial(x,Integer)
+--E 11
+
+--S 12 of 35
+p(2)
+--R
+--R
+--R (12) 300
+--R Type:
PositiveInteger
+--E 12
+
+--S 13 of 35
+p(q)
+--R
+--R
+--R (13)
+--R 12 11 10 9 8
+--R 9565938x - 38263752x + 70150212x - 77944680x + 58852170x
+--R +
+--R 7 6 5 4 3 2
+--R - 32227632x + 13349448x - 4280688x + 1058184x - 192672x + 23328x
+--R +
+--R - 1536x + 40
+--R Type:
UnivariatePolynomial(x,Integer)
+--E 13
+
+--S 14 of 35
+q(p)
+--R
+--R
+--R (14)
+--R 12 11 10 9 8
+--R 8503056x + 113374080x + 479950272x + 404997408x - 1369516896x
+--R +
+--R 7 6 5 4
3
+--R - 626146848x + 2939858712x - 2780728704x + 1364312160x - 396838872x
+--R +
+--R 2
+--R 69205896x - 6716184x + 279841
+--R Type:
UnivariatePolynomial(x,Integer)
+--E 14
+
+--S 15 of 35
+l := coefficients p
+--R
+--R
+--R (15) [18,60,- 46,8]
+--R Type: List
Integer
+--E 15
+
+--S 16 of 35
+reduce(gcd,l)
+--R
+--R
+--R (16) 2
+--R Type:
PositiveInteger
+--E 16
+
+--S 17 of 35
+content p
+--R
+--R
+--R (17) 2
+--R Type:
PositiveInteger
+--E 17
+
+--S 18 of 35
+ux := (x**4+2*x+3)::UP(x,INT)
+--R
+--R
+--R 4
+--R (18) x + 2x + 3
+--R Type:
UnivariatePolynomial(x,Integer)
+--E 18
+
+--S 19 of 35
+vectorise(ux,5)
+--R
+--R
+--R (19) [3,2,0,0,1]
+--R Type: Vector
Integer
+--E 19
+
+--S 20 of 35
+squareTerms(p) == reduce(+,[t**2 for t in monomials p])
+--R
+--R Type:
Void
+--E 20
+
+--S 21 of 35
+p
+--R
+--R
+--R 3 2
+--R (21) 18x + 60x - 46x + 8
+--R Type:
UnivariatePolynomial(x,Integer)
+--E 21
+
+--S 22 of 35
+squareTerms p
+--R
+--R Compiling function squareTerms with type UnivariatePolynomial(x,
+--R Integer) -> UnivariatePolynomial(x,Integer)
+--R
+--R 6 4 2
+--R (22) 324x + 3600x + 2116x + 64
+--R Type:
UnivariatePolynomial(x,Integer)
+--E 22
+
+--S 23 of 35
+(r,s) : UP(a1,FRAC INT)
+--R
+--R Type:
Void
+--E 23
+
+--S 24 of 35
+r := a1**2 - 2/3
+--R
+--R
+--R 2 2
+--R (24) a1 - -
+--R 3
+--R Type: UnivariatePolynomial(a1,Fraction
Integer)
+--E 24
+
+--S 25 of 35
+s := a1 + 4
+--R
+--R
+--R (25) a1 + 4
+--R Type: UnivariatePolynomial(a1,Fraction
Integer)
+--E 25
+
+--S 26 of 35
+r quo s
+--R
+--R
+--R (26) a1 - 4
+--R Type: UnivariatePolynomial(a1,Fraction
Integer)
+--E 26
+
+--S 27 of 35
+r rem s
+--R
+--R
+--R 46
+--R (27) --
+--R 3
+--R Type: UnivariatePolynomial(a1,Fraction
Integer)
+--E 27
+
+--S 28 of 35
+d := divide(r, s)
+--R
+--R
+--R 46
+--R (28) [quotient= a1 - 4,remainder= --]
+--R 3
+--RType: Record(quotient: UnivariatePolynomial(a1,Fraction Integer),remainder:
UnivariatePolynomial(a1,Fraction Integer))
+--E 28
+
+--S 29 of 35
+r - (d.quotient * s + d.remainder)
+--R
+--R
+--R (29) 0
+--R Type: UnivariatePolynomial(a1,Fraction
Integer)
+--E 29
+
+--S 30 of 35
+integrate r
+--R
+--R
+--R 1 3 2
+--R (30) - a1 - - a1
+--R 3 3
+--R Type: UnivariatePolynomial(a1,Fraction
Integer)
+--E 30
+
+--S 31 of 35
+integrate s
+--R
+--R
+--R 1 2
+--R (31) - a1 + 4a1
+--R 2
+--R Type: UnivariatePolynomial(a1,Fraction
Integer)
+--E 31
+
+--S 32 of 35
+t : UP(a1,FRAC POLY INT)
+--R
+--R Type:
Void
+--E 32
+
+--S 33 of 35
+t := a1**2 - a1/b2 + (b1**2-b1)/(b2+3)
+--R
+--R
+--R 2
+--R 2 1 b1 - b1
+--R (33) a1 - -- a1 + --------
+--R b2 b2 + 3
+--R Type: UnivariatePolynomial(a1,Fraction Polynomial
Integer)
+--E 33
+
+--S 34 of 35
+u : FRAC POLY INT := t
+--R
+--R
+--R 2 2 2 2
+--R a1 b2 + (b1 - b1 + 3a1 - a1)b2 - 3a1
+--R (34) ---------------------------------------
+--R 2
+--R b2 + 3b2
+--R Type: Fraction Polynomial
Integer
+--E 34
+
+--S 35 of 35
+u :: UP(b1,?)
+--R
+--R
+--R 2
+--R 1 2 1 a1 b2 - a1
+--R (35) ------ b1 - ------ b1 + ----------
+--R b2 + 3 b2 + 3 b2
+--R Type: UnivariatePolynomial(b1,Fraction Polynomial
Integer)
+--E 35
+)spool
+)lisp (bye)
+@
+<<UnivariatePolynomial.help>>=
+====================================================================
+UnivariatePolynomial examples
+====================================================================
+
+The domain constructor UnivariatePolynomial (abbreviated UP) creates
+domains of univariate polynomials in a specified variable. For
+example, the domain UP(a1,POLY FRAC INT) provides polynomials in the
+single variable a1 whose coefficients are general polynomials with
+rational number coefficients.
+
+Restriction: Axiom does not allow you to create types where
+UnivariatePolynomial is contained in the coefficient type of
+Polynomial. Therefore, UP(x,POLY INT) is legal but POLY UP(x,INT)
+is not.
+
+UP(x,INT) is the domain of polynomials in the single variable x with
+integer coefficients.
+
+ (p,q) : UP(x,INT)
+ Type: Void
+
+ p := (3*x-1)**2 * (2*x + 8)
+ 3 2
+ 18x + 60x - 46x + 8
+ Type: UnivariatePolynomial(x,Integer)
+
+ q := (1 - 6*x + 9*x**2)**2
+ 4 3 2
+ 81x - 108x + 54x - 12x + 1
+ Type: UnivariatePolynomial(x,Integer)
+
+The usual arithmetic operations are available for univariate polynomials.
+
+ p**2 + p*q
+ 7 6 5 4 3 2
+ 1458x + 3240x - 7074x + 10584x - 9282x + 4120x - 878x + 72
+ Type: UnivariatePolynomial(x,Integer)
+
+The operation leadingCoefficient extracts the coefficient of the term
+of highest degree.
+
+ leadingCoefficient p
+ 18
+ Type: PositiveInteger
+
+The operation degree returns the degree of the polynomial. Since the
+polynomial has only one variable, the variable is not supplied to
+operations like degree.
+
+ degree p
+ 3
+ Type: PositiveInteger
+
+The reductum of the polynomial, the polynomial obtained by subtracting
+the term of highest order, is returned by reductum.
+
+ reductum p
+ 2
+ 60x - 46x + 8
+ Type: UnivariatePolynomial(x,Integer)
+
+The operation gcd computes the greatest common divisor of two polynomials.
+
+ gcd(p,q)
+ 2
+ 9x - 6x + 1
+ Type: UnivariatePolynomial(x,Integer)
+
+The operation lcm computes the least common multiple.
+
+ lcm(p,q)
+ 5 4 3 2
+ 162x + 432x - 756x + 408x - 94x + 8
+ Type: UnivariatePolynomial(x,Integer)
+
+The operation resultant computes the resultant of two univariate
+polynomials. In the case of p and q, the resultant is 0 because they
+share a common root.
+
+ resultant(p,q)
+ 0
+ Type: NonNegativeInteger
+
+To compute the derivative of a univariate polynomial with respect to its
+variable, use the function D.
+
+ D p
+ 2
+ 54x + 120x - 46
+ Type: UnivariatePolynomial(x,Integer)
+
+Univariate polynomials can also be used as if they were functions. To
+evaluate a univariate polynomial at some point, apply the polynomial
+to the point.
+
+ p(2)
+ 300
+ Type: PositiveInteger
+
+The same syntax is used for composing two univariate polynomials, i.e.
+substituting one polynomial for the variable in another. This substitutes
+q for the variable in p.
+
+ p(q)
+ 12 11 10 9 8
+ 9565938x - 38263752x + 70150212x - 77944680x + 58852170x
+ +
+ 7 6 5 4 3 2
+ - 32227632x + 13349448x - 4280688x + 1058184x - 192672x + 23328x
+ +
+ - 1536x + 40
+ Type: UnivariatePolynomial(x,Integer)
+
+This substitutes p for the variable in q.
+
+ q(p)
+ 12 11 10 9 8
+ 8503056x + 113374080x + 479950272x + 404997408x - 1369516896x
+ +
+ 7 6 5 4 3
+ - 626146848x + 2939858712x - 2780728704x + 1364312160x - 396838872x
+ +
+ 2
+ 69205896x - 6716184x + 279841
+ Type: UnivariatePolynomial(x,Integer)
+
+To obtain a list of coefficients of the polynomial, use coefficients.
+
+ l := coefficients p
+ [18,60,- 46,8]
+ Type: List Integer
+
+From this you can use gcd and reduce to compute the content of the polynomial.
+
+ reduce(gcd,l)
+ 2
+ Type: PositiveInteger
+
+Alternatively (and more easily), you can just call content.
+
+ content p
+ 2
+ Type: PositiveInteger
+
+Note that the operation coefficients omits the zero coefficients from
+the list. Sometimes it is useful to convert a univariate polynomial
+to a vector whose i-th position contains the degree i-1 coefficient of
+the polynomial.
+
+ ux := (x**4+2*x+3)::UP(x,INT)
+ 4
+ x + 2x + 3
+ Type: UnivariatePolynomial(x,Integer)
+
+To get a complete vector of coefficients, use the operation vectorise,
+which takes a univariate polynomial and an integer denoting the length
+of the desired vector.
+
+ vectorise(ux,5)
+ [3,2,0,0,1]
+ Type: Vector Integer
+
+It is common to want to do something to every term of a polynomial,
+creating a new polynomial in the process.
+
+This is a function for iterating across the terms of a polynomial,
+squaring each term.
+
+ squareTerms(p) == reduce(+,[t**2 for t in monomials p])
+ Type: Void
+
+Recall what p looked like.
+
+ p
+ 3 2
+ 18x + 60x - 46x + 8
+ Type: UnivariatePolynomial(x,Integer)
+
+We can demonstrate squareTerms on p.
+
+ squareTerms p
+ 6 4 2
+ 324x + 3600x + 2116x + 64
+ Type: UnivariatePolynomial(x,Integer)
+
+When the coefficients of the univariate polynomial belong to a field,
+it is possible to compute quotients and remainders. For example, when
+the coefficients are rational numbers, as opposed to integers. The
+important property of a field is that non-zero elements can be divided
+and produce another element. The quotient of the integers 2 and 3 is
+not another integer.
+
+ (r,s) : UP(a1,FRAC INT)
+ Type: Void
+
+ r := a1**2 - 2/3
+ 2 2
+ a1 - -
+ 3
+ Type: UnivariatePolynomial(a1,Fraction Integer)
+
+ s := a1 + 4
+ a1 + 4
+ Type: UnivariatePolynomial(a1,Fraction Integer)
+
+When the coefficients are rational numbers or rational expressions,
+the operation quo computes the quotient of two polynomials.
+
+ r quo s
+ a1 - 4
+ Type: UnivariatePolynomial(a1,Fraction Integer)
+
+The operation rem computes the remainder.
+
+ r rem s
+ 46
+ --
+ 3
+ Type: UnivariatePolynomial(a1,Fraction Integer)
+
+The operation divide can be used to return a record of both components.
+
+ d := divide(r, s)
+ 46
+ [quotient= a1 - 4,remainder= --]
+ 3
+ Type: Record(quotient: UnivariatePolynomial(a1,Fraction Integer),
+ remainder: UnivariatePolynomial(a1,Fraction Integer))
+
+Now we check the arithmetic!
+
+ r - (d.quotient * s + d.remainder)
+ 0
+ Type: UnivariatePolynomial(a1,Fraction Integer)
+
+It is also possible to integrate univariate polynomials when the
+coefficients belong to a field.
+
+ integrate r
+ 1 3 2
+ - a1 - - a1
+ 3 3
+ Type: UnivariatePolynomial(a1,Fraction Integer)
+
+ integrate s
+ 1 2
+ - a1 + 4a1
+ 2
+ Type: UnivariatePolynomial(a1,Fraction Integer)
+
+One application of univariate polynomials is to see expressions in terms
+of a specific variable.
+
+We start with a polynomial in a1 whose coefficients are quotients of
+polynomials in b1 and b2.
+
+ t : UP(a1,FRAC POLY INT)
+ Type: Void
+
+Since in this case we are not talking about using multivariate
+polynomials in only two variables, we use Polynomial. We also use
+Fraction because we want fractions.
+
+ t := a1**2 - a1/b2 + (b1**2-b1)/(b2+3)
+ 2
+ 2 1 b1 - b1
+ a1 - -- a1 + --------
+ b2 b2 + 3
+ Type: UnivariatePolynomial(a1,Fraction Polynomial Integer)
+
+We push all the variables into a single quotient of polynomials.
+
+ u : FRAC POLY INT := t
+ 2 2 2 2
+ a1 b2 + (b1 - b1 + 3a1 - a1)b2 - 3a1
+ ---------------------------------------
+ 2
+ b2 + 3b2
+ Type: Fraction Polynomial Integer
+
+Alternatively, we can view this as a polynomial in the variable This
+is a mode-directed conversion: you indicate as much of the structure
+as you care about and let Axiom decide on the full type and how to do
+the transformation.
+
+ u :: UP(b1,?)
+ 2
+ 1 2 1 a1 b2 - a1
+ ------ b1 - ------ b1 + ----------
+ b2 + 3 b2 + 3 b2
+ Type: UnivariatePolynomial(b1,Fraction Polynomial Integer)
+
+See Also:
+o )help MultivariatePolynomial
+o )help DistributedMultivariatePolynomial
+o )show UnivariatePolynomial
+o $AXIOM/doc/src/algebra/poly.spad.dvi
+
+@
<<domain UP UnivariatePolynomial>>=
)abbrev domain UP UnivariatePolynomial
++ Author:
diff --git a/src/algebra/seg.spad.pamphlet b/src/algebra/seg.spad.pamphlet
index 7d6026b..31740f6 100644
--- a/src/algebra/seg.spad.pamphlet
+++ b/src/algebra/seg.spad.pamphlet
@@ -567,6 +567,148 @@ SegmentBindingFunctions2(R:Type, S:Type): with
@
\section{domain UNISEG UniversalSegment}
+<<UniversalSegment.input>>=
+-- seg.spad.pamphlet UniversalSegment.input
+)spool UniversalSegment.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 9
+pints := 1..
+--R
+--R
+--R (1) 1..
+--R Type: UniversalSegment
PositiveInteger
+--E 1
+
+--S 2 of 9
+nevens := (0..) by -2
+--R
+--R
+--R (2) 0.. by - 2
+--R Type: UniversalSegment
NonNegativeInteger
+--E 2
+
+--S 3 of 9
+useg: UniversalSegment(Integer) := 3..10
+--R
+--R
+--R (3) 3..10
+--R Type: UniversalSegment
Integer
+--E 3
+
+--S 4 of 9
+hasHi pints
+--R
+--R
+--R (4) false
+--R Type:
Boolean
+--E 4
+
+--S 5 of 9
+hasHi nevens
+--R
+--R
+--R (5) false
+--R Type:
Boolean
+--E 5
+
+--S 6 of 9
+hasHi useg
+--R
+--R
+--R (6) true
+--R Type:
Boolean
+--E 6
+
+--S 7 of 9
+expand pints
+--R
+--R
+--R (7) [1,2,3,4,5,6,7,8,9,10,...]
+--R Type: Stream
Integer
+--E 7
+
+--S 8 of 9
+expand nevens
+--R
+--R
+--R (8) [0,- 2,- 4,- 6,- 8,- 10,- 12,- 14,- 16,- 18,...]
+--R Type: Stream
Integer
+--E 8
+
+--S 9 of 9
+expand [1, 3, 10..15, 100..]
+--R
+--R
+--R (9) [1,3,10,11,12,13,14,15,100,101,...]
+--R Type: Stream
Integer
+--E 9
+)spool
+)lisp (bye)
+@
+<<UniversalSegment.help>>=
+====================================================================
+UniversalSegment examples
+====================================================================
+
+The UniversalSegment domain generalizes Segment by allowing segments
+without a "hi" end point.
+
+ pints := 1..
+ 1..
+ Type: UniversalSegment PositiveInteger
+
+ nevens := (0..) by -2
+ 0.. by - 2
+ Type: UniversalSegment NonNegativeInteger
+
+Values of type Segment are automatically converted to type
+UniversalSegment when appropriate.
+
+ useg: UniversalSegment(Integer) := 3..10
+ 3..10
+ Type: UniversalSegment Integer
+
+The operation hasHi is used to test whether a segment has a hi end point.
+
+ hasHi pints
+ false
+ Type: Boolean
+
+ hasHi nevens
+ false
+ Type: Boolean
+
+ hasHi useg
+ true
+ Type: Boolean
+
+All operations available on type Segment apply to UniversalSegment, with
+the proviso that expansions produce streams rather than lists. This is
+to accommodate infinite expansions.
+
+ expand pints
+ [1,2,3,4,5,6,7,8,9,10,...]
+ Type: Stream Integer
+
+ expand nevens
+ [0,- 2,- 4,- 6,- 8,- 10,- 12,- 14,- 16,- 18,...]
+ Type: Stream Integer
+
+ expand [1, 3, 10..15, 100..]
+ [1,3,10,11,12,13,14,15,100,101,...]
+ Type: Stream Integer
+
+See Also:
+o )help Segment
+o )help SegmentBinding
+o )help List
+o )help Stream
+o )show UniversalSegment
+o $AXIOM/doc/src/algebra/seg.spad.dvi
+
+@
<<domain UNISEG UniversalSegment>>=
)abbrev domain UNISEG UniversalSegment
++ Author: Robert S. Sutor
diff --git a/src/algebra/si.spad.pamphlet b/src/algebra/si.spad.pamphlet
index b7be18a..04d6d1f 100644
--- a/src/algebra/si.spad.pamphlet
+++ b/src/algebra/si.spad.pamphlet
@@ -651,6 +651,192 @@ This is eventually forcibly replaced by a recompiled
version.
The definition of {\bf one?} has been rewritten
as it relies on calling {\bf ONEP} which is a function specific
to Codemist Common Lisp but is not defined in Common Lisp.
+<<SingleInteger.input>>=
+-- si.spad.pamphlet SingleInteger.input
+)spool SingleInteger.output
+)set message test on
+)set message auto off
+)clear all
+--S 1
+min()$SingleInteger
+--R
+--R
+--R (1) - 2147483648
+--R Type:
SingleInteger
+--E 1
+
+--S 2
+max()$SingleInteger
+--R
+--R
+--R (2) 2147483647
+--R Type:
SingleInteger
+--E 2
+
+--S 3
+a := 1234 :: SingleInteger
+--R
+--R
+--R (3) 1234
+--R Type:
SingleInteger
+--E 3
+
+--S 4
+b := 124$SingleInteger
+--R
+--R
+--R (4) 124
+--R Type:
SingleInteger
+--E 4
+
+--S 5
+gcd(a,b)
+--R
+--R
+--R (5) 2
+--R Type:
SingleInteger
+--E 5
+
+--S 6
+lcm(a,b)
+--R
+--R
+--R (6) 76508
+--R Type:
SingleInteger
+--E 6
+
+--S 7
+mulmod(5,6,13)$SingleInteger
+--R
+--R
+--R (7) 4
+--R Type:
SingleInteger
+--E 7
+
+--S 8
+positiveRemainder(37,13)$SingleInteger
+--R
+--R
+--R (8) 11
+--R Type:
SingleInteger
+--E 8
+
+--S 9
+And(3,4)$SingleInteger
+--R
+--R
+--R (9) 0
+--R Type:
SingleInteger
+--E 9
+
+--S 10
+shift(1,4)$SingleInteger
+--R
+--R
+--R (10) 16
+--R Type:
SingleInteger
+--E 10
+
+--S 11
+shift(31,-1)$SingleInteger
+--R
+--R
+--R (11) 15
+--R Type:
SingleInteger
+--E 11
+)spool
+)lisp (bye)
+@
+<<SingleInteger.help>>=
+====================================================================
+SingleInteger examples
+====================================================================
+
+The SingleInteger domain is intended to provide support in Axiom
+for machine integer arithmetic. It is generally much faster than
+(bignum) Integer arithmetic but suffers from a limited range of
+values. Since Axiom can be implemented on top of various dialects of
+Lisp, the actual representation of small integers may not correspond
+exactly to the host machines integer representation.
+
+You can discover the minimum and maximum values in your implementation
+by using min and max.
+
+ min()$SingleInteger
+ - 2147483648
+ Type: SingleInteger
+
+ max()$SingleInteger
+ 2147483647
+ Type: SingleInteger
+
+To avoid confusion with Integer, which is the default type for
+integers, you usually need to work with declared variables.
+
+ a := 1234 :: SingleInteger
+ 1234
+ Type: SingleInteger
+
+or use package calling
+
+ b := 124$SingleInteger
+ 124
+ Type: SingleInteger
+
+You can add, multiply and subtract SingleInteger objects, and ask for
+the greatest common divisor (gcd).
+
+ gcd(a,b)
+ 2
+ Type: SingleInteger
+
+The least common multiple (lcm) is also available.
+
+ lcm(a,b)
+ 76508
+ Type: SingleInteger
+
+Operations mulmod, addmod, submod, and invmod are similar - they provide
+arithmetic modulo a given small integer.
+Here is 5 * 6 mod 13.
+
+ mulmod(5,6,13)$SingleInteger
+ 4
+ Type: SingleInteger
+
+To reduce a small integer modulo a prime, use positiveRemainder.
+
+ positiveRemainder(37,13)$SingleInteger
+ 11
+ Type: SingleInteger
+
+Operations And, Or, xor, and Not provide bit level operations on small
+integers.
+
+ And(3,4)$SingleInteger
+ 0
+ Type: SingleInteger
+
+Use shift(int,numToShift) to shift bits, where i is shifted left if
+numToShift is positive, right if negative.
+
+ shift(1,4)$SingleInteger
+ 16
+ Type: SingleInteger
+
+ shift(31,-1)$SingleInteger
+ 15
+ Type: SingleInteger
+
+Many other operations are available for small integers, including many
+of those provided for Integer.
+
+See Also:
+o )help Integer
+o )show SingleInteger
+o $AXIOM/doc/src/algebra/si.spad.dvi
+
+@
<<domain SINT SingleInteger>>=
)abbrev domain SINT SingleInteger
diff --git a/src/algebra/sregset.spad.pamphlet
b/src/algebra/sregset.spad.pamphlet
index 1988688..c0cdb44 100644
--- a/src/algebra/sregset.spad.pamphlet
+++ b/src/algebra/sregset.spad.pamphlet
@@ -1160,6 +1160,477 @@ SquareFreeRegularSetDecompositionPackage(R,E,V,P,TS):
Exports == Implementation
@
\section{domain SREGSET SquareFreeRegularTriangularSet}
+<<SquareFreeRegularTriangularSet.input>>=
+-- sregset.spad.pamphlet SquareFreeRegularTriangularSet.input
+)spool SquareFreeRegularTriangularSet.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 23
+R := Integer
+--R
+--R
+--R (1) Integer
+--R Type:
Domain
+--E 1
+
+--S 2 of 23
+ls : List Symbol := [x,y,z,t]
+--R
+--R
+--R (2) [x,y,z,t]
+--R Type: List
Symbol
+--E 2
+
+--S 3 of 23
+V := OVAR(ls)
+--R
+--R
+--R (3) OrderedVariableList [x,y,z,t]
+--R Type:
Domain
+--E 3
+
+--S 4 of 23
+E := IndexedExponents V
+--R
+--R
+--R (4) IndexedExponents OrderedVariableList [x,y,z,t]
+--R Type:
Domain
+--E 4
+
+--S 5 of 23
+P := NSMP(R, V)
+--R
+--R
+--R (5) NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--R Type:
Domain
+--E 5
+
+--S 6 of 23
+x: P := 'x
+--R
+--R
+--R (6) x
+--R Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 6
+
+--S 7 of 23
+y: P := 'y
+--R
+--R
+--R (7) y
+--R Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 7
+
+--S 8 of 23
+z: P := 'z
+--R
+--R
+--R (8) z
+--R Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 8
+
+--S 9 of 23
+t: P := 't
+--R
+--R
+--R (9) t
+--R Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 9
+
+--S 10 of 23
+ST := SREGSET(R,E,V,P)
+--R
+--R
+--R (10)
+--R SquareFreeRegularTriangularSet(Integer,IndexedExponents
OrderedVariableList [
+--R x,y,z,t],OrderedVariableList
[x,y,z,t],NewSparseMultivariatePolynomial(Intege
+--R r,OrderedVariableList [x,y,z,t]))
+--R Type:
Domain
+--E 10
+
+--S 11 of 23
+p1 := x ** 31 - x ** 6 - x - y
+--R
+--R
+--R 31 6
+--R (11) x - x - x - y
+--R Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 11
+
+--S 12 of 23
+p2 := x ** 8 - z
+--R
+--R
+--R 8
+--R (12) x - z
+--R Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 12
+
+--S 13 of 23
+p3 := x ** 10 - t
+--R
+--R
+--R 10
+--R (13) x - t
+--R Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 13
+
+--S 14 of 23
+lp := [p1, p2, p3]
+--R
+--R
+--R 31 6 8 10
+--R (14) [x - x - x - y,x - z,x - t]
+--RType: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 14
+
+--S 15 of 23
+zeroSetSplit(lp)$ST
+--R
+--R
+--R 5 4 2 3 8 5 3 2 4 2
+--R (15) [{z - t ,t z y + 2z y - t + 2t + t - t ,(t - t)x - t y - z }]
+--RType: List SquareFreeRegularTriangularSet(Integer,IndexedExponents
OrderedVariableList [x,y,z,t],OrderedVariableList
[x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t]))
+--E 15
+
+--S 16 of 23
+zeroSetSplit(lp,false)$ST
+--R
+--R
+--R (16)
+--R 5 4 2 3 8 5 3 2 4 2
+--R [{z - t ,t z y + 2z y - t + 2t + t - t ,(t - t)x - t y - z },
+--R 3 5 2 2
+--R {t - 1,z - t,t y + z ,z x - t}, {t,z,y,x}]
+--RType: List SquareFreeRegularTriangularSet(Integer,IndexedExponents
OrderedVariableList [x,y,z,t],OrderedVariableList
[x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t]))
+--E 16
+
+--S 17 of 23
+T := REGSET(R,E,V,P)
+--R
+--R
+--R (17)
+--R RegularTriangularSet(Integer,IndexedExponents OrderedVariableList
[x,y,z,t],O
+--R rderedVariableList
[x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedV
+--R ariableList [x,y,z,t]))
+--R Type:
Domain
+--E 17
+
+--S 18 of 23
+lts := zeroSetSplit(lp,false)$T
+--R
+--R
+--R (18)
+--R 5 4 2 3 8 5 3 2 4 2
+--R [{z - t ,t z y + 2z y - t + 2t + t - t ,(t - t)x - t y - z },
+--R 3 5 2 3 2
+--R {t - 1,z - t,t z y + 2z y + 1,z x - t}, {t,z,y,x}]
+--RType: List RegularTriangularSet(Integer,IndexedExponents
OrderedVariableList [x,y,z,t],OrderedVariableList
[x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t]))
+--E 18
+
+--S 19 of 23
+ts := lts.2
+--R
+--R
+--R 3 5 2 3 2
+--R (19) {t - 1,z - t,t z y + 2z y + 1,z x - t}
+--RType: RegularTriangularSet(Integer,IndexedExponents OrderedVariableList
[x,y,z,t],OrderedVariableList
[x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t]))
+--E 19
+
+--S 20 of 23
+pol := select(ts,'y)$T
+--R
+--R
+--R 2 3
+--R (20) t z y + 2z y + 1
+--RType: Union(NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t]),...)
+--E 20
+
+--S 21 of 23
+tower := collectUnder(ts,'y)$T
+--R
+--R
+--R 3 5
+--R (21) {t - 1,z - t}
+--RType: RegularTriangularSet(Integer,IndexedExponents OrderedVariableList
[x,y,z,t],OrderedVariableList
[x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t]))
+--E 21
+
+--S 22 of 23
+pack := RegularTriangularSetGcdPackage(R,E,V,P,T)
+--R
+--R
+--R (22)
+--R RegularTriangularSetGcdPackage(Integer,IndexedExponents
OrderedVariableList [
+--R x,y,z,t],OrderedVariableList
[x,y,z,t],NewSparseMultivariatePolynomial(Intege
+--R r,OrderedVariableList
[x,y,z,t]),RegularTriangularSet(Integer,IndexedExponent
+--R s OrderedVariableList [x,y,z,t],OrderedVariableList
[x,y,z,t],NewSparseMultiv
+--R ariatePolynomial(Integer,OrderedVariableList [x,y,z,t])))
+--R Type:
Domain
+--E 22
+
+--S 23 of 23
+toseSquareFreePart(pol,tower)$pack
+--R
+--R
+--R 2 3 5
+--R (23) [[val= t y + z ,tower= {t - 1,z - t}]]
+--RType: List Record(val:
NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]),tower:
RegularTriangularSet(Integer,IndexedExponents OrderedVariableList
[x,y,z,t],OrderedVariableList
[x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])))
+--E 23
+)spool
+)lisp (bye)
+@
+<<SquareFreeRegularTriangularSet.help>>=
+====================================================================
+SquareFreeRegularTriangularSet examples
+====================================================================
+
+The SquareFreeRegularTriangularSet domain constructor implements
+square-free regular triangular sets. See the RegularTriangularSet
+domain constructor for general regular triangular sets. Let T be a
+regular triangular set consisting of polynomials t1, ..., tm ordered
+by increasing main variables. The regular triangular set T is
+square-free if T is empty or if t1, ..., tm-1 is square-free and if the
+polynomial tm is square-free as a univariate polynomial with coefficients
+in the tower of simple extensions associated with t1,...,tm-1.
+
+The main interest of square-free regular triangular sets is that their
+associated towers of simple extensions are product of fields.
+Consequently, the saturated ideal of a square-free regular triangular
+set is radical. This property simplifies some of the operations
+related to regular triangular sets. However, building square-free
+regular triangular sets is generally more expensive than building
+general regular triangular sets.
+
+As the RegularTriangularSet domain constructor, the
+SquareFreeRegularTriangularSet domain constructor also implements a
+method for solving polynomial systems by means of regular triangular
+sets. This is in fact the same method with some adaptations to take
+into account the fact that the computed regular chains are
+square-free. Note that it is also possible to pass from a
+decomposition into general regular triangular sets to a decomposition
+into square-free regular triangular sets. This conversion is used
+internally by the LazardSetSolvingPackage package constructor.
+
+N.B. When solving polynomial systems with the
+SquareFreeRegularTriangularSet domain constructor or the
+LazardSetSolvingPackage package constructor, decompositions have no
+redundant components. See also LexTriangularPackage and
+ZeroDimensionalSolvePackage for the case of algebraic systems with a
+finite number of (complex) solutions.
+
+We shall explain now how to use the constructor SquareFreeRegularTriangularSet.
+
+This constructor takes four arguments. The first one, R, is the
+coefficient ring of the polynomials; it must belong to the category
+GcdDomain. The second one, E, is the exponent monoid of the
+polynomials; it must belong to the category OrderedAbelianMonoidSup.
+the third one, V, is the ordered set of variables; it must belong to
+the category OrderedSet. The last one is the polynomial ring; it must
+belong to the category RecursivePolynomialCategory(R,E,V). The
+abbreviation for SquareFreeRegularTriangularSet} is SREGSET.
+
+Note that the way of understanding triangular decompositions
+is detailed in the example of the RegularTriangularSet constructor.
+
+Let us illustrate the use of this constructor with one example
+(Donati-Traverso). Define the coefficient ring.
+
+ R := Integer
+ Integer
+ Type: Domain
+
+Define the list of variables,
+
+ ls : List Symbol := [x,y,z,t]
+ [x,y,z,t]
+ Type: List Symbol
+
+and make it an ordered set;
+
+ V := OVAR(ls)
+ OrderedVariableList [x,y,z,t]
+ Type: Domain
+
+then define the exponent monoid.
+
+ E := IndexedExponents V
+ IndexedExponents OrderedVariableList [x,y,z,t]
+ Type: Domain
+
+Define the polynomial ring.
+
+ P := NSMP(R, V)
+ NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+ Type: Domain
+
+Let the variables be polynomial.
+
+ x: P := 'x
+ x
+ Type: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+ y: P := 'y
+ y
+ Type: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+ z: P := 'z
+ z
+ Type: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+ t: P := 't
+ t
+ Type: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+Now call the SquareFreeRegularTriangularSet domain constructor.
+
+ ST := SREGSET(R,E,V,P)
+ SquareFreeRegularTriangularSet(Integer,IndexedExponents OrderedVariableList [
+ x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Intege
+ r,OrderedVariableList [x,y,z,t]))
+ Type: Domain
+
+Define a polynomial system.
+
+ p1 := x ** 31 - x ** 6 - x - y
+ 31 6
+ x - x - x - y
+ Type: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+ p2 := x ** 8 - z
+ 8
+ x - z
+ Type: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+ p3 := x ** 10 - t
+ 10
+ x - t
+ Type: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+ lp := [p1, p2, p3]
+ 31 6 8 10
+ [x - x - x - y,x - z,x - t]
+ Type: List NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+First of all, let us solve this system in the sense of Kalkbrener.
+
+ zeroSetSplit(lp)$ST
+ 5 4 2 3 8 5 3 2 4 2
+ [{z - t ,t z y + 2z y - t + 2t + t - t ,(t - t)x - t y - z }]
+ Type: List SquareFreeRegularTriangularSet(Integer,
+ IndexedExponents OrderedVariableList [x,y,z,t],
+ OrderedVariableList [x,y,z,t],
+ NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t]))
+
+And now in the sense of Lazard (or Wu and other authors).
+
+ zeroSetSplit(lp,false)$ST
+ 5 4 2 3 8 5 3 2 4 2
+ [{z - t ,t z y + 2z y - t + 2t + t - t ,(t - t)x - t y - z },
+ 3 5 2 2
+ {t - 1,z - t,t y + z ,z x - t}, {t,z,y,x}]
+ Type: List SquareFreeRegularTriangularSet(Integer,
+ IndexedExponents OrderedVariableList [x,y,z,t],
+ OrderedVariableList [x,y,z,t],
+ NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t]))
+
+Now to see the difference with the RegularTriangularSet domain
+constructor, we define:
+
+ T := REGSET(R,E,V,P)
+ RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],O
+ rderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedV
+ ariableList [x,y,z,t]))
+ Type: Domain
+
+and compute:
+
+ lts := zeroSetSplit(lp,false)$T
+ 5 4 2 3 8 5 3 2 4 2
+ [{z - t ,t z y + 2z y - t + 2t + t - t ,(t - t)x - t y - z },
+ 3 5 2 3 2
+ {t - 1,z - t,t z y + 2z y + 1,z x - t}, {t,z,y,x}]
+ Type: List RegularTriangularSet(Integer,
+ IndexedExponents OrderedVariableList [x,y,z,t],
+ OrderedVariableList [x,y,z,t],
+ NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t]))
+
+If you look at the second set in both decompositions in the sense of Lazard,
+you will see that the polynomial with main variable y is not the same.
+
+Let us understand what has happened.
+
+We define:
+
+ ts := lts.2
+ 3 5 2 3 2
+ (19) {t - 1,z - t,t z y + 2z y + 1,z x - t}
+ Type: RegularTriangularSet(Integer,
+ IndexedExponents OrderedVariableList [x,y,z,t],
+ OrderedVariableList [x,y,z,t],
+ NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t]))
+
+ pol := select(ts,'y)$T
+ 2 3
+ t z y + 2z y + 1
+ Type: Union(NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t]),...)
+
+ tower := collectUnder(ts,'y)$T
+ 3 5
+ {t - 1,z - t}
+ Type: RegularTriangularSet(Integer,
+ IndexedExponents OrderedVariableList [x,y,z,t],
+ OrderedVariableList [x,y,z,t],
+ NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t]))
+
+ pack := RegularTriangularSetGcdPackage(R,E,V,P,T)
+ RegularTriangularSetGcdPackage(Integer,IndexedExponents OrderedVariableList [
+ x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Intege
+ r,OrderedVariableList [x,y,z,t]),RegularTriangularSet(Integer,IndexedExponent
+ s OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultiv
+ ariatePolynomial(Integer,OrderedVariableList [x,y,z,t])))
+ Type: Domain
+
+Then we compute:
+
+ toseSquareFreePart(pol,tower)$pack
+ 2 3 5
+ [[val= t y + z ,tower= {t - 1,z - t}]]
+ Type: List Record(val: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t]),
+ tower: RegularTriangularSet(Integer,
+ IndexedExponents OrderedVariableList [x,y,z,t],
+ OrderedVariableList [x,y,z,t],
+ NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])))
+
+See Also:
+o )help GcdDomain
+o )help OrderedAbelianMonoidSup
+o )help OrderedSet
+o )help RecursivePolynomialCategory
+o )help ZeroDimensionalSolvePackage
+o )help LexTriangularPackage
+o )help LazardSetSolvingPackage
+o )help RegularTriangularSet
+o )show SquareFreeRegularTriangularSet
+o $AXIOM/doc/src/algebra/sregset.spad.dvi
+
+@
<<domain SREGSET SquareFreeRegularTriangularSet>>=
)abbrev domain SREGSET SquareFreeRegularTriangularSet
++ Author: Marc Moreno Maza
diff --git a/src/algebra/stream.spad.pamphlet b/src/algebra/stream.spad.pamphlet
index 4edd850..1d68e08 100644
--- a/src/algebra/stream.spad.pamphlet
+++ b/src/algebra/stream.spad.pamphlet
@@ -539,6 +539,188 @@ CyclicStreamTools(S,ST): Exports == Implementation where
@
\section{domain STREAM Stream}
+<<Stream.input>>=
+-- stream.spad.pamphlet Stream.input
+)spool Stream.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 12
+ints := [i for i in 0..]
+--R
+--R
+--R (1) [0,1,2,3,4,5,6,7,8,9,...]
+--R Type: Stream
NonNegativeInteger
+--E 1
+
+--S 2 of 12
+f : List INT -> List INT
+--R
+--R Type:
Void
+--E 2
+
+--S 3 of 12
+f x == [x.1 + x.2, x.1]
+--R
+--R Type:
Void
+--E 3
+
+--S 4 of 12
+fibs := [i.2 for i in [generate(f,[1,1])]]
+--R
+--R Compiling function f with type List Integer -> List Integer
+--R
+--R (4) [1,1,2,3,5,8,13,21,34,55,...]
+--R Type: Stream
Integer
+--E 4
+
+--S 5 of 12
+[i for i in ints | odd? i]
+--R
+--R
+--R (5) [1,3,5,7,9,11,13,15,17,19,...]
+--R Type: Stream
NonNegativeInteger
+--E 5
+
+--S 6 of 12
+odds := [2*i+1 for i in ints]
+--R
+--R
+--R (6) [1,3,5,7,9,11,13,15,17,19,...]
+--R Type: Stream
NonNegativeInteger
+--E 6
+
+--S 7 of 12
+scan(0,+,odds)
+--R
+--R
+--R (7) [1,4,9,16,25,36,49,64,81,100,...]
+--R Type: Stream
NonNegativeInteger
+--E 7
+
+--S 8 of 12
+[i*j for i in ints for j in odds]
+--R
+--R
+--R (8) [0,3,10,21,36,55,78,105,136,171,...]
+--R Type: Stream
NonNegativeInteger
+--E 8
+
+--S 9 of 12
+map(*,ints,odds)
+--R
+--R
+--R (9) [0,3,10,21,36,55,78,105,136,171,...]
+--R Type: Stream
NonNegativeInteger
+--E 9
+
+--S 10 of 12
+first ints
+--R
+--R
+--R (10) 0
+--R Type:
NonNegativeInteger
+--E 10
+
+--S 11 of 12
+rest ints
+--R
+--R
+--R (11) [1,2,3,4,5,6,7,8,9,10,...]
+--R Type: Stream
NonNegativeInteger
+--E 11
+
+--S 12 of 12
+fibs 20
+--R
+--R
+--R (12) 6765
+--R Type:
PositiveInteger
+--E 12
+)spool
+)lisp (bye)
+@
+<<Stream.help>>=
+====================================================================
+Stream examples
+====================================================================
+
+A Stream object is represented as a list whose last element contains
+the wherewithal to create the next element, should it ever be required.
+
+Let ints be the infinite stream of non-negative integers.
+
+ ints := [i for i in 0..]
+ [0,1,2,3,4,5,6,7,8,9,...]
+ Type: Stream NonNegativeInteger
+
+By default, ten stream elements are calculated. This number may be
+changed to something else by the system command
+ )set streams calculate
+
+More generally, you can construct a stream by specifying its initial
+value and a function which, when given an element, creates the next element.
+
+ f : List INT -> List INT
+ Type: Void
+
+ f x == [x.1 + x.2, x.1]
+ Type: Void
+
+ fibs := [i.2 for i in [generate(f,[1,1])]]
+ [1,1,2,3,5,8,13,21,34,55,...]
+ Type: Stream Integer
+
+You can create the stream of odd non-negative integers by either filtering
+them from the integers, or by evaluating an expression for each integer.
+
+ [i for i in ints | odd? i]
+ [1,3,5,7,9,11,13,15,17,19,...]
+ Type: Stream NonNegativeInteger
+
+ odds := [2*i+1 for i in ints]
+ [1,3,5,7,9,11,13,15,17,19,...]
+ Type: Stream NonNegativeInteger
+
+You can accumulate the initial segments of a stream using the scan operation.
+
+ scan(0,+,odds)
+ [1,4,9,16,25,36,49,64,81,100,...]
+ Type: Stream NonNegativeInteger
+
+The corresponding elements of two or more streams can be combined in this way.
+
+ [i*j for i in ints for j in odds]
+ [0,3,10,21,36,55,78,105,136,171,...]
+ Type: Stream NonNegativeInteger
+
+ map(*,ints,odds)
+ [0,3,10,21,36,55,78,105,136,171,...]
+ Type: Stream NonNegativeInteger
+
+Many operations similar to those applicable to lists are available for
+streams.
+
+ first ints
+ 0
+ Type: NonNegativeInteger
+
+ rest ints
+ [1,2,3,4,5,6,7,8,9,10,...]
+ Type: Stream NonNegativeInteger
+
+ fibs 20
+ 6765
+ Type: PositiveInteger
+
+See Also:
+o )help StreamFunctions1
+o )help StreamFunctions2
+o )help StreamFunctions3
+o )show Stream
+o $AXIOM/doc/src/algebra/stream.spad.dvi
+
+@
<<domain STREAM Stream>>=
)abbrev domain STREAM Stream
++ Implementation of streams via lazy evaluation
diff --git a/src/algebra/string.spad.pamphlet b/src/algebra/string.spad.pamphlet
index fe270fc..a7af939 100644
--- a/src/algebra/string.spad.pamphlet
+++ b/src/algebra/string.spad.pamphlet
@@ -1056,6 +1056,510 @@ Note that this code is not included in the generated
catdef.spad file.
(MAKEPROP (QUOTE |IndexedString|) (QUOTE |infovec|) (LIST (QUOTE #(NIL NIL NIL
NIL NIL NIL (|local| |#1|) (|NonNegativeInteger|) (|Character|)
|ISTRING;new;NniC$;1| |ISTRING;empty;$;2| (|Boolean|) |ISTRING;empty?;$B;3|
|ISTRING;#;$Nni;4| |ISTRING;=;2$B;5| |ISTRING;<;2$B;6| |ISTRING;concat;3$;7|
|ISTRING;copy;2$;8| (|Integer|) (|UniversalSegment| 18) (0 . SEGMENT)
|ISTRING;elt;$Us$;31| (6 . SEGMENT) |ISTRING;insert;2$I$;9| (|String|)
(|OutputForm|) (11 . |outputForm|) |ISTRING;coerce;$Of;10|
|ISTRING;minIndex;$I;11| (|CharacterClass|) (16 . |upperCase|) (20 .
|upperCase|) (|Mapping| 8 8) (25 . |map!|) |ISTRING;upperCase!;2$;12| (31 .
|lowerCase|) (35 . |lowerCase|) |ISTRING;lowerCase!;2$;13|
|ISTRING;latex;$S;14| (40 . |lo|) (45 . |hasHi|) (50 . |hi|) (55 . |maxIndex|)
(60 . |space|) |ISTRING;replace;$Us2$;15| |ISTRING;setelt;$I2C;16|
|ISTRING;substring?;2$IB;17| |ISTRING;position;2$2I;18|
|ISTRING;position;C$2I;19| (64 . |member?|) |ISTRING;position;Cc$2I;20|
|ISTRING;suffi!
x?;2$B;21| |ISTRING;elt;$IC;30| (70 . |=|) (|List| |$$|) (76 . |empty|) (80 .
|concat|) (86 . |reverse!|) (|List| |$|) |ISTRING;split;$CL;22|
|ISTRING;split;$CcL;23| |ISTRING;leftTrim;$C$;24| |ISTRING;leftTrim;$Cc$;25|
|ISTRING;rightTrim;$C$;26| |ISTRING;rightTrim;$Cc$;27|
|ISTRING;copyInto!;2$I$;29| |ISTRING;concat;L$;28| (91 . |ord|)
|ISTRING;hash;$I;32| |ISTRING;match;2$CNni;33| (96 . |prefix?|)
|ISTRING;match?;2$CB;34| (|List| 8) (|List| 74) (|Equation| 8) (|Mapping| 8 8
8) (|InputForm|) (|SingleInteger|) (|Mapping| 11 8) (|Mapping| 11 8 8) (|Void|)
(|Union| 8 (QUOTE "failed")) (|List| 18))) (QUOTE #(|~=| 102 |upperCase!| 108
|upperCase| 113 |trim| 118 |swap!| 130 |suffix?| 137 |substring?| 143 |split|
150 |sorted?| 162 |sort!| 173 |sort| 184 |size?| 195 |setelt| 201 |select| 215
|sample| 221 |rightTrim| 225 |reverse!| 237 |reverse| 242 |replace| 247
|removeDuplicates| 254 |remove| 259 |reduce| 271 |qsetelt!| 292 |qelt| 299
|prefix?| 305 |position| 311 |parts| 344 |new| !
349 |more?| 355 |minIndex| 361 |min| 366 |merge| 372 |members!
| 385 |member?| 390 |maxIndex| 396 |max| 401 |match?| 407 |match| 414 |map!|
421 |map| 427 |lowerCase!| 440 |lowerCase| 445 |less?| 450 |leftTrim| 456
|latex| 468 |insert| 473 |indices| 487 |index?| 492 |hash| 498 |first| 508
|find| 513 |fill!| 519 |every?| 525 |eval| 531 |eq?| 557 |entry?| 563 |entries|
569 |empty?| 574 |empty| 579 |elt| 583 |delete| 608 |count| 620 |copyInto!| 632
|copy| 639 |convert| 644 |construct| 649 |concat| 654 |coerce| 677 |any?| 687
|>=| 693 |>| 699 |=| 705 |<=| 711 |<| 717 |#| 723)) (QUOTE ((|shallowlyMutable|
. 0) (|finiteAggregate| . 0))) (CONS (|makeByteWordVec2| 7 (QUOTE (0 0 0 0 0 0
0 3 0 0 7 4 0 0 7 1 2 4))) (CONS (QUOTE #(|StringAggregate&|
|OneDimensionalArrayAggregate&| |FiniteLinearAggregate&| |LinearAggregate&|
|IndexedAggregate&| |Collection&| |HomogeneousAggregate&| |OrderedSet&|
|Aggregate&| |EltableAggregate&| |Evalable&| |SetCategory&| NIL NIL
|InnerEvalable&| NIL NIL |BasicType&|)) (CONS (QUOTE #((|StringAggregate|)
(|OneDimension!
alArrayAggregate| 8) (|FiniteLinearAggregate| 8) (|LinearAggregate| 8)
(|IndexedAggregate| 18 8) (|Collection| 8) (|HomogeneousAggregate| 8)
(|OrderedSet|) (|Aggregate|) (|EltableAggregate| 18 8) (|Evalable| 8)
(|SetCategory|) (|Type|) (|Eltable| 18 8) (|InnerEvalable| 8 8) (|CoercibleTo|
25) (|ConvertibleTo| 76) (|BasicType|))) (|makeByteWordVec2| 82 (QUOTE (2 19 0
18 18 20 1 19 0 18 22 1 25 0 24 26 0 29 0 30 1 8 0 0 31 2 0 0 32 0 33 0 29 0 35
1 8 0 0 36 1 19 18 0 39 1 19 11 0 40 1 19 18 0 41 1 0 18 0 42 0 8 0 43 2 29 11
8 0 49 2 8 11 0 0 53 0 54 0 55 2 54 0 2 0 56 1 54 0 0 57 1 8 18 0 67 2 0 11 0 0
70 2 1 11 0 0 1 1 0 0 0 34 1 0 0 0 1 2 0 0 0 8 1 2 0 0 0 29 1 3 0 80 0 18 18 1
2 0 11 0 0 51 3 0 11 0 0 18 46 2 0 58 0 29 60 2 0 58 0 8 59 1 3 11 0 1 2 0 11
79 0 1 1 3 0 0 1 2 0 0 79 0 1 1 3 0 0 1 2 0 0 79 0 1 2 0 11 0 7 1 3 0 8 0 19 8
1 3 0 8 0 18 8 45 2 0 0 78 0 1 0 0 0 1 2 0 0 0 8 63 2 0 0 0 29 64 1 0 0 0 1 1 0
0 0 1 3 0 0 0 19 0 44 1 1 0 0 1 2 1 0 8 0 1 2 0 0 78 0 1 4 1 8 75!
0 8 8 1 3 0 8 75 0 8 1 2 0 8 75 0 1 3 0 8 0 18 8 1 2 0 8 0 1!
8 1 2 0 11 0 0 70 3 1 18 8 0 18 48 2 1 18 8 0 1 3 0 18 29 0 18 50 3 0 18 0 0 18
47 2 0 18 78 0 1 1 0 72 0 1 2 0 0 7 8 9 2 0 11 0 7 1 1 5 18 0 28 2 3 0 0 0 1 2
3 0 0 0 1 3 0 0 79 0 0 1 1 0 72 0 1 2 1 11 8 0 1 1 5 18 0 42 2 3 0 0 0 1 3 0 11
0 0 8 71 3 0 7 0 0 8 69 2 0 0 32 0 33 3 0 0 75 0 0 1 2 0 0 32 0 1 1 0 0 0 37 1
0 0 0 1 2 0 11 0 7 1 2 0 0 0 8 61 2 0 0 0 29 62 1 1 24 0 38 3 0 0 8 0 18 1 3 0
0 0 0 18 23 1 0 82 0 1 2 0 11 18 0 1 1 1 77 0 1 1 0 18 0 68 1 5 8 0 1 2 0 81 78
0 1 2 0 0 0 8 1 2 0 11 78 0 1 3 6 0 0 72 72 1 3 6 0 0 8 8 1 2 6 0 0 73 1 2 6 0
0 74 1 2 0 11 0 0 1 2 1 11 8 0 1 1 0 72 0 1 1 0 11 0 12 0 0 0 10 2 0 0 0 0 1 2
0 0 0 19 21 2 0 8 0 18 52 3 0 8 0 18 8 1 2 0 0 0 18 1 2 0 0 0 19 1 2 1 7 8 0 1
2 0 7 78 0 1 3 0 0 0 0 18 65 1 0 0 0 17 1 2 76 0 1 1 0 0 72 1 1 0 0 58 66 2 0 0
0 0 16 2 0 0 0 8 1 2 0 0 8 0 1 1 1 25 0 27 1 0 0 8 1 2 0 11 78 0 1 2 3 11 0 0 1
2 3 11 0 0 1 2 1 11 0 0 14 2 3 11 0 0 1 2 3 11 0 0 15 1 0 7 0 13)))))) (QUOTE
|lookupComplete|)))
@
\section{domain STRING String}
+<<String.input>>=
+-- string.spad.pamphlet String.input
+)spool String.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 35
+hello := "Hello, I'm AXIOM!"
+--R
+--R
+--R (1) "Hello, I'm AXIOM!"
+--R Type:
String
+--E 1
+
+--S 2 of 35
+said := "Jane said, \_"Look!\_""
+--R
+--R
+--R (2) "Jane said, \"Look!\""
+--R Type:
String
+--E 2
+
+--S 3 of 35
+saw := "She saw exactly one underscore: \_\_."
+--R
+--R
+--R (3) "She saw exactly one underscore: \\."
+--R Type:
String
+--E 3
+
+--S 4 of 35
+gasp: String := new(32, char "x")
+--R
+--R
+--R (4) "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+--R Type:
String
+--E 4
+
+--S 5 of 35
+#gasp
+--R
+--R
+--R (5) 32
+--R Type:
PositiveInteger
+--E 5
+
+--S 6 of 35
+hello.2
+--R
+--R
+--R (6) e
+--R Type:
Character
+--E 6
+
+--S 7 of 35
+hello 2
+--R
+--R
+--R (7) e
+--R Type:
Character
+--E 7
+
+--S 8 of 35
+hello(2)
+--R
+--R
+--R (8) e
+--R Type:
Character
+--E 8
+
+--S 9 of 35
+hullo := copy hello
+--R
+--R
+--R (9) "Hello, I'm AXIOM!"
+--R Type:
String
+--E 9
+
+--S 10 of 35
+hullo.2 := char "u"; [hello, hullo]
+--R
+--R
+--R (10) ["Hello, I'm AXIOM!","Hullo, I'm AXIOM!"]
+--R Type: List
String
+--E 10
+
+--S 11 of 35
+saidsaw := concat ["alpha","---","omega"]
+--R
+--R
+--R (11) "alpha---omega"
+--R Type:
String
+--E 11
+
+--S 12 of 35
+concat("hello ","goodbye")
+--R
+--R
+--R (12) "hello goodbye"
+--R Type:
String
+--E 12
+
+--S 13 of 35
+"This " "is " "several " "strings " "concatenated."
+--R
+--R
+--R (13) "This is several strings concatenated."
+--R Type:
String
+--E 13
+
+--S 14 of 35
+hello(1..5)
+--R
+--R
+--R (14) "Hello"
+--R Type:
String
+--E 14
+
+--S 15 of 35
+hello(8..)
+--R
+--R
+--R (15) "I'm AXIOM!"
+--R Type:
String
+--E 15
+
+--S 16 of 35
+split(hello, char " ")
+--R
+--R
+--R (16) ["Hello,","I'm","AXIOM!"]
+--R Type: List
String
+--E 16
+
+--S 17 of 35
+other := complement alphanumeric();
+--R
+--R Type:
CharacterClass
+--E 17
+
+--S 18 of 35
+split(saidsaw, other)
+--R
+--R
+--R (18) ["alpha","omega"]
+--R Type: List
String
+--E 18
+
+--S 19 of 35
+trim("## ++ relax ++ ##", char "#")
+--R
+--R
+--R (19) " ++ relax ++ "
+--R Type:
String
+--E 19
+
+--S 20 of 35
+trim("## ++ relax ++ ##", other)
+--R
+--R
+--R (20) "relax"
+--R Type:
String
+--E 20
+
+--S 21 of 35
+leftTrim("## ++ relax ++ ##", other)
+--R
+--R
+--R (21) "relax ++ ##"
+--R Type:
String
+--E 21
+
+--S 22 of 35
+rightTrim("## ++ relax ++ ##", other)
+--R
+--R
+--R (22) "## ++ relax"
+--R Type:
String
+--E 22
+
+--S 23 of 35
+upperCase hello
+--R
+--R
+--R (23) "HELLO, I'M AXIOM!"
+--R Type:
String
+--E 23
+
+--S 24 of 35
+lowerCase hello
+--R
+--R
+--R (24) "hello, i'm axiom!"
+--R Type:
String
+--E 24
+
+--S 25 of 35
+prefix?("He", "Hello")
+--R
+--R
+--R (25) true
+--R Type:
Boolean
+--E 25
+
+--S 26 of 35
+prefix?("Her", "Hello")
+--R
+--R
+--R (26) false
+--R Type:
Boolean
+--E 26
+
+--S 27 of 35
+suffix?("", "Hello")
+--R
+--R
+--R (27) true
+--R Type:
Boolean
+--E 27
+
+--S 28 of 35
+suffix?("LO", "Hello")
+--R
+--R
+--R (28) false
+--R Type:
Boolean
+--E 28
+
+--S 29 of 35
+substring?("ll", "Hello", 3)
+--R
+--R
+--R (29) true
+--R Type:
Boolean
+--E 29
+
+--S 30 of 35
+substring?("ll", "Hello", 4)
+--R
+--R
+--R (30) false
+--R Type:
Boolean
+--E 30
+
+--S 31 of 35
+n := position("nd", "underground", 1)
+--R
+--R
+--R (31) 2
+--R Type:
PositiveInteger
+--E 31
+
+--S 32 of 35
+n := position("nd", "underground", n+1)
+--R
+--R
+--R (32) 10
+--R Type:
PositiveInteger
+--E 32
+
+--S 33 of 35
+n := position("nd", "underground", n+1)
+--R
+--R
+--R (33) 0
+--R Type:
NonNegativeInteger
+--E 33
+
+--S 34 of 35
+position(char "d", "underground", 1)
+--R
+--R
+--R (34) 3
+--R Type:
PositiveInteger
+--E 34
+
+--S 35 of 35
+position(hexDigit(), "underground", 1)
+--R
+--R
+--R (35) 3
+--R Type:
PositiveInteger
+--E 35
+)spool
+)lisp (bye)
+@
+<<String.help>>=
+====================================================================
+String examples
+====================================================================
+
+The type String provides character strings. Character strings
+provide all the operations for a one-dimensional array of characters,
+plus additional operations for manipulating text.
+
+String values can be created using double quotes.
+
+ hello := "Hello, I'm AXIOM!"
+ "Hello, I'm AXIOM!"
+ Type: String
+
+Note, however, that double quotes and underscores must be preceded by
+an extra underscore.
+
+ said := "Jane said, \_"Look!\_""
+ "Jane said, \"Look!\""
+ Type: String
+
+ saw := "She saw exactly one underscore: \_\_."
+ "She saw exactly one underscore: \\."
+ Type: String
+
+It is also possible to use new to create a string of any size filled
+with a given character. Since there are many new functions it is
+necessary to indicate the desired type.
+
+ gasp: String := new(32, char "x")
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ Type: String
+
+The length of a string is given by #.
+
+ #gasp
+ 32
+ Type: PositiveInteger
+
+Indexing operations allow characters to be extracted or replaced in strings.
+For any string s, indices lie in the range 1..#s.
+
+ hello.2
+ e
+ Type: Character
+
+Indexing is really just the application of a string to a subscript, so
+any application syntax works.
+
+ hello 2
+ e
+ Type: Character
+
+ hello(2)
+ e
+ Type: Character
+
+If it is important not to modify a given string, it should be copied
+before any updating operations are used.
+
+ hullo := copy hello
+ "Hello, I'm AXIOM!"
+ Type: String
+
+ hullo.2 := char "u"; [hello, hullo]
+ ["Hello, I'm AXIOM!","Hullo, I'm AXIOM!"]
+ Type: List String
+
+Operations are provided to split and join strings. The concat
+operation allows several strings to be joined together.
+
+ saidsaw := concat ["alpha","---","omega"]
+ "alpha---omega"
+ Type: String
+
+There is a version of concat that works with two strings.
+
+ concat("hello ","goodbye")
+ "hello goodbye"
+ Type: String
+
+Juxtaposition can also be used to concatenate strings.
+
+ "This " "is " "several " "strings " "concatenated."
+ "This is several strings concatenated."
+ Type: String
+
+Substrings are obtained by giving an index range.
+
+ hello(1..5)
+ "Hello"
+ Type: String
+
+ hello(8..)
+ "I'm AXIOM!"
+ Type: String
+
+A string can be split into several substrings by giving a separation
+character or character class.
+
+ split(hello, char " ")
+ ["Hello,","I'm","AXIOM!"]
+ Type: List String
+
+ other := complement alphanumeric();
+ Type: CharacterClass
+
+ split(saidsaw, other)
+ ["alpha","omega"]
+ Type: List String
+
+Unwanted characters can be trimmed from the beginning or end of a string
+using the operations trim, leftTrim and rightTrim.
+
+ trim("## ++ relax ++ ##", char "#")
+ " ++ relax ++ "
+ Type: String
+
+Each of these functions takes a string and a second argument to specify
+the characters to be discarded.
+
+ trim("## ++ relax ++ ##", other)
+ "relax"
+ Type: String
+
+The second argument can be given either as a single character or as a
+character class.
+
+ leftTrim("## ++ relax ++ ##", other)
+ "relax ++ ##"
+ Type: String
+
+ rightTrim("## ++ relax ++ ##", other)
+ "## ++ relax"
+ Type: String
+
+Strings can be changed to upper case or lower case using the
+operations upperCase and lowerCase.
+
+ upperCase hello
+ "HELLO, I'M AXIOM!"
+ Type: String
+
+The versions with the exclamation mark change the original string,
+while the others produce a copy.
+
+ lowerCase hello
+ "hello, i'm axiom!"
+ Type: String
+
+Some basic string matching is provided. The function prefix? tests
+whether one string is an initial prefix of another.
+
+ prefix?("He", "Hello")
+ true
+ Type: Boolean
+
+ prefix?("Her", "Hello")
+ false
+ Type: Boolean
+
+A similar function, suffix?, tests for suffixes.
+
+ suffix?("", "Hello")
+ true
+ Type: Boolean
+
+ suffix?("LO", "Hello")
+ false
+ Type: Boolean
+
+The function substring? tests for a substring given a starting position.
+
+ substring?("ll", "Hello", 3)
+ true
+ Type: Boolean
+
+ substring?("ll", "Hello", 4)
+ false
+ Type: Boolean
+
+A number of position functions locate things in strings. If the first
+argument to position is a string, then position(s,t,i) finds the
+location of s as a substring of t starting the search at position i.
+
+ n := position("nd", "underground", 1)
+ 2
+ Type: PositiveInteger
+
+ n := position("nd", "underground", n+1)
+ 10
+ Type: PositiveInteger
+
+If s is not found, then 0 is returned (minIndex(s)-1 in IndexedString).
+
+ n := position("nd", "underground", n+1)
+ 0
+ Type: NonNegativeInteger
+
+To search for a specific character or a member of a character class,
+a different first argument is used.
+
+ position(char "d", "underground", 1)
+ 3
+ Type: PositiveInteger
+
+ position(hexDigit(), "underground", 1)
+ 3
+ Type: PositiveInteger
+
+See Also:
+o )help Character
+o )help CharacterClass
+o )show String
+o $AXIOM/doc/src/algebra/string.spad.dvi
+
+@
<<domain STRING String>>=
)abbrev domain STRING String
++ Description:
diff --git a/src/algebra/symbol.spad.pamphlet b/src/algebra/symbol.spad.pamphlet
index 96382e7..69de307 100644
--- a/src/algebra/symbol.spad.pamphlet
+++ b/src/algebra/symbol.spad.pamphlet
@@ -10,6 +10,387 @@
\tableofcontents
\eject
\section{domain SYMBOL Symbol}
+<<Symbol.input>>=
+-- symbol.spad.pamphlet Symbol.input
+)spool Symbol.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 24
+X: Symbol := 'x
+--R
+--R
+--R (1) x
+--R Type:
Symbol
+--E 1
+
+--S 2 of 24
+XX: Symbol := x
+--R
+--R
+--R (2) x
+--R Type:
Symbol
+--E 2
+
+--S 3 of 24
+A := 'a
+--R
+--R
+--R (3) a
+--R Type: Variable
a
+--E 3
+
+--S 4 of 24
+B := b
+--R
+--R
+--R (4) b
+--R Type: Variable
b
+--E 4
+
+--S 5 of 24
+x**2 + 1
+--R
+--R
+--R 2
+--R (5) x + 1
+--R Type: Polynomial
Integer
+--E 5
+
+--S 6 of 24
+"Hello"::Symbol
+--R
+--R
+--R (6) Hello
+--R Type:
Symbol
+--E 6
+
+--S 7 of 24
+new()$Symbol
+--R
+--R
+--R (7) %A
+--R Type:
Symbol
+--E 7
+
+--S 8 of 24
+new()$Symbol
+--R
+--R
+--R (8) %B
+--R Type:
Symbol
+--E 8
+
+--S 9 of 24
+new("xyz")$Symbol
+--R
+--R
+--R (9) %xyz0
+--R Type:
Symbol
+--E 9
+
+--S 10 of 24
+X[i,j]
+--R
+--R
+--R (10) x
+--R i,j
+--R Type:
Symbol
+--E 10
+
+--S 11 of 24
+U := subscript(u, [1,2,1,2])
+--R
+--R
+--R (11) u
+--R 1,2,1,2
+--R Type:
Symbol
+--E 11
+
+--S 12 of 24
+V := superscript(v, [n])
+--R
+--R
+--R n
+--R (12) v
+--R Type:
Symbol
+--E 12
+
+--S 13 of 24
+P := argscript(p, [t])
+--R
+--R
+--R (13) p(t)
+--R Type:
Symbol
+--E 13
+
+--S 14 of 24
+scripted? U
+--R
+--R
+--R (14) true
+--R Type:
Boolean
+--E 14
+
+--S 15 of 24
+scripted? X
+--R
+--R
+--R (15) false
+--R Type:
Boolean
+--E 15
+
+--S 16 of 24
+string X
+--R
+--R
+--R (16) "x"
+--R Type:
String
+--E 16
+
+--S 17 of 24
+name U
+--R
+--R
+--R (17) u
+--R Type:
Symbol
+--E 17
+
+--S 18 of 24
+scripts U
+--R
+--R
+--R (18) [sub= [1,2,1,2],sup= [],presup= [],presub= [],args= []]
+--RType: Record(sub: List OutputForm,sup: List OutputForm,presup: List
OutputForm,presub: List OutputForm,args: List OutputForm)
+--E 18
+
+--S 19 of 24
+name X
+--R
+--R
+--R (19) x
+--R Type:
Symbol
+--E 19
+
+--S 20 of 24
+scripts X
+--R
+--R
+--R (20) [sub= [],sup= [],presup= [],presub= [],args= []]
+--RType: Record(sub: List OutputForm,sup: List OutputForm,presup: List
OutputForm,presub: List OutputForm,args: List OutputForm)
+--E 20
+
+--S 21 of 24
+M := script(Mammoth, [ [i,j],[k,l],[0,1],[2],[u,v,w] ])
+--R
+--R
+--R 0,1 k,l
+--R (21) Mammoth (u,v,w)
+--R 2 i,j
+--R Type:
Symbol
+--E 21
+
+--S 22 of 24
+scripts M
+--R
+--R
+--R (22) [sub= [i,j],sup= [k,l],presup= [0,1],presub= [2],args= [u,v,w]]
+--RType: Record(sub: List OutputForm,sup: List OutputForm,presup: List
OutputForm,presub: List OutputForm,args: List OutputForm)
+--E 22
+
+--S 23 of 24
+N := script(Nut, [ [i,j],[k,l],[0,1] ])
+--R
+--R
+--R 0,1 k,l
+--R (23) Nut
+--R i,j
+--R Type:
Symbol
+--E 23
+
+--S 24 of 24
+scripts N
+--R
+--R
+--R (24) [sub= [i,j],sup= [k,l],presup= [0,1],presub= [],args= []]
+--RType: Record(sub: List OutputForm,sup: List OutputForm,presup: List
OutputForm,presub: List OutputForm,args: List OutputForm)
+--E 24
+)spool
+)lisp (bye)
+@
+<<Symbol.help>>=
+====================================================================
+Symbol examples
+====================================================================
+
+Symbols are one of the basic types manipulated by Axiom. The
+Symbol domain provides ways to create symbols of many varieties.
+
+The simplest way to create a symbol is to "single quote" an identifier.
+
+ X: Symbol := 'x
+ x
+ Type: Symbol
+
+This gives the symbol even if x has been assigned a value. If x has
+not been assigned a value, then it is possible to omit the quote.
+
+ XX: Symbol := x
+ x
+ Type: Symbol
+
+Declarations must be used when working with symbols, because otherwise
+the interpreter tries to place values in a more specialized type Variable.
+
+ A := 'a
+ a
+ Type: Variable a
+
+ B := b
+ b
+ Type: Variable b
+
+The normal way of entering polynomials uses this fact.
+
+ x**2 + 1
+ 2
+ x + 1
+ Type: Polynomial Integer
+
+Another convenient way to create symbols is to convert a string.
+This is useful when the name is to be constructed by a program.
+
+ "Hello"::Symbol
+ Hello
+ Type: Symbol
+
+Sometimes it is necessary to generate new unique symbols, for example,
+to name constants of integration. The expression new() generates a
+symbol starting with %.
+
+ new()$Symbol
+ %A
+ Type: Symbol
+
+Successive calls to new produce different symbols.
+
+ new()$Symbol
+ %B
+ Type: Symbol
+
+The expression new("s") produces a symbol starting with %s.
+
+ new("xyz")$Symbol
+ %xyz0
+ Type: Symbol
+
+A symbol can be adorned in various ways. The most basic thing is
+applying a symbol to a list of subscripts.
+
+ X[i,j]
+ x
+ i,j
+ Type: Symbol
+
+Somewhat less pretty is to attach subscripts, superscripts or arguments.
+
+ U := subscript(u, [1,2,1,2])
+ u
+ 1,2,1,2
+ Type: Symbol
+
+ V := superscript(v, [n])
+ n
+ v
+ Type: Symbol
+
+ P := argscript(p, [t])
+ p(t)
+ Type: Symbol
+
+It is possible to test whether a symbol has scripts using the scripted? test.
+
+ scripted? U
+ true
+ Type: Boolean
+
+ scripted? X
+ false
+ Type: Boolean
+
+If a symbol is not scripted, then it may be converted to a string.
+
+ string X
+ "x"
+ Type: String
+
+The basic parts can always be extracted using the name and scripts operations.
+
+ name U
+ u
+ Type: Symbol
+
+ scripts U
+ [sub= [1,2,1,2],sup= [],presup= [],presub= [],args= []]
+ Type: Record(sub: List OutputForm,
+ sup: List OutputForm,
+ presup: List OutputForm,
+ presub: List OutputForm,
+ args: List OutputForm)
+
+ name X
+ x
+ Type: Symbol
+
+ scripts X
+ [sub= [],sup= [],presup= [],presub= [],args= []]
+ Type: Record(sub: List OutputForm,
+ sup: List OutputForm,
+ presup: List OutputForm,
+ presub: List OutputForm,
+ args: List OutputForm)
+
+The most general form is obtained using the script operation. This
+operation takes an argument which is a list containing, in this order,
+lists of subscripts, superscripts, presuperscripts, presubscripts and
+arguments to a symbol.
+
+ M := script(Mammoth, [ [i,j],[k,l],[0,1],[2],[u,v,w] ])
+ 0,1 k,l
+ Mammoth (u,v,w)
+ 2 i,j
+ Type: Symbol
+
+ scripts M
+ [sub= [i,j],sup= [k,l],presup= [0,1],presub= [2],args= [u,v,w]]
+ Type: Record(sub: List OutputForm,
+ sup: List OutputForm,
+ presup: List OutputForm,
+ presub: List OutputForm,
+ args: List OutputForm)
+
+If trailing lists of scripts are omitted, they are assumed to be empty.
+
+ N := script(Nut, [ [i,j],[k,l],[0,1] ])
+ 0,1 k,l
+ Nut
+ i,j
+ Type: Symbol
+
+ scripts N
+ [sub= [i,j],sup= [k,l],presup= [0,1],presub= [],args= []]
+ Type: Record(sub: List OutputForm,
+ sup: List OutputForm,
+ presup: List OutputForm,
+ presub: List OutputForm,
+ args: List OutputForm)
+
+
+See Also:
+o )show Symbol
+o $AXIOM/doc/src/algebra/symbol.spad.dvi
+
+@
<<domain SYMBOL Symbol>>=
)abbrev domain SYMBOL Symbol
++ Author: Stephen Watt
diff --git a/src/algebra/table.spad.pamphlet b/src/algebra/table.spad.pamphlet
index 11a0c2c..651950a 100644
--- a/src/algebra/table.spad.pamphlet
+++ b/src/algebra/table.spad.pamphlet
@@ -86,6 +86,307 @@ InnerTable(Key: SetCategory, Entry: SetCategory,
addDom):Exports == Implementati
@
\section{domain TABLE Table}
+<<Table.input>>=
+-- table.spad.pamphlet Table.input
+)spool Table.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 18
+t: Table(Polynomial Integer, String) := table()
+--R
+--R
+--R (1) table()
+--R Type: Table(Polynomial
Integer,String)
+--E 1
+
+--S 2 of 18
+setelt(t, x**2 - 1, "Easy to factor")
+--R
+--R
+--R (2) "Easy to factor"
+--R Type:
String
+--E 2
+
+--S 3 of 18
+t(x**3 + 1) := "Harder to factor"
+--R
+--R
+--R (3) "Harder to factor"
+--R Type:
String
+--E 3
+
+--S 4 of 18
+t(x) := "The easiest to factor"
+--R
+--R
+--R (4) "The easiest to factor"
+--R Type:
String
+--E 4
+
+--S 5 of 18
+elt(t, x)
+--R
+--R
+--R (5) "The easiest to factor"
+--R Type:
String
+--E 5
+
+--S 6 of 18
+t.x
+--R
+--R
+--R (6) "The easiest to factor"
+--R Type:
String
+--E 6
+
+--S 7 of 18
+t x
+--R
+--R
+--R (7) "The easiest to factor"
+--R Type:
String
+--E 7
+
+--S 8 of 18
+t.(x**2 - 1)
+--R
+--R
+--R (8) "Easy to factor"
+--R Type:
String
+--E 8
+
+--S 9 of 18
+t (x**3 + 1)
+--R
+--R
+--R (9) "Harder to factor"
+--R Type:
String
+--E 9
+
+--S 10 of 18
+keys t
+--R
+--R
+--R 3 2
+--R (10) [x,x + 1,x - 1]
+--R Type: List Polynomial
Integer
+--E 10
+
+--S 11 of 18
+search(x, t)
+--R
+--R
+--R (11) "The easiest to factor"
+--R Type:
Union(String,...)
+--E 11
+
+--S 12 of 18
+search(x**2, t)
+--R
+--R
+--R (12) "failed"
+--R Type:
Union("failed",...)
+--E 12
+
+--S 13 of 18
+search(x**2, t) case "failed"
+--R
+--R
+--R (13) true
+--R Type:
Boolean
+--E 13
+
+--S 14 of 18
+remove!(x**2-1, t)
+--R
+--R
+--R (14) "Easy to factor"
+--R Type:
Union(String,...)
+--E 14
+
+--S 15 of 18
+remove!(x-1, t)
+--R
+--R
+--R (15) "failed"
+--R Type:
Union("failed",...)
+--E 15
+
+--S 16 of 18
+#t
+--R
+--R
+--R (16) 2
+--R Type:
PositiveInteger
+--E 16
+
+--S 17 of 18
+members t
+--R
+--R
+--R (17) ["The easiest to factor","Harder to factor"]
+--R Type: List
String
+--E 17
+
+--S 18 of 18
+count(s: String +-> prefix?("Hard", s), t)
+--R
+--R
+--R (18) 1
+--R Type:
PositiveInteger
+--E 18
+)spool
+)lisp (bye)
+@
+<<Table.help>>=
+====================================================================
+Table examples
+====================================================================
+
+The Table constructor provides a general structure for associative
+storage. This type provides hash tables in which data objects can be
+saved according to keys of any type. For a given table, specific
+types must be chosen for the keys and entries.
+
+In this example the keys to the table are polynomials with integer
+coefficients. The entries in the table are strings.
+
+ t: Table(Polynomial Integer, String) := table()
+ table()
+ Type: Table(Polynomial Integer,String)
+
+To save an entry in the table, the setelt operation is used. This can
+be called directly, giving the table a key and an entry.
+
+ setelt(t, x**2 - 1, "Easy to factor")
+ "Easy to factor"
+ Type: String
+
+Alternatively, you can use assignment syntax.
+
+ t(x**3 + 1) := "Harder to factor"
+ "Harder to factor"
+ Type: String
+
+ t(x) := "The easiest to factor"
+ "The easiest to factor"
+ Type: String
+
+Entries are retrieved from the table by calling the elt operation.
+
+ elt(t, x)
+ "The easiest to factor"
+ Type: String
+
+This operation is called when a table is "applied" to a key using this
+or the following syntax.
+
+ t.x
+ "The easiest to factor"
+ Type: String
+
+ t x
+ "The easiest to factor"
+ Type: String
+
+Parentheses are used only for grouping. They are needed if the key is
+an infixed expression.
+
+ t.(x**2 - 1)
+ "Easy to factor"
+ Type: String
+
+Note that the elt operation is used only when the key is known to be
+in the table, otherwise an error is generated.
+
+ t (x**3 + 1)
+ "Harder to factor"
+ Type: String
+
+You can get a list of all the keys to a table using the keys operation.
+
+ keys t
+ 3 2
+ [x,x + 1,x - 1]
+ Type: List Polynomial Integer
+
+If you wish to test whether a key is in a table, the search operation
+is used. This operation returns either an entry or "failed".
+
+ search(x, t)
+ "The easiest to factor"
+ Type: Union(String,...)
+
+ search(x**2, t)
+ "failed"
+ Type: Union("failed",...)
+
+The return type is a union so the success of the search can be tested
+using case.
+
+ search(x**2, t) case "failed"
+ true
+ Type: Boolean
+
+The remove operation is used to delete values from a table.
+
+ remove!(x**2-1, t)
+ "Easy to factor"
+ Type: Union(String,...)
+
+If an entry exists under the key, then it is returned. Otherwise
+remove returns "failed".
+
+ remove!(x-1, t)
+ "failed"
+ Type: Union("failed",...)
+
+The number of key-entry pairs can be found using the # operation.
+
+ #t
+ 2
+ Type: PositiveInteger
+
+Just as keys returns a list of keys to the table, a list of all the
+entries can be obtained using the members operation.
+
+ members t
+ (17) ["The easiest to factor","Harder to factor"]
+ Type: List String
+
+A number of useful operations take functions and map them on to the
+table to compute the result. Here we count the entries which have
+"Hard" as a prefix.
+
+ count(s: String +-> prefix?("Hard", s), t)
+ 1
+ Type: PositiveInteger
+
+Other table types are provided to support various needs.
+ o AssociationList gives a list with a table view. This allows new
+ entries to be appended onto the front of the list to cover up old
+ entries. This is useful when table entries need to be stacked or when
+ frequent list traversals are required.
+ o EqTable gives tables in which keys are considered equal only when
+ they are in fact the same instance of a structure.
+ o StringTable should be used when the keys are known to be strings.
+ o SparseTable provides tables with default entries, so lookup never fails.
+ The GeneralSparseTable constructor can be used to make any table type
+ behave this way.
+ o KeyedAccessFile allows values to be saved in a file, accessed as a table.
+
+See Also:
+o )help AssociationList
+o )help EqTable
+o )help StringTable
+o )help SparseTable
+o )help GeneralSparseTable
+o )help KeyedAccessFile
+o )show Table
+o $AXIOM/doc/src/algebra/table.spad.dvi
+
+@
<<domain TABLE Table>>=
)abbrev domain TABLE Table
++ Author: Stephen M. Watt, Barry Trager
@@ -239,6 +540,78 @@ EqTable(Key: SetCategory, Entry: SetCategory) ==
@
\section{domain STRTBL StringTable}
+<<StringTable.input>>=
+-- table.spad.pamphlet StringTable.input
+)spool StringTable.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 3
+t: StringTable(Integer) := table()
+--R
+--R
+--R (1) table()
+--R Type: StringTable
Integer
+--E 1
+
+--S 2 of 3
+for s in split("My name is Ian Watt.",char " ")
+ repeat
+ t.s := #s
+--R
+--R Type:
Void
+--E 2
+
+--S 3 of 3
+for key in keys t repeat output [key, t.key]
+--R
+--R ["Watt.",5]
+--R ["Ian",3]
+--R ["is",2]
+--R ["name",4]
+--R ["My",2]
+--R Type:
Void
+--E 3
+)spool
+)lisp (bye)
+@
+<<StringTable.help>>=
+====================================================================
+StringTable examples
+====================================================================
+
+This domain provides a table type in which the keys are known to be strings
+so special techniques can be used. Other than performance, the type
+StringTable(S) should behave exactly the same way as Table(String,S).
+
+This creates a new table whose keys are strings.
+
+ t: StringTable(Integer) := table()
+ table()
+ Type: StringTable Integer
+
+The value associated with each string key is the number of characters
+in the string.
+
+for s in split("My name is Ian Watt.",char " ")
+ repeat
+ t.s := #s
+ Type: Void
+
+ for key in keys t repeat output [key, t.key]
+ ["Watt.",5]
+ ["Ian",3]
+ ["is",2]
+ ["name",4]
+ ["My",2]
+ Type: Void
+
+See Also:
+o )help Table
+o )show StringTable
+o $AXIOM/doc/src/algebra/table.spad.dvi
+
+@
<<domain STRTBL StringTable>>=
)abbrev domain STRTBL StringTable
++ Author: Stephen M. Watt
@@ -380,6 +753,128 @@ GeneralSparseTable(Key, Entry, Tbl, dent):
TableAggregate(Key, Entry) == Impl
@
\section{domain STBL SparseTable}
+<<SparseTable.input>>=
+-- table.spad.pamphlet SparseTable.input
+)spool SparseTable.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 7
+t: SparseTable(Integer, String, "Try again!") := table()
+--R
+--R
+--R (1) table()
+--R Type: SparseTable(Integer,String,Try
again!)
+--E 1
+
+--S 2 of 7
+t.3 := "Number three"
+--R
+--R
+--R (2) "Number three"
+--R Type:
String
+--E 2
+
+--S 3 of 7
+t.4 := "Number four"
+--R
+--R
+--R (3) "Number four"
+--R Type:
String
+--E 3
+
+--S 4 of 7
+t.3
+--R
+--R
+--R (4) "Number three"
+--R Type:
String
+--E 4
+
+--S 5 of 7
+t.2
+--R
+--R
+--R (5) "Try again!"
+--R Type:
String
+--E 5
+
+--S 6 of 7
+keys t
+--R
+--R
+--R (6) [4,3]
+--R Type: List
Integer
+--E 6
+
+--S 7 of 7
+entries t
+--R
+--R
+--R (7) ["Number four","Number three"]
+--R Type: List
String
+--E 7
+)spool
+)lisp (bye)
+@
+<<SparseTable.help>>=
+====================================================================
+SparseTable examples
+====================================================================
+
+The SparseTable domain provides a general purpose table type with
+default entries.
+
+Here we create a table to save strings under integer keys. The value
+"Try again!" is returned if no other value has been stored for a key.
+
+ t: SparseTable(Integer, String, "Try again!") := table()
+ table()
+ Type: SparseTable(Integer,String,Try again!)
+
+Entries can be stored in the table.
+
+ t.3 := "Number three"
+ "Number three"
+ Type: String
+
+ t.4 := "Number four"
+ "Number four"
+ Type: String
+
+These values can be retrieved as usual, but if a look up fails the
+default entry will be returned.
+
+ t.3
+ "Number three"
+ Type: String
+
+ t.2
+ "Try again!"
+ Type: String
+
+To see which values are explicitly stored, the keys and entries
+functions can be used.
+
+ keys t
+ [4,3]
+ Type: List Integer
+
+ entries t
+ ["Number four","Number three"]
+ Type: List String
+
+If a specific table representation is required, the GeneralSparseTable
+constructor should be used. The domain SparseTable(K, E, dflt)} is
+equivalent to GeneralSparseTable(K,E,Table(K,E), dflt).
+
+See Also:
+o )help Table
+o )help GeneralSparseTable
+o )show SparseTable
+o $AXIOM/doc/src/algebra/table.spad.dvi
+
+@
<<domain STBL SparseTable>>=
)abbrev domain STBL SparseTable
++ Author: Stephen M. Watt
diff --git a/src/algebra/triset.spad.pamphlet b/src/algebra/triset.spad.pamphlet
index 2832762..7d51c02 100644
--- a/src/algebra/triset.spad.pamphlet
+++ b/src/algebra/triset.spad.pamphlet
@@ -1448,6 +1448,316 @@ PolynomialSetUtilitiesPackage (R,E,V,P) : Exports ==
Implementation where
@
\section{domain WUTSET WuWenTsunTriangularSet}
+<<WuWenTsunTriangularSet.input>>=
+-- triset.spad.pamphlet WuWenTsunTriangularSet.input
+)spool WuWenTsunTriangularSet.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 16
+R := Integer
+--R
+--R
+--R (1) Integer
+--R Type:
Domain
+--E 1
+
+--S 2 of 16
+ls : List Symbol := [x,y,z,t]
+--R
+--R
+--R (2) [x,y,z,t]
+--R Type: List
Symbol
+--E 2
+
+--S 3 of 16
+V := OVAR(ls)
+--R
+--R
+--R (3) OrderedVariableList [x,y,z,t]
+--R Type:
Domain
+--E 3
+
+--S 4 of 16
+E := IndexedExponents V
+--R
+--R
+--R (4) IndexedExponents OrderedVariableList [x,y,z,t]
+--R Type:
Domain
+--E 4
+
+--S 5 of 16
+P := NSMP(R, V)
+--R
+--R
+--R (5) NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--R Type:
Domain
+--E 5
+
+--S 6 of 16
+x: P := 'x
+--R
+--R
+--R (6) x
+--R Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 6
+
+--S 7 of 16
+y: P := 'y
+--R
+--R
+--R (7) y
+--R Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 7
+
+--S 8 of 16
+z: P := 'z
+--R
+--R
+--R (8) z
+--R Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 8
+
+--S 9 of 16
+t: P := 't
+--R
+--R
+--R (9) t
+--R Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 9
+
+--S 10 of 16
+T := WUTSET(R,E,V,P)
+--R
+--R
+--R (10)
+--R WuWenTsunTriangularSet(Integer,IndexedExponents OrderedVariableList
[x,y,z,t]
+--R ,OrderedVariableList
[x,y,z,t],NewSparseMultivariatePolynomial(Integer,Ordere
+--R dVariableList [x,y,z,t]))
+--R Type:
Domain
+--E 10
+
+--S 11 of 16
+p1 := x ** 31 - x ** 6 - x - y
+--R
+--R
+--R 31 6
+--R (11) x - x - x - y
+--R Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 11
+
+--S 12 of 16
+p2 := x ** 8 - z
+--R
+--R
+--R 8
+--R (12) x - z
+--R Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 12
+
+--S 13 of 16
+p3 := x ** 10 - t
+--R
+--R
+--R 10
+--R (13) x - t
+--R Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 13
+
+--S 14 of 16
+lp := [p1, p2, p3]
+--R
+--R
+--R 31 6 8 10
+--R (14) [x - x - x - y,x - z,x - t]
+--RType: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])
+--E 14
+
+--S 15 of 16
+characteristicSet(lp)$T
+--R
+--R
+--R (15)
+--R 5 4 4 2 2 3 4 7 4 6 6 3 3 3
3
+--R {z - t ,t z y + 2t z y + (- t + 2t - t)z + t z,(t - 1)z x - z y -
t }
+--RType: Union(WuWenTsunTriangularSet(Integer,IndexedExponents
OrderedVariableList [x,y,z,t],OrderedVariableList
[x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t])),...)
+--E 15
+
+--S 16 of 16
+zeroSetSplit(lp)$T
+--R
+--R
+--R (16)
+--R 3 5 4 3 3 2
+--R [{t,z,y,x}, {t - 1,z - t ,z y + t ,z x - t},
+--R 5 4 4 2 2 3 4 7 4 6 6 3 3 3
3
+--R {z - t ,t z y + 2t z y + (- t + 2t - t)z + t z,(t - 1)z x - z y -
t }]
+--RType: List WuWenTsunTriangularSet(Integer,IndexedExponents
OrderedVariableList [x,y,z,t],OrderedVariableList
[x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList
[x,y,z,t]))
+--E 16
+)spool
+)lisp (bye)
+@
+<<WuWenTsunTriangularSet.help>>=
+====================================================================
+WuWenTsunTriangularSet examples
+====================================================================
+
+The WuWenTsunTriangularSet domain constructor implements the
+characteristic set method of Wu Wen Tsun. This algorithm computes a
+list of triangular sets from a list of polynomials such that the
+algebraic variety defined by the given list of polynomials decomposes
+into the union of the regular-zero sets of the computed triangular
+sets. The constructor takes four arguments. The first one, R, is the
+coefficient ring of the polynomials; it must belong to the category
+IntegralDomain. The second one, E, is the exponent monoid of the
+polynomials; it must belong to the category OrderedAbelianMonoidSup.
+The third one, V, is the ordered set of variables; it must belong to
+the category OrderedSet. The last one is the polynomial ring; it must
+belong to the category RecursivePolynomialCategory(R,E,V). The
+abbreviation for WuWenTsunTriangularSet is WUTSET.
+
+Let us illustrate the facilities by an example.
+
+Define the coefficient ring.
+
+ R := Integer
+ Integer
+ Type: Domain
+
+Define the list of variables,
+
+ ls : List Symbol := [x,y,z,t]
+ [x,y,z,t]
+ Type: List Symbol
+
+and make it an ordered set;
+
+ V := OVAR(ls)
+ OrderedVariableList [x,y,z,t]
+ Type: Domain
+
+then define the exponent monoid.
+
+ E := IndexedExponents V
+ IndexedExponents OrderedVariableList [x,y,z,t]
+ Type: Domain
+
+Define the polynomial ring.
+
+ P := NSMP(R, V)
+ NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+ Type: Domain
+
+Let the variables be polynomial.
+
+ x: P := 'x
+ x
+ Type: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+ y: P := 'y
+ y
+ Type: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+ z: P := 'z
+ z
+ Type: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+ t: P := 't
+ t
+ Type: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+Now call the WuWenTsunTriangularSet domain constructor.
+
+ T := WUTSET(R,E,V,P)
+ WuWenTsunTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t]
+ ,OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,Ordere
+ dVariableList [x,y,z,t]))
+ Type: Domain
+
+Define a polynomial system.
+
+ p1 := x ** 31 - x ** 6 - x - y
+ 31 6
+ x - x - x - y
+ Type: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+ p2 := x ** 8 - z
+ 8
+ x - z
+ Type: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+ p3 := x ** 10 - t
+ 10
+ x - t
+ Type: NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+ lp := [p1, p2, p3]
+ 31 6 8 10
+ [x - x - x - y,x - z,x - t]
+ Type: List NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])
+
+Compute a characteristic set of the system.
+
+ characteristicSet(lp)$T
+ 5 4 4 2 2 3 4 7 4 6 6 3 3 3 3
+ {z - t ,t z y + 2t z y + (- t + 2t - t)z + t z,(t - 1)z x - z y - t }
+ Type: Union(WuWenTsunTriangularSet(Integer,
+ IndexedExponents OrderedVariableList [x,y,z,t],
+ OrderedVariableList [x,y,z,t],
+ NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t])),...)
+
+Solve the system.
+
+ zeroSetSplit(lp)$T
+ 3 5 4 3 3 2
+ [{t,z,y,x}, {t - 1,z - t ,z y + t ,z x - t},
+ 5 4 4 2 2 3 4 7 4 6 6 3 3 3 3
+ {z - t ,t z y + 2t z y + (- t + 2t - t)z + t z,(t - 1)z x - z y - t }]
+ Type: List WuWenTsunTriangularSet(Integer,
+ IndexedExponents OrderedVariableList [x,y,z,t],
+ OrderedVariableList [x,y,z,t],
+ NewSparseMultivariatePolynomial(Integer,
+ OrderedVariableList [x,y,z,t]))
+
+The RegularTriangularSet and SquareFreeRegularTriangularSet domain
+constructors, the LazardSetSolvingPackage package constructors as well as,
+SquareFreeRegularTriangularSet and ZeroDimensionalSolvePackage package
+constructors also provide operations to compute triangular decompositions
+of algebraic varieties. These five constructor use a special kind of
+characteristic sets, called regular triangular sets. These special
+characteristic sets have better properties than the general ones.
+Regular triangular sets and their related concepts are presented in
+the paper "On the Theories of Triangular sets" By P. Aubry, D. Lazard
+and M. Moreno Maza (to appear in the Journal of Symbolic Computation).
+The decomposition algorithm (due to the third author) available in the
+four above constructors provide generally better timings than the
+characteristic set method. In fact, the WUTSET constructor
+remains interesting for the purpose of manipulating characteristic
+sets whereas the other constructors are more convenient for solving
+polynomial systems.
+
+Note that the way of understanding triangular decompositions is detailed
+in the example of the RegularTriangularSet constructor.
+
+See Also:
+o )help RecursivePolynomialCategory
+o )help RegularTriangularSet
+o )help SquareFreeRegularTriangularSet
+o )help LazardSetSolvingPackage
+o )help ZeroDimensionalSolvePackage
+o )show WuWenTsunTriangularSet
+o $AXIOM/doc/src/algebra/triset.spad.dvi
+
+@
<<domain WUTSET WuWenTsunTriangularSet>>=
)abbrev domain WUTSET WuWenTsunTriangularSet
++ Author: Marc Moreno Maza (address@hidden)
diff --git a/src/algebra/vector.spad.pamphlet b/src/algebra/vector.spad.pamphlet
index 0406479..9656917 100644
--- a/src/algebra/vector.spad.pamphlet
+++ b/src/algebra/vector.spad.pamphlet
@@ -124,6 +124,200 @@ IndexedVector(R:Type, mn:Integer):
@
\section{domain VECTOR Vector}
+<<Vector.input>>=
+-- vector.spad.pamphlet Vector.input
+)spool Vector.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 11
+u : VECTOR INT := new(5,12)
+--R
+--R
+--R (1) [12,12,12,12,12]
+--R Type: Vector
Integer
+--E 1
+
+--S 2 of 11
+v : VECTOR INT := vector([1,2,3,4,5])
+--R
+--R
+--R (2) [1,2,3,4,5]
+--R Type: Vector
Integer
+--E 2
+
+--S 3 of 11
+#(v)
+--R
+--R
+--R (3) 5
+--R Type:
PositiveInteger
+--E 3
+
+--S 4 of 11
+v.2
+--R
+--R
+--R (4) 2
+--R Type:
PositiveInteger
+--E 4
+
+--S 5 of 11
+v.3 := 99
+--R
+--R
+--R (5) 99
+--R Type:
PositiveInteger
+--E 5
+
+--S 6 of 11
+v
+--R
+--R
+--R (6) [1,2,99,4,5]
+--R Type: Vector
Integer
+--E 6
+
+--S 7 of 11
+5 * v
+--R
+--R
+--R (7) [5,10,495,20,25]
+--R Type: Vector
Integer
+--E 7
+
+--S 8 of 11
+v * 7
+--R
+--R
+--R (8) [7,14,693,28,35]
+--R Type: Vector
Integer
+--E 8
+
+--S 9 of 11
+w : VECTOR INT := vector([2,3,4,5,6])
+--R
+--R
+--R (9) [2,3,4,5,6]
+--R Type: Vector
Integer
+--E 9
+
+--S 10 of 11
+v + w
+--R
+--R
+--R (10) [3,5,103,9,11]
+--R Type: Vector
Integer
+--E 10
+
+--S 11 of 11
+v - w
+--R
+--R
+--R (11) [- 1,- 1,95,- 1,- 1]
+--R Type: Vector
Integer
+--E 11
+)spool
+)lisp (bye)
+@
+<<Vector.help>>=
+====================================================================
+Vector examples
+====================================================================
+
+The Vector domain is used for storing data in a one-dimensional
+indexed data structure. A vector is a homogeneous data structure in
+that all the components of the vector must belong to the same Axiom
+domain. Each vector has a fixed length specified by the user; vectors
+are not extensible. This domain is similar to the OneDimensionalArray
+domain, except that when the components of a Vector belong to a Ring,
+arithmetic operations are provided.
+
+As with the OneDimensionalArray domain, a Vector can be created by
+calling the operation new, its components can be accessed by calling
+the operations elt and qelt, and its components can be reset by
+calling the operations setelt and qsetelt.
+
+This creates a vector of integers of length 5 all of whose components are 12.
+
+ u : VECTOR INT := new(5,12)
+ [12,12,12,12,12]
+ Type: Vector Integer
+
+This is how you create a vector from a list of its components.
+
+ v : VECTOR INT := vector([1,2,3,4,5])
+ [1,2,3,4,5]
+ Type: Vector Integer
+
+Indexing for vectors begins at 1. The last element has index equal to
+the length of the vector, which is computed by #.
+
+ #(v)
+ 5
+ Type: PositiveInteger
+
+This is the standard way to use elt to extract an element.
+Functionally, it is the same as if you had typed elt(v,2).
+
+ v.2
+ 2
+ Type: PositiveInteger
+
+This is the standard way to use setelt to change an element. It is
+the same as if you had typed setelt(v,3,99).
+
+ v.3 := 99
+ 99
+ Type: PositiveInteger
+
+Now look at v to see the change. You can use qelt and qsetelt
+(instead of elt and setelt, respectively) but only when you know that
+the index is within the valid range.
+
+ v
+ [1,2,99,4,5]
+ Type: Vector Integer
+
+When the components belong to a Ring, Axiom provides arithmetic
+operations for Vector. These include left and right scalar multiplication.
+
+ 5 * v
+ [5,10,495,20,25]
+ Type: Vector Integer
+
+ v * 7
+ [7,14,693,28,35]
+ Type: Vector Integer
+
+ w : VECTOR INT := vector([2,3,4,5,6])
+ [2,3,4,5,6]
+ Type: Vector Integer
+
+Addition and subtraction are also available.
+
+ v + w
+ [3,5,103,9,11]
+ Type: Vector Integer
+
+Of course, when adding or subtracting, the two vectors must have the same
+length or an error message is displayed.
+
+ v - w
+ [- 1,- 1,95,- 1,- 1]
+ Type: Vector Integer
+
+See Also:
+o )help List
+o )help Matrix
+o )help OneDimensionalArray
+o )help Set
+o )help Table
+o )help TwoDimensionalArray
+o )show Vector
+o $AXIOM/doc/src/algebra/vector.spad.dvi
+
+@
<<domain VECTOR Vector>>=
)abbrev domain VECTOR Vector
++ Author:
diff --git a/src/algebra/void.spad.pamphlet b/src/algebra/void.spad.pamphlet
index 314b9a4..200d924 100644
--- a/src/algebra/void.spad.pamphlet
+++ b/src/algebra/void.spad.pamphlet
@@ -10,6 +10,101 @@
\tableofcontents
\eject
\section{domain VOID Void}
+<<Void.input>>=
+-- void.spad.pamphlet Void.input
+)spool Void.output
+)set message test on
+)set message auto off
+)clear all
+--S 1
+r := (a; b; if c then d else e; f)
+--R
+--R
+--RDaly Bug
+--R An expression following if/when must evaluate to a Boolean and you
+--R have written one that does not.
+--E 1
+
+--S 2
+a : Integer
+--R
+--R Type:
Void
+--E 2
+
+)set message void on
+
+--S 3
+b : Fraction Integer
+--R
+--R
+--R (2) "()"
+--R Type:
Void
+--E 3
+
+)set message void off
+
+--S 4
+3::Void
+--R
+--R Type:
Void
+--E 4
+
+--S 5
+% :: PositiveInteger
+--R
+--R
+--RDaly Bug
+--R Cannot convert from type Void to PositiveInteger for value
+--R "()"
+--R
+--E 5
+)spool
+)lisp (bye)
+@
+<<Void.help>>=
+====================================================================
+Void examples
+====================================================================
+
+When an expression is not in a value context, it is given type Void.
+For example, in the expression
+
+ r := (a; b; if c then d else e; f)
+
+values are used only from the subexpressions c and f: all others are thrown
+away. The subexpressions a, b, d and e are evaluated for side-effects only
+and have type Void. There is a unique value of type Void.
+
+You will most often see results of type Void when you declare a variable.
+
+ a : Integer
+ Type: Void
+
+Usually no output is displayed for Void results. You can force the
+display of a rather ugly object by issuing
+
+ )set message void on
+
+ b : Fraction Integer
+ Type: Void
+
+ )set message void off
+
+All values can be converted to type Void.
+
+ 3::Void
+ Type: Void
+
+Once a value has been converted to Void, it cannot be recovered.
+
+ % :: PositiveInteger
+ Cannot convert from type Void to PositiveInteger for value "()"
+
+See Also:
+o )show Void
+o $AXIOM/doc/src/algebra/void.spad.dvi
+
+@
<<domain VOID Void>>=
)abbrev domain VOID Void
-- These types act as the top and bottom of the type lattice
diff --git a/src/algebra/xlpoly.spad.pamphlet b/src/algebra/xlpoly.spad.pamphlet
index 8faf7cb..44358c0 100644
--- a/src/algebra/xlpoly.spad.pamphlet
+++ b/src/algebra/xlpoly.spad.pamphlet
@@ -1827,6 +1827,844 @@ PoincareBirkhoffWittLyndonBasis(VarSet: OrderedSet):
Public == Private where
@
\section{domain XPBWPOLY XPBWPolynomial}
+<<XPBWPolynomial.input>>=
+-- xlpoly.spad.pamphlet XPBWPolynomial.input
+)spool XPBWPolynomial.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 39
+a:Symbol := 'a
+--R
+--R
+--R (1) a
+--R Type:
Symbol
+--E 1
+
+--S 2 of 39
+b:Symbol := 'b
+--R
+--R
+--R (2) b
+--R Type:
Symbol
+--E 2
+
+--S 3 of 39
+RN := Fraction(Integer)
+--R
+--R
+--R (3) Fraction Integer
+--R Type:
Domain
+--E 3
+
+--S 4 of 39
+word := OrderedFreeMonoid Symbol
+--R
+--R
+--R (4) OrderedFreeMonoid Symbol
+--R Type:
Domain
+--E 4
+
+--S 5 of 39
+lword := LyndonWord(Symbol)
+--R
+--R
+--R (5) LyndonWord Symbol
+--R Type:
Domain
+--E 5
+
+--S 6 of 39
+base := PoincareBirkhoffWittLyndonBasis Symbol
+--R
+--R
+--R (6) PoincareBirkhoffWittLyndonBasis Symbol
+--R Type:
Domain
+--E 6
+
+--S 7 of 39
+dpoly := XDistributedPolynomial(Symbol, RN)
+--R
+--R
+--R (7) XDistributedPolynomial(Symbol,Fraction Integer)
+--R Type:
Domain
+--E 7
+
+--S 8 of 39
+rpoly := XRecursivePolynomial(Symbol, RN)
+--R
+--R
+--R (8) XRecursivePolynomial(Symbol,Fraction Integer)
+--R Type:
Domain
+--E 8
+
+--S 9 of 39
+lpoly := LiePolynomial(Symbol, RN)
+--R
+--R
+--R (9) LiePolynomial(Symbol,Fraction Integer)
+--R Type:
Domain
+--E 9
+
+--S 10 of 39
+poly := XPBWPolynomial(Symbol, RN)
+--R
+--R
+--R (10) XPBWPolynomial(Symbol,Fraction Integer)
+--R Type:
Domain
+--E 10
+
+--S 11 of 39
+liste : List lword := LyndonWordsList([a,b], 6)
+--R
+--R
+--R (11)
+--R 2 2 3 2 2 3 4 3 2
+--R [[a], [b], [a b], [a b], [a b ], [a b], [a b ], [a b ], [a b], [a b ],
+--R 2 2 3 2 4 5 4 2 3 3 3
+--R [a b a b], [a b ], [a b a b ], [a b ], [a b], [a b ], [a b a b], [a b ],
+--R 2 2 2 2 2 4 3 5
+--R [a b a b ], [a b a b], [a b ], [a b a b ], [a b ]]
+--R Type: List LyndonWord
Symbol
+--E 11
+
+--S 12 of 39
+0$poly
+--R
+--R
+--R (12) 0
+--R Type: XPBWPolynomial(Symbol,Fraction
Integer)
+--E 12
+
+--S 13 of 39
+1$poly
+--R
+--R
+--R (13) 1
+--R Type: XPBWPolynomial(Symbol,Fraction
Integer)
+--E 13
+
+--S 14 of 39
+p : poly := a
+--R
+--R
+--R (14) [a]
+--R Type: XPBWPolynomial(Symbol,Fraction
Integer)
+--E 14
+
+--S 15 of 39
+q : poly := b
+--R
+--R
+--R (15) [b]
+--R Type: XPBWPolynomial(Symbol,Fraction
Integer)
+--E 15
+
+--S 16 of 39
+pq: poly := p*q
+--R
+--R
+--R (16) [a b] + [b][a]
+--R Type: XPBWPolynomial(Symbol,Fraction
Integer)
+--E 16
+
+--S 17 of 39
+pq :: dpoly
+--R
+--R
+--R (17) a b
+--R Type: XDistributedPolynomial(Symbol,Fraction
Integer)
+--E 17
+
+--S 18 of 39
+mirror pq
+--R
+--R
+--R (18) [b][a]
+--R Type: XPBWPolynomial(Symbol,Fraction
Integer)
+--E 18
+
+--S 19 of 39
+ListOfTerms pq
+--R
+--R
+--R (19) [[k= [b][a],c= 1],[k= [a b],c= 1]]
+--RType: List Record(k: PoincareBirkhoffWittLyndonBasis Symbol,c: Fraction
Integer)
+--E 19
+
+--S 20 of 39
+reductum pq
+--R
+--R
+--R (20) [a b]
+--R Type: XPBWPolynomial(Symbol,Fraction
Integer)
+--E 20
+
+--S 21 of 39
+leadingMonomial pq
+--R
+--R
+--R (21) [b][a]
+--R Type: PoincareBirkhoffWittLyndonBasis
Symbol
+--E 21
+
+--S 22 of 39
+coefficients pq
+--R
+--R
+--R (22) [1,1]
+--R Type: List Fraction
Integer
+--E 22
+
+--S 23 of 39
+leadingTerm pq
+--R
+--R
+--R (23) [k= [b][a],c= 1]
+--R Type: Record(k: PoincareBirkhoffWittLyndonBasis Symbol,c: Fraction
Integer)
+--E 23
+
+--S 24 of 39
+degree pq
+--R
+--R
+--R (24) 2
+--R Type:
PositiveInteger
+--E 24
+
+--S 25 of 39
+pq4:=exp(pq,4)
+--R
+--R
+--R (25)
+--R 1 1 2 1 2
+--R 1 + [a b] + [b][a] + - [a b][a b] + - [a b ][a] + - [b][a b]
+--R 2 2 2
+--R +
+--R 3 1
+--R - [b][a b][a] + - [b][b][a][a]
+--R 2 2
+--R Type: XPBWPolynomial(Symbol,Fraction
Integer)
+--E 25
+
+--S 26 of 39
+log(pq4,4) - pq
+--R
+--R
+--R (26) 0
+--R Type: XPBWPolynomial(Symbol,Fraction
Integer)
+--E 26
+
+--S 27 of 39
+lp1 :lpoly := LiePoly liste.10
+--R
+--R
+--R 3 2
+--R (27) [a b ]
+--R Type: LiePolynomial(Symbol,Fraction
Integer)
+--E 27
+
+--S 28 of 39
+lp2 :lpoly := LiePoly liste.11
+--R
+--R
+--R 2
+--R (28) [a b a b]
+--R Type: LiePolynomial(Symbol,Fraction
Integer)
+--E 28
+
+--S 29 of 39
+lp :lpoly := [lp1, lp2]
+--R
+--R
+--R 3 2 2
+--R (29) [a b a b a b]
+--R Type: LiePolynomial(Symbol,Fraction
Integer)
+--E 29
+
+--S 30 of 39
+lpd1: dpoly := lp1
+--R
+--R
+--R 3 2 2 2 2 2 2 2 2 3
+--R (30) a b - 2a b a b - a b a + 4a b a b a - a b a - 2b a b a + b a
+--R Type: XDistributedPolynomial(Symbol,Fraction
Integer)
+--E 30
+
+--S 31 of 39
+lpd2: dpoly := lp2
+--R
+--R
+--R (31)
+--R 2 2 2 2 2 2 3 2
+--R a b a b - a b a - 3a b a b + 4a b a b a - a b a + 2b a b - 3b a b a
+--R +
+--R 2
+--R b a b a
+--R Type: XDistributedPolynomial(Symbol,Fraction
Integer)
+--E 31
+
+--S 32 of 39
+lpd : dpoly := lpd1 * lpd2 - lpd2 * lpd1
+--R
+--R
+--R (32)
+--R 3 2 2 3 2 2 2 3 2 2 3 2 3 2 2 2
+--R a b a b a b - a b a b a - 3a b a b a b + 4a b a b a b a - a b a b a
+--R +
+--R 3 3 3 3 3 2 3 3 2 2 3 2 2 2 2
+--R 2a b a b - 3a b a b a + a b a b a - a b a b a b + 3a b a b a b a
+--R +
+--R 2 2 2 2 2 2 2 2 3
+--R 6a b a b a b a b - 12a b a b a b a b a + 3a b a b a b a - 4a b a b a b
+--R +
+--R 2 2 2 2 3 3 2 2 4 2 2 2 3 2 2 2 2
+--R 6a b a b a b a - a b a b a + a b a b - 3a b a b a b + 3a b a b a b
+--R +
+--R 2 2 3 2 2 2 2 2 2 2 2 2 3
+--R - 2a b a b a b + 3a b a b a b a - 3a b a b a b a + a b a b a
+--R +
+--R 2 3 2 2 2 2 2 2 2
+--R 3a b a b a b - 6a b a b a b a b - 3a b a b a b a + 12a b a b a b a b a
+--R +
+--R 2 2 2 2 2 2 2 3 3 4 2
+--R - 3a b a b a b a - 6a b a b a b a + 3a b a b a - 4a b a b a b
+--R +
+--R 3 2 2 3
+--R 12a b a b a b a b - 12a b a b a b a b + 8a b a b a b a b
+--R +
+--R 2 2 2 3 2
5 2
+--R - 12a b a b a b a b a + 12a b a b a b a b a - 4a b a b a b a + a b a
b
+--R +
+--R 2 4 2 3 2 2 2 3 2 2 2
+--R - 3a b a b a b + 3a b a b a b - 2a b a b a b + 3a b a b a b a
+--R +
+--R 2 2 2 2 2 2 3 3 3 2 3 2
+--R - 3a b a b a b a + a b a b a - 2b a b a b + 4b a b a b a b
+--R +
+--R 3 2 2 3 3 2 2 3 2 2
3 3 3
+--R 2b a b a b a - 8b a b a b a b a + 2b a b a b a + 4b a b a b a - 2b a
b a
+--R +
+--R 2 4 2 2 3 2 3 2 2 2
+--R 3b a b a b - 6b a b a b a b - 3b a b a b a + 12b a b a b a b a
+--R +
+--R 2 2 2 2 2 2 2 2 3 5 2
+--R - 3b a b a b a - 6b a b a b a b a + 3b a b a b a - b a b a b
+--R +
+--R 4 2 3 2 3 3 2 2
+--R 3b a b a b a + 6b a b a b a b - 12b a b a b a b a + 3b a b a b a
+--R +
+--R 2 3 2 2 2 2 3 2 5 2 5 2
+--R - 4b a b a b a b + 6b a b a b a b a - b a b a b a + b a b a b - b a b
a
+--R +
+--R 2 4 2 2 4 2 4 2 2 2 3 3 2 3 2
+--R - 3b a b a b + 4b a b a b a - b a b a + 2b a b a b - 3b a b a b a
+--R +
+--R 2 3 2
+--R b a b a b a
+--R Type: XDistributedPolynomial(Symbol,Fraction
Integer)
+--E 32
+
+--S 33 of 39
+lp :: dpoly - lpd
+--R
+--R
+--R (33) 0
+--R Type: XDistributedPolynomial(Symbol,Fraction
Integer)
+--E 33
+
+--S 34 of 39
+p := 3 * lp
+--R
+--R
+--R 3 2 2
+--R (34) 3[a b a b a b]
+--R Type: XPBWPolynomial(Symbol,Fraction
Integer)
+--E 34
+
+--S 35 of 39
+q := lp1
+--R
+--R
+--R 3 2
+--R (35) [a b ]
+--R Type: XPBWPolynomial(Symbol,Fraction
Integer)
+--E 35
+
+--S 36 of 39
+pq:= p * q
+--R
+--R
+--R 3 2 2 3 2
+--R (36) 3[a b a b a b][a b ]
+--R Type: XPBWPolynomial(Symbol,Fraction
Integer)
+--E 36
+
+--S 37 of 39
+pr:rpoly := p :: rpoly
+--R
+--R
+--R (37)
+--R a
+--R *
+--R a
+--R *
+--R a b b
+--R *
+--R a(a b(a b 3 + b a(- 3)) + b(a(a b(- 9) + b a 12) + b a a(-
3)))
+--R +
+--R b a(a(a b 6 + b a(- 9)) + b a a 3)
+--R +
+--R b
+--R *
+--R a b
+--R *
+--R a
+--R *
+--R a(a b b(- 3) + b b a 9)
+--R +
+--R b(a(a b 18 + b a(- 36)) + b a a 9)
+--R +
+--R b(a a(a b(- 12) + b a 18) + b a a a(- 3))
+--R +
+--R b a
+--R *
+--R a(a(a b b 3 + b a b(- 9)) + b a a b 9)
+--R +
+--R b(a(a(a b(- 6) + b a 9) + b a a(- 9)) + b a a a 3)
+--R +
+--R b
+--R *
+--R a
+--R *
+--R a b
+--R *
+--R a
+--R *
+--R a(a b b 9 + b(a b(- 18) + b a(- 9)))
+--R +
+--R b(a b a 36 + b a a(- 9))
+--R +
+--R b(a b a a(- 18) + b a a a 9)
+--R +
+--R b a
+--R *
+--R a(a(a b b(- 12) + b a b 36) + b a a b(- 36))
+--R +
+--R b(a(a(a b 24 + b a(- 36)) + b a a 36) + b a a a(- 12))
+--R +
+--R b a a
+--R *
+--R a(a(a b b 3 + b a b(- 9)) + b a a b 9)
+--R +
+--R b(a(a(a b(- 6) + b a 9) + b a a(- 9)) + b a a a 3)
+--R +
+--R b
+--R *
+--R a
+--R *
+--R a
+--R *
+--R a b
+--R *
+--R a
+--R *
+--R a(a b b(- 6) + b(a b 12 + b a 6))
+--R +
+--R b(a b a(- 24) + b a a 6)
+--R +
+--R b(a b a a 12 + b a a a(- 6))
+--R +
+--R b a
+--R *
+--R a
+--R *
+--R a(a b b 9 + b(a b(- 18) + b a(- 9)))
+--R +
+--R b(a b a 36 + b a a(- 9))
+--R +
+--R b(a b a a(- 18) + b a a a 9)
+--R +
+--R b a a
+--R *
+--R a(a(a b b(- 3) + b b a 9) + b(a(a b 18 + b a(- 36)) + b a
a 9))
+--R +
+--R b(a a(a b(- 12) + b a 18) + b a a a(- 3))
+--R +
+--R b a a a
+--R *
+--R a(a b(a b 3 + b a(- 3)) + b(a(a b(- 9) + b a 12) + b a a(- 3)))
+--R +
+--R b a(a(a b 6 + b a(- 9)) + b a a 3)
+--R Type: XRecursivePolynomial(Symbol,Fraction
Integer)
+--E 37
+
+--S 38 of 39
+qr:rpoly := q :: rpoly
+--R
+--R
+--R (38)
+--R a(a(a b b 1 + b(a b(- 2) + b a(- 1))) + b(a b a 4 + b a a(- 1)))
+--R +
+--R b(a b a a(- 2) + b a a a 1)
+--R Type: XRecursivePolynomial(Symbol,Fraction
Integer)
+--E 38
+
+--S 39 of 39
+pq :: rpoly - pr*qr
+--R
+--R
+--R (39) 0
+--R Type: XRecursivePolynomial(Symbol,Fraction
Integer)
+--E 39
+)spool
+)lisp (bye)
+@
+<<XPBWPolynomial.help>>=
+====================================================================
+XPBWPolynomial examples
+====================================================================
+
+Initialisations
+
+ a:Symbol := 'a
+ a
+ Type: Symbol
+
+ b:Symbol := 'b
+ b
+ Type: Symbol
+
+ RN := Fraction(Integer)
+ Fraction Integer
+ Type: Domain
+
+ word := OrderedFreeMonoid Symbol
+ OrderedFreeMonoid Symbol
+ Type: Domain
+
+ lword := LyndonWord(Symbol)
+ LyndonWord Symbol
+ Type: Domain
+
+ base := PoincareBirkhoffWittLyndonBasis Symbol
+ PoincareBirkhoffWittLyndonBasis Symbol
+ Type: Domain
+
+ dpoly := XDistributedPolynomial(Symbol, RN)
+ XDistributedPolynomial(Symbol,Fraction Integer)
+ Type: Domain
+
+ rpoly := XRecursivePolynomial(Symbol, RN)
+ XRecursivePolynomial(Symbol,Fraction Integer)
+ Type: Domain
+
+ lpoly := LiePolynomial(Symbol, RN)
+ LiePolynomial(Symbol,Fraction Integer)
+ Type: Domain
+
+ poly := XPBWPolynomial(Symbol, RN)
+ XPBWPolynomial(Symbol,Fraction Integer)
+ Type: Domain
+
+ liste : List lword := LyndonWordsList([a,b], 6)
+ 2 2 3 2 2 3 4 3 2
+ [[a], [b], [a b], [a b], [a b ], [a b], [a b ], [a b ], [a b], [a b ],
+ 2 2 3 2 4 5 4 2 3 3 3
+ [a b a b], [a b ], [a b a b ], [a b ], [a b], [a b ], [a b a b], [a b ],
+ 2 2 2 2 2 4 3 5
+ [a b a b ], [a b a b], [a b ], [a b a b ], [a b ]]
+ Type: List LyndonWord Symbol
+
+Let's make some polynomials
+
+ 0$poly
+ 0
+ Type: XPBWPolynomial(Symbol,Fraction Integer)
+
+ 1$poly
+ 1
+ Type: XPBWPolynomial(Symbol,Fraction Integer)
+
+ p : poly := a
+ [a]
+ Type: XPBWPolynomial(Symbol,Fraction Integer)
+
+ q : poly := b
+ [b]
+ Type: XPBWPolynomial(Symbol,Fraction Integer)
+
+ pq: poly := p*q
+ [a b] + [b][a]
+ Type: XPBWPolynomial(Symbol,Fraction Integer)
+
+Coerce to distributed polynomial
+
+ pq :: dpoly
+ a b
+ Type: XDistributedPolynomial(Symbol,Fraction Integer)
+
+Check some polynomial operations
+
+ mirror pq
+ [b][a]
+ Type: XPBWPolynomial(Symbol,Fraction Integer)
+
+ ListOfTerms pq
+ [[k= [b][a],c= 1],[k= [a b],c= 1]]
+ Type: List Record(k: PoincareBirkhoffWittLyndonBasis Symbol,
+ c: Fraction Integer)
+
+ reductum pq
+ [a b]
+ Type: XPBWPolynomial(Symbol,Fraction Integer)
+
+ leadingMonomial pq
+ [b][a]
+ Type: PoincareBirkhoffWittLyndonBasis Symbol
+
+ coefficients pq
+ [1,1]
+ Type: List Fraction Integer
+
+ leadingTerm pq
+ [k= [b][a],c= 1]
+ Type: Record(k: PoincareBirkhoffWittLyndonBasis Symbol,
+ c: Fraction Integer)
+
+ degree pq
+ 2
+ Type: PositiveInteger
+
+ pq4:=exp(pq,4)
+ 1 1 2 1 2
+ 1 + [a b] + [b][a] + - [a b][a b] + - [a b ][a] + - [b][a b]
+ 2 2 2
+ +
+ 3 1
+ - [b][a b][a] + - [b][b][a][a]
+ 2 2
+ Type: XPBWPolynomial(Symbol,Fraction Integer)
+
+ log(pq4,4) - pq
+ (26) 0
+ Type: XPBWPolynomial(Symbol,Fraction Integer)
+
+Calculations with verification in XDistributedPolynomial.
+
+ lp1 :lpoly := LiePoly liste.10
+ 3 2
+ [a b ]
+ Type: LiePolynomial(Symbol,Fraction Integer)
+
+ lp2 :lpoly := LiePoly liste.11
+ 2
+ [a b a b]
+ Type: LiePolynomial(Symbol,Fraction Integer)
+
+ lp :lpoly := [lp1, lp2]
+ 3 2 2
+ [a b a b a b]
+ Type: LiePolynomial(Symbol,Fraction Integer)
+
+ lpd1: dpoly := lp1
+ 3 2 2 2 2 2 2 2 2 3
+ a b - 2a b a b - a b a + 4a b a b a - a b a - 2b a b a + b a
+ Type: XDistributedPolynomial(Symbol,Fraction Integer)
+
+ lpd2: dpoly := lp2
+ 2 2 2 2 2 2 3 2
+ a b a b - a b a - 3a b a b + 4a b a b a - a b a + 2b a b - 3b a b a
+ +
+ 2
+ b a b a
+ Type: XDistributedPolynomial(Symbol,Fraction Integer)
+
+ lpd : dpoly := lpd1 * lpd2 - lpd2 * lpd1
+ 3 2 2 3 2 2 2 3 2 2 3 2 3 2 2 2
+ a b a b a b - a b a b a - 3a b a b a b + 4a b a b a b a - a b a b a
+ +
+ 3 3 3 3 3 2 3 3 2 2 3 2 2 2 2
+ 2a b a b - 3a b a b a + a b a b a - a b a b a b + 3a b a b a b a
+ +
+ 2 2 2 2 2 2 2 2 3
+ 6a b a b a b a b - 12a b a b a b a b a + 3a b a b a b a - 4a b a b a b
+ +
+ 2 2 2 2 3 3 2 2 4 2 2 2 3 2 2 2 2
+ 6a b a b a b a - a b a b a + a b a b - 3a b a b a b + 3a b a b a b
+ +
+ 2 2 3 2 2 2 2 2 2 2 2 2 3
+ - 2a b a b a b + 3a b a b a b a - 3a b a b a b a + a b a b a
+ +
+ 2 3 2 2 2 2 2 2 2
+ 3a b a b a b - 6a b a b a b a b - 3a b a b a b a + 12a b a b a b a b a
+ +
+ 2 2 2 2 2 2 2 3 3 4 2
+ - 3a b a b a b a - 6a b a b a b a + 3a b a b a - 4a b a b a b
+ +
+ 3 2 2 3
+ 12a b a b a b a b - 12a b a b a b a b + 8a b a b a b a b
+ +
+ 2 2 2 3 2 5 2
+ - 12a b a b a b a b a + 12a b a b a b a b a - 4a b a b a b a + a b a b
+ +
+ 2 4 2 3 2 2 2 3 2 2 2
+ - 3a b a b a b + 3a b a b a b - 2a b a b a b + 3a b a b a b a
+ +
+ 2 2 2 2 2 2 3 3 3 2 3 2
+ - 3a b a b a b a + a b a b a - 2b a b a b + 4b a b a b a b
+ +
+ 3 2 2 3 3 2 2 3 2 2 3 3
3
+ 2b a b a b a - 8b a b a b a b a + 2b a b a b a + 4b a b a b a - 2b a b a
+ +
+ 2 4 2 2 3 2 3 2 2 2
+ 3b a b a b - 6b a b a b a b - 3b a b a b a + 12b a b a b a b a
+ +
+ 2 2 2 2 2 2 2 2 3 5 2
+ - 3b a b a b a - 6b a b a b a b a + 3b a b a b a - b a b a b
+ +
+ 4 2 3 2 3 3 2 2
+ 3b a b a b a + 6b a b a b a b - 12b a b a b a b a + 3b a b a b a
+ +
+ 2 3 2 2 2 2 3 2 5 2 5 2
+ - 4b a b a b a b + 6b a b a b a b a - b a b a b a + b a b a b - b a b a
+ +
+ 2 4 2 2 4 2 4 2 2 2 3 3 2 3 2
+ - 3b a b a b + 4b a b a b a - b a b a + 2b a b a b - 3b a b a b a
+ +
+ 2 3 2
+ b a b a b a
+ Type: XDistributedPolynomial(Symbol,Fraction Integer)
+
+ lp :: dpoly - lpd
+ 0
+ Type: XDistributedPolynomial(Symbol,Fraction Integer)
+
+Calculations with verification in XRecursivePolynomial.
+
+ p := 3 * lp
+ 3 2 2
+ 3[a b a b a b]
+ Type: XPBWPolynomial(Symbol,Fraction Integer)
+
+ q := lp1
+ 3 2
+ [a b ]
+ Type: XPBWPolynomial(Symbol,Fraction Integer)
+
+ pq:= p * q
+ 3 2 2 3 2
+ 3[a b a b a b][a b ]
+ Type: XPBWPolynomial(Symbol,Fraction Integer)
+
+ pr:rpoly := p :: rpoly
+ a
+ *
+ a
+ *
+ a b b
+ *
+ a(a b(a b 3 + b a(- 3)) + b(a(a b(- 9) + b a 12) + b a a(- 3)))
+ +
+ b a(a(a b 6 + b a(- 9)) + b a a 3)
+ +
+ b
+ *
+ a b
+ *
+ a
+ *
+ a(a b b(- 3) + b b a 9)
+ +
+ b(a(a b 18 + b a(- 36)) + b a a 9)
+ +
+ b(a a(a b(- 12) + b a 18) + b a a a(- 3))
+ +
+ b a
+ *
+ a(a(a b b 3 + b a b(- 9)) + b a a b 9)
+ +
+ b(a(a(a b(- 6) + b a 9) + b a a(- 9)) + b a a a 3)
+ +
+ b
+ *
+ a
+ *
+ a b
+ *
+ a
+ *
+ a(a b b 9 + b(a b(- 18) + b a(- 9)))
+ +
+ b(a b a 36 + b a a(- 9))
+ +
+ b(a b a a(- 18) + b a a a 9)
+ +
+ b a
+ *
+ a(a(a b b(- 12) + b a b 36) + b a a b(- 36))
+ +
+ b(a(a(a b 24 + b a(- 36)) + b a a 36) + b a a a(- 12))
+ +
+ b a a
+ *
+ a(a(a b b 3 + b a b(- 9)) + b a a b 9)
+ +
+ b(a(a(a b(- 6) + b a 9) + b a a(- 9)) + b a a a 3)
+ +
+ b
+ *
+ a
+ *
+ a
+ *
+ a b
+ *
+ a
+ *
+ a(a b b(- 6) + b(a b 12 + b a 6))
+ +
+ b(a b a(- 24) + b a a 6)
+ +
+ b(a b a a 12 + b a a a(- 6))
+ +
+ b a
+ *
+ a
+ *
+ a(a b b 9 + b(a b(- 18) + b a(- 9)))
+ +
+ b(a b a 36 + b a a(- 9))
+ +
+ b(a b a a(- 18) + b a a a 9)
+ +
+ b a a
+ *
+ a(a(a b b(- 3) + b b a 9) + b(a(a b 18 + b a(- 36)) + b a a 9))
+ +
+ b(a a(a b(- 12) + b a 18) + b a a a(- 3))
+ +
+ b a a a
+ *
+ a(a b(a b 3 + b a(- 3)) + b(a(a b(- 9) + b a 12) + b a a(- 3)))
+ +
+ b a(a(a b 6 + b a(- 9)) + b a a 3)
+ Type: XRecursivePolynomial(Symbol,Fraction Integer)
+
+ qr:rpoly := q :: rpoly
+ a(a(a b b 1 + b(a b(- 2) + b a(- 1))) + b(a b a 4 + b a a(- 1)))
+ +
+ b(a b a a(- 2) + b a a a 1)
+ Type: XRecursivePolynomial(Symbol,Fraction Integer)
+
+ pq :: rpoly - pr*qr
+ 0
+ Type: XRecursivePolynomial(Symbol,Fraction Integer)
+
+See Also:
+o )show XPBWPolynomial
+o $AXIOM/doc/src/algebra/xlpoly.spad.dvi
+
+@
<<domain XPBWPOLY XPBWPolynomial>>=
)abbrev domain XPBWPOLY XPBWPolynomial
++ Author: Michel Petitot (address@hidden).
diff --git a/src/algebra/xpoly.spad.pamphlet b/src/algebra/xpoly.spad.pamphlet
index 6ff416b..218c93f 100644
--- a/src/algebra/xpoly.spad.pamphlet
+++ b/src/algebra/xpoly.spad.pamphlet
@@ -486,6 +486,389 @@ XPolynomialsCat(vl:OrderedSet,R:Ring):Category == Export
where
@
\section{domain XPR XPolynomialRing}
+<<XPolynomialRing.input>>=
+-- xpoly.spad.pamphlet XPolynomialRing.input
+)spool XPolynomialRing.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 15
+Word := OrderedFreeMonoid(Symbol)
+--R
+--R
+--R (1) OrderedFreeMonoid Symbol
+--R Type:
Domain
+--E 1
+
+--S 2 of 15
+poly:= XPR(Integer,Word)
+--R
+--R
+--R (2) XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+--R Type:
Domain
+--E 2
+
+--S 3 of 15
+p:poly := 2 * x - 3 * y + 1
+--R
+--R
+--R (3) 1 + 2x - 3y
+--R Type: XPolynomialRing(Integer,OrderedFreeMonoid
Symbol)
+--E 3
+
+--S 4 of 15
+q:poly := 2 * x + 1
+--R
+--R
+--R (4) 1 + 2x
+--R Type: XPolynomialRing(Integer,OrderedFreeMonoid
Symbol)
+--E 4
+
+--S 5 of 15
+p + q
+--R
+--R
+--R (5) 2 + 4x - 3y
+--R Type: XPolynomialRing(Integer,OrderedFreeMonoid
Symbol)
+--E 5
+
+--S 6 of 15
+p * q
+--R
+--R
+--R 2
+--R (6) 1 + 4x - 3y + 4x - 6y x
+--R Type: XPolynomialRing(Integer,OrderedFreeMonoid
Symbol)
+--E 6
+
+--S 7 of 15
+(p+q)**2-p**2-q**2-2*p*q
+--R
+--R
+--R (7) - 6x y + 6y x
+--R Type: XPolynomialRing(Integer,OrderedFreeMonoid
Symbol)
+--E 7
+
+--S 8 of 15
+M := SquareMatrix(2,Fraction Integer)
+--R
+--R
+--R (8) SquareMatrix(2,Fraction Integer)
+--R Type:
Domain
+--E 8
+
+--S 9 of 15
+poly1:= XPR(M,Word)
+--R
+--R
+--R (9)
+--R XPolynomialRing(SquareMatrix(2,Fraction Integer),OrderedFreeMonoid
Symbol)
+--R Type:
Domain
+--E 9
+
+--S 10 of 15
+m1:M := matrix [ [i*j**2 for i in 1..2] for j in 1..2]
+--R
+--R
+--R +1 2+
+--R (10) | |
+--R +4 8+
+--R Type: SquareMatrix(2,Fraction
Integer)
+--E 10
+
+--S 11 of 15
+m2:M := m1 - 5/4
+--R
+--R
+--R + 1 +
+--R |- - 2 |
+--R | 4 |
+--R (11) | |
+--R | 27|
+--R | 4 --|
+--R + 4+
+--R Type: SquareMatrix(2,Fraction
Integer)
+--E 11
+
+--S 12 of 15
+m3: M := m2**2
+--R
+--R
+--R +129 +
+--R |--- 13 |
+--R | 16 |
+--R (12) | |
+--R | 857|
+--R |26 ---|
+--R + 16+
+--R Type: SquareMatrix(2,Fraction
Integer)
+--E 12
+
+--S 13 of 15
+pm:poly1 := m1*x + m2*y + m3*z - 2/3
+--R
+--R
+--R + 2 + + 1 + +129 +
+--R |- - 0 | |- - 2 | |--- 13 |
+--R | 3 | +1 2+ | 4 | | 16 |
+--R (13) | | + | |x + | |y + | |z
+--R | 2| +4 8+ | 27| | 857|
+--R | 0 - -| | 4 --| |26 ---|
+--R + 3+ + 4+ + 16+
+--RType: XPolynomialRing(SquareMatrix(2,Fraction Integer),OrderedFreeMonoid
Symbol)
+--E 13
+
+--S 14 of 15
+qm:poly1 := pm - m1*x
+--R
+--R
+--R + 2 + + 1 + +129 +
+--R |- - 0 | |- - 2 | |--- 13 |
+--R | 3 | | 4 | | 16 |
+--R (14) | | + | |y + | |z
+--R | 2| | 27| | 857|
+--R | 0 - -| | 4 --| |26 ---|
+--R + 3+ + 4+ + 16+
+--RType: XPolynomialRing(SquareMatrix(2,Fraction Integer),OrderedFreeMonoid
Symbol)
+--E 14
+
+--S 15 of 15
+qm**3
+--R
+--R
+--R (15)
+--R + 8 + + 1 8+ +43 52 + + 129 +
+--R |- -- 0 | |- - -| |-- -- | |- --- - 26 |
+--R | 27 | | 3 3| | 4 3 | | 8 | 2
+--R | | + | |y + | |z + | |y
+--R | 8| |16 | |104 857| | 857|
+--R | 0 - --| |-- 9| |--- ---| |- 52 - ---|
+--R + 27+ + 3 + + 3 12+ + 8 +
+--R +
+--R + 3199 831 + + 3199 831 + + 103169 6409 +
+--R |- ---- - --- | |- ---- - --- | |- ------ - ---- |
+--R | 32 4 | | 32 4 | | 128 4 | 2
+--R | |y z + | |z y + | |z
+--R | 831 26467| | 831 26467| | 6409 820977|
+--R |- --- - -----| |- --- - -----| | - ---- - ------|
+--R + 2 32 + + 2 32 + + 2 128 +
+--R +
+--R +3199 831 + +103169 6409 + +103169 6409 +
+--R |---- --- | |------ ---- | |------ ---- |
+--R | 64 8 | 3 | 256 8 | 2 | 256 8 |
+--R | |y + | |y z + | |y z y
+--R |831 26467| | 6409 820977| | 6409 820977|
+--R |--- -----| | ---- ------| | ---- ------|
+--R + 4 64 + + 4 256 + + 4 256 +
+--R +
+--R +3178239 795341 + +103169 6409 + +3178239 795341 +
+--R |------- ------ | |------ ---- | |------- ------ |
+--R | 1024 128 | 2 | 256 8 | 2 | 1024 128 |
+--R | |y z + | |z y + | |z
y z
+--R |795341 25447787| | 6409 820977| |795341 25447787|
+--R |------ --------| | ---- ------| |------ --------|
+--R + 64 1024 + + 4 256 + + 64 1024 +
+--R +
+--R +3178239 795341 + +98625409 12326223 +
+--R |------- ------ | |-------- -------- |
+--R | 1024 128 | 2 | 4096 256 | 3
+--R | |z y + | |z
+--R |795341 25447787| |12326223 788893897|
+--R |------ --------| |-------- ---------|
+--R + 64 1024 + + 128 4096 +
+--RType: XPolynomialRing(SquareMatrix(2,Fraction Integer),OrderedFreeMonoid
Symbol)
+--E 15
+)spool
+)lisp (bye)
+@
+<<XPolynomialRing.help>>=
+====================================================================
+XPolynomialRing examples
+====================================================================
+
+The XPolynomialRing domain constructor implements generalized
+polynomials with coefficients from an arbitrary Ring (not necessarily
+commutative) and whose exponents are words from an arbitrary
+OrderedMonoid (not necessarily commutative too). Thus these
+polynomials are (finite) linear combinations of words.
+
+This constructor takes two arguments. The first one is a Ring and the
+second is an OrderedMonoid. The abbreviation for XPolynomialRing is XPR.
+
+Other constructors like XPolynomial, XRecursivePolynomial,
+XDistributedPolynomial, LiePolynomial and XPBWPolynomial implement
+multivariate polynomials in non-commutative variables.
+
+We illustrate now some of the facilities of the XPR domain constructor.
+
+Define the free ordered monoid generated by the symbols.
+
+ Word := OrderedFreeMonoid(Symbol)
+ OrderedFreeMonoid Symbol
+ Type: Domain
+
+Define the linear combinations of these words with integer coefficients.
+
+ poly:= XPR(Integer,Word)
+ XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+ Type: Domain
+
+Then we define a first element from poly.
+
+ p:poly := 2 * x - 3 * y + 1
+ 1 + 2x - 3y
+ Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+
+And a second one.
+
+ q:poly := 2 * x + 1
+ 1 + 2x
+ Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+
+We compute their sum,
+
+ p + q
+ 2 + 4x - 3y
+ Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+
+their product,
+
+ p * q
+ 2
+ 1 + 4x - 3y + 4x - 6y x
+ Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+
+and see that variables do not commute.
+
+ (p+q)**2-p**2-q**2-2*p*q
+ - 6x y + 6y x
+ Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+
+Now we define a ring of square matrices,
+
+ M := SquareMatrix(2,Fraction Integer)
+ SquareMatrix(2,Fraction Integer)
+ Type: Domain
+
+and the linear combinations of words with these matrices as coefficients.
+
+ poly1:= XPR(M,Word)
+ XPolynomialRing(SquareMatrix(2,Fraction Integer),OrderedFreeMonoid Symbol)
+ Type: Domain
+
+Define a first matrix,
+
+ m1:M := matrix [ [i*j**2 for i in 1..2] for j in 1..2]
+ +1 2+
+ | |
+ +4 8+
+ Type: SquareMatrix(2,Fraction Integer)
+
+a second one,
+
+ m2:M := m1 - 5/4
+ + 1 +
+ |- - 2 |
+ | 4 |
+ | |
+ | 27|
+ | 4 --|
+ + 4+
+ Type: SquareMatrix(2,Fraction Integer)
+
+and a third one.
+
+ m3: M := m2**2
+ +129 +
+ |--- 13 |
+ | 16 |
+ | |
+ | 857|
+ |26 ---|
+ + 16+
+ Type: SquareMatrix(2,Fraction Integer)
+
+Define a polynomial,
+
+ pm:poly1 := m1*x + m2*y + m3*z - 2/3
+ + 2 + + 1 + +129 +
+ |- - 0 | |- - 2 | |--- 13 |
+ | 3 | +1 2+ | 4 | | 16 |
+ | | + | |x + | |y + | |z
+ | 2| +4 8+ | 27| | 857|
+ | 0 - -| | 4 --| |26 ---|
+ + 3+ + 4+ + 16+
+ Type: XPolynomialRing(SquareMatrix(2,Fraction Integer),
+ OrderedFreeMonoid Symbol)
+
+a second one,
+
+ qm:poly1 := pm - m1*x
+ + 2 + + 1 + +129 +
+ |- - 0 | |- - 2 | |--- 13 |
+ | 3 | | 4 | | 16 |
+ | | + | |y + | |z
+ | 2| | 27| | 857|
+ | 0 - -| | 4 --| |26 ---|
+ + 3+ + 4+ + 16+
+ Type: XPolynomialRing(SquareMatrix(2,Fraction Integer),
+ OrderedFreeMonoid Symbol)
+
+and the following power.
+
+ qm**3
+ + 8 + + 1 8+ +43 52 + + 129 +
+ |- -- 0 | |- - -| |-- -- | |- --- - 26 |
+ | 27 | | 3 3| | 4 3 | | 8 | 2
+ | | + | |y + | |z + | |y
+ | 8| |16 | |104 857| | 857|
+ | 0 - --| |-- 9| |--- ---| |- 52 - ---|
+ + 27+ + 3 + + 3 12+ + 8 +
+ +
+ + 3199 831 + + 3199 831 + + 103169 6409 +
+ |- ---- - --- | |- ---- - --- | |- ------ - ---- |
+ | 32 4 | | 32 4 | | 128 4 | 2
+ | |y z + | |z y + | |z
+ | 831 26467| | 831 26467| | 6409 820977|
+ |- --- - -----| |- --- - -----| | - ---- - ------|
+ + 2 32 + + 2 32 + + 2 128 +
+ +
+ +3199 831 + +103169 6409 + +103169 6409 +
+ |---- --- | |------ ---- | |------ ---- |
+ | 64 8 | 3 | 256 8 | 2 | 256 8 |
+ | |y + | |y z + | |y z y
+ |831 26467| | 6409 820977| | 6409 820977|
+ |--- -----| | ---- ------| | ---- ------|
+ + 4 64 + + 4 256 + + 4 256 +
+ +
+ +3178239 795341 + +103169 6409 + +3178239 795341 +
+ |------- ------ | |------ ---- | |------- ------ |
+ | 1024 128 | 2 | 256 8 | 2 | 1024 128 |
+ | |y z + | |z y + | |z y z
+ |795341 25447787| | 6409 820977| |795341 25447787|
+ |------ --------| | ---- ------| |------ --------|
+ + 64 1024 + + 4 256 + + 64 1024 +
+ +
+ +3178239 795341 + +98625409 12326223 +
+ |------- ------ | |-------- -------- |
+ | 1024 128 | 2 | 4096 256 | 3
+ | |z y + | |z
+ |795341 25447787| |12326223 788893897|
+ |------ --------| |-------- ---------|
+ + 64 1024 + + 128 4096 +
+ Type: XPolynomialRing(SquareMatrix(2,Fraction Integer),
+ OrderedFreeMonoid Symbol)
+
+See Also:
+o )help XPBWPolynomial
+o )help LiePolynomial
+o )help XDistributedPolynomial
+o )help XRecursivePolynomial
+o )help XPolynomial
+o )show XPolynomialRing
+o $AXIOM/doc/src/algebra/xpoly.spad.dvi
+
+@
<<domain XPR XPolynomialRing>>=
)abbrev domain XPR XPolynomialRing
++ Author: Michel Petitot address@hidden
@@ -1053,6 +1436,258 @@ XRecursivePolynomial(VarSet:OrderedSet,R:Ring): Xcat
== Xdef where
@
\section{domain XPOLY XPolynomial}
+<<XPolynomial.input>>=
+-- xpoly.spad.pamphlet XPolynomial.input
+)spool XPolynomial.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 14
+poly := XPolynomial(Integer)
+--R
+--R
+--R (1) XPolynomial Integer
+--R Type:
Domain
+--E 1
+
+--S 2 of 14
+pr: poly := 2*x + 3*y-5
+--R
+--R
+--R (2) - 5 + x 2 + y 3
+--R Type: XPolynomial
Integer
+--E 2
+
+--S 3 of 14
+pr2: poly := pr*pr
+--R
+--R
+--R (3) 25 + x(- 20 + x 4 + y 6) + y(- 30 + x 6 + y 9)
+--R Type: XPolynomial
Integer
+--E 3
+
+--S 4 of 14
+pd := expand pr
+--R
+--R
+--R (4) - 5 + 2x + 3y
+--R Type:
XDistributedPolynomial(Symbol,Integer)
+--E 4
+
+--S 5 of 14
+pd2 := pd*pd
+--R
+--R
+--R 2 2
+--R (5) 25 - 20x - 30y + 4x + 6x y + 6y x + 9y
+--R Type:
XDistributedPolynomial(Symbol,Integer)
+--E 5
+
+--S 6 of 14
+expand(pr2) - pd2
+--R
+--R
+--R (6) 0
+--R Type:
XDistributedPolynomial(Symbol,Integer)
+--E 6
+
+--S 7 of 14
+qr := pr**3
+--R
+--R
+--R (7)
+--R - 125 + x(150 + x(- 60 + x 8 + y 12) + y(- 90 + x 12 + y 18))
+--R +
+--R y(225 + x(- 90 + x 12 + y 18) + y(- 135 + x 18 + y 27))
+--R Type: XPolynomial
Integer
+--E 7
+
+--S 8 of 14
+qd := pd**3
+--R
+--R
+--R (8)
+--R 2 2 3 2
+--R - 125 + 150x + 225y - 60x - 90x y - 90y x - 135y + 8x + 12x y + 12x
y x
+--R +
+--R 2 2 2 3
+--R 18x y + 12y x + 18y x y + 18y x + 27y
+--R Type:
XDistributedPolynomial(Symbol,Integer)
+--E 8
+
+--S 9 of 14
+trunc(qd,2)
+--R
+--R
+--R 2 2
+--R (9) - 125 + 150x + 225y - 60x - 90x y - 90y x - 135y
+--R Type:
XDistributedPolynomial(Symbol,Integer)
+--E 9
+
+--S 10 of 14
+trunc(qr,2)
+--R
+--R
+--R (10) - 125 + x(150 + x(- 60) + y(- 90)) + y(225 + x(- 90) + y(- 135))
+--R Type: XPolynomial
Integer
+--E 10
+
+--S 11 of 14
+Word := OrderedFreeMonoid Symbol
+--R
+--R
+--R (11) OrderedFreeMonoid Symbol
+--R Type:
Domain
+--E 11
+
+--S 12 of 14
+w: Word := x*y**2
+--R
+--R
+--R 2
+--R (12) x y
+--R Type: OrderedFreeMonoid
Symbol
+--E 12
+
+--S 13 of 14
+rquo(qr,w)
+--R
+--R
+--R (13) 18
+--R Type: XPolynomial
Integer
+--E 13
+
+--S 14 of 14
+sh(pr,w::poly)
+--R
+--R
+--R (14) x(x y y 4 + y(x y 2 + y(- 5 + x 2 + y 9))) + y x y y 3
+--R Type: XPolynomial
Integer
+--E 14
+)spool
+)lisp (bye)
+@
+<<XPolynomial.help>>=
+====================================================================
+XPolynomial examples
+====================================================================
+
+The XPolynomial domain constructor implements multivariate polynomials
+whose set of variables is Symbol. These variables do not commute.
+The only parameter of this construtor is the coefficient ring which
+may be non-commutative. However, coefficients and variables commute.
+The representation of the polynomials is recursive. The abbreviation
+for XPolynomial is XPOLY.
+
+Other constructors like XPolynomialRing, XRecursivePolynomial as well
+as XDistributedPolynomial, LiePolynomial and XPBWPolynomial implement
+multivariate polynomials in non-commutative variables.
+
+We illustrate now some of the facilities of the XPOLY domain constructor.
+
+Define a polynomial ring over the integers.
+
+ poly := XPolynomial(Integer)
+ XPolynomial Integer
+ Type: Domain
+
+Define a first polynomial,
+
+ pr: poly := 2*x + 3*y-5
+ - 5 + x 2 + y 3
+ Type: XPolynomial Integer
+
+and a second one.
+
+ pr2: poly := pr*pr
+ 25 + x(- 20 + x 4 + y 6) + y(- 30 + x 6 + y 9)
+ Type: XPolynomial Integer
+
+Rewrite pr in a distributive way,
+
+ pd := expand pr
+ - 5 + 2x + 3y
+ Type: XDistributedPolynomial(Symbol,Integer)
+
+compute its square,
+
+ pd2 := pd*pd
+ 2 2
+ 25 - 20x - 30y + 4x + 6x y + 6y x + 9y
+ Type: XDistributedPolynomial(Symbol,Integer)
+
+and checks that:
+
+ expand(pr2) - pd2
+ 0
+ Type: XDistributedPolynomial(Symbol,Integer)
+
+We define:
+
+ qr := pr**3
+ - 125 + x(150 + x(- 60 + x 8 + y 12) + y(- 90 + x 12 + y 18))
+ +
+ y(225 + x(- 90 + x 12 + y 18) + y(- 135 + x 18 + y 27))
+ Type: XPolynomial Integer
+
+and:
+
+ qd := pd**3
+ 2 2 3 2
+ - 125 + 150x + 225y - 60x - 90x y - 90y x - 135y + 8x + 12x y + 12x y x
+ +
+ 2 2 2 3
+ 18x y + 12y x + 18y x y + 18y x + 27y
+ Type: XDistributedPolynomial(Symbol,Integer)
+
+We truncate qd at degree 3.
+
+ trunc(qd,2)
+ 2 2
+ - 125 + 150x + 225y - 60x - 90x y - 90y x - 135y
+ Type: XDistributedPolynomial(Symbol,Integer)
+
+The same for qr:
+
+ trunc(qr,2)
+ - 125 + x(150 + x(- 60) + y(- 90)) + y(225 + x(- 90) + y(- 135))
+ Type: XPolynomial Integer
+
+We define:
+
+ Word := OrderedFreeMonoid Symbol
+ OrderedFreeMonoid Symbol
+ Type: Domain
+
+and:
+
+ w: Word := x*y**2
+ 2
+ x y
+ Type: OrderedFreeMonoid Symbol
+
+We can compute the right-quotient of qr by r:
+
+ rquo(qr,w)
+ 18
+ Type: XPolynomial Integer
+
+and the shuffle-product of pr by r:
+
+ sh(pr,w::poly)
+ x(x y y 4 + y(x y 2 + y(- 5 + x 2 + y 9))) + y x y y 3
+ Type: XPolynomial Integer
+
+See Also:
+o )help XPBWPolynomial
+o )help LiePolynomial
+o )help XDistributedPolynomial
+o )help XRecursivePolynomial
+o )help XPolynomialRing
+o )show XPolynomial
+o $AXIOM/doc/src/algebra/xpoly.spad.dvi
+
+@
<<domain XPOLY XPolynomial>>=
)abbrev domain XPOLY XPolynomial
++ Author: Michel Petitot address@hidden
diff --git a/src/algebra/zerodim.spad.pamphlet
b/src/algebra/zerodim.spad.pamphlet
index 8e20563..26261e9 100644
--- a/src/algebra/zerodim.spad.pamphlet
+++ b/src/algebra/zerodim.spad.pamphlet
@@ -4125,6 +4125,3124 @@ Based on triangular decompositions and the {\bf
RealClosure} constructor,
the pacakge {\bf ZeroDimensionalSolvePackage} provides operations for
computing symbolically the real or complex roots of polynomial systems
with finitely many solutions.
+<<ZeroDimensionalSolvePackage.input>>=
+-- zerodim.spad.pamphlet ZeroDimensionalSolvePackage.input
+)spool ZeroDimensionalSolvePackage.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 28
+R := Integer
+--R
+--R
+--R (1) Integer
+--R Type:
Domain
+--E 1
+
+--S 2 of 28
+ls : List Symbol := [x,y,z,t]
+--R
+--R
+--R (2) [x,y,z,t]
+--R Type: List
Symbol
+--E 2
+
+--S 3 of 28
+ls2 : List Symbol := [x,y,z,t,new()$Symbol]
+--R
+--R
+--R (3) [x,y,z,t,%A]
+--R Type: List
Symbol
+--E 3
+
+--S 4 of 28
+pack := ZDSOLVE(R,ls,ls2)
+--R
+--R
+--R (4) ZeroDimensionalSolvePackage(Integer,[x,y,z,t],[x,y,z,t,%A])
+--R Type:
Domain
+--E 4
+
+--S 5 of 28
+p1 := x**2*y*z + x*y**2*z + x*y*z**2 + x*y*z + x*y + x*z + y*z
+--R
+--R
+--R 2 2 2
+--R (5) x y z + (x y + (x + x + 1)y + x)z + x y
+--R Type: Polynomial
Integer
+--E 5
+
+--S 6 of 28
+p2 := x**2*y**2*z + x*y**2*z**2 + x**2*y*z + x*y*z + y*z + x + z
+--R
+--R
+--R 2 2 2 2 2
+--R (6) x y z + (x y + (x + x + 1)y + 1)z + x
+--R Type: Polynomial
Integer
+--E 6
+
+--S 7 of 28
+p3 := x**2*y**2*z**2 + x**2*y**2*z + x*y**2*z + x*y*z + x*z + z + 1
+--R
+--R
+--R 2 2 2 2 2
+--R (7) x y z + ((x + x)y + x y + x + 1)z + 1
+--R Type: Polynomial
Integer
+--E 7
+
+--S 8 of 28
+lp := [p1, p2, p3]
+--R
+--R
+--R (8)
+--R 2 2 2
+--R [x y z + (x y + (x + x + 1)y + x)z + x y,
+--R 2 2 2 2 2
+--R x y z + (x y + (x + x + 1)y + 1)z + x,
+--R 2 2 2 2 2
+--R x y z + ((x + x)y + x y + x + 1)z + 1]
+--R Type: List Polynomial
Integer
+--E 8
+
+--S 9 of 28
+triangSolve(lp)$pack
+--R
+--R
+--R (9)
+--R [
+--R {
+--R 20 19 18 17 16 15 14 13
12
+--R z - 6z - 41z + 71z + 106z + 92z + 197z + 145z +
257z
+--R +
+--R 11 10 9 8 7 6 5 4
3
+--R 278z + 201z + 278z + 257z + 145z + 197z + 92z + 106z +
71z
+--R +
+--R 2
+--R - 41z - 6z + 1
+--R ,
+--R
+--R 19 18 17 16
+--R 14745844z + 50357474z - 130948857z - 185261586z
+--R +
+--R 15 14 13 12
+--R - 180077775z - 338007307z - 275379623z - 453190404z
+--R +
+--R 11 10 9 8
+--R - 474597456z - 366147695z - 481433567z - 430613166z
+--R +
+--R 7 6 5 4
+--R - 261878358z - 326073537z - 163008796z - 177213227z
+--R +
+--R 3 2
+--R - 104356755z + 65241699z + 9237732z - 1567348
+--R *
+--R y
+--R +
+--R 19 18 17 16 15
+--R 1917314z + 6508991z - 16973165z - 24000259z - 23349192z
+--R +
+--R 14 13 12 11
10
+--R - 43786426z - 35696474z - 58724172z - 61480792z - 47452440z
+--R +
+--R 9 8 7 6 5
+--R - 62378085z - 55776527z - 33940618z - 42233406z - 21122875z
+--R +
+--R 4 3 2
+--R - 22958177z - 13504569z + 8448317z + 1195888z - 202934
+--R ,
+--R 3 2 3 2 2 2
+--R ((z - 2z)y + (- z - z - 2z - 1)y - z - z + 1)x + z - 1}
+--R ]
+--R Type: List
RegularChain(Integer,[x,y,z,t])
+--E 9
+
+--S 10 of 28
+univariateSolve(lp)$pack
+--R
+--R
+--R (10)
+--R [
+--R [
+--R complexRoots =
+--R 12 11 10 9 8 7 6 5 4 3
+--R ? - 12? + 24? + 4? - 9? + 27? - 21? + 27? - 9? + 4?
+--R +
+--R 2
+--R 24? - 12? + 1
+--R ,
+--R
+--R coordinates =
+--R [
+--R 11 10 9 8 7 6
+--R 63x + 62%A - 721%A + 1220%A + 705%A - 285%A + 1512%A
+--R +
+--R 5 4 3 2
+--R - 735%A + 1401%A - 21%A + 215%A + 1577%A - 142
+--R ,
+--R
+--R 11 10 9 8 7 6
+--R 63y - 75%A + 890%A - 1682%A - 516%A + 588%A - 1953%A
+--R +
+--R 5 4 3 2
+--R 1323%A - 1815%A + 426%A - 243%A - 1801%A + 679
+--R ,
+--R z - %A]
+--R ]
+--R ,
+--R
+--R 6 5 4 3 2
+--R [complexRoots= ? + ? + ? + ? + ? + ? + 1,
+--R 5 3
+--R coordinates= [x - %A ,y - %A ,z - %A]]
+--R ,
+--R 2
+--R [complexRoots= ? + 5? + 1,coordinates= [x - 1,y - 1,z - %A]]]
+--RType: List Record(complexRoots: SparseUnivariatePolynomial
Integer,coordinates: List Polynomial Integer)
+--E 10
+
+--S 11 of 28
+lr := realSolve(lp)$pack
+--R
+--R
+--R (11)
+--R [
+--R [%B1,
+--R
+--R 1184459 19 2335702 18 5460230 17 79900378 16
+--R ------- %B1 - ------- %B1 - ------- %B1 + -------- %B1
+--R 1645371 548457 182819 1645371
+--R +
+--R 43953929 15 13420192 14 553986 13 193381378 12
+--R -------- %B1 + -------- %B1 + ------ %B1 + --------- %B1
+--R 548457 182819 3731 1645371
+--R +
+--R 35978916 11 358660781 10 271667666 9 118784873 8
+--R -------- %B1 + --------- %B1 + --------- %B1 + --------- %B1
+--R 182819 1645371 1645371 548457
+--R +
+--R 337505020 7 1389370 6 688291 5 3378002 4
+--R --------- %B1 + ------- %B1 + ------ %B1 + ------- %B1
+--R 1645371 11193 4459 42189
+--R +
+--R 140671876 3 32325724 2 8270 9741532
+--R --------- %B1 + -------- %B1 - ---- %B1 - -------
+--R 1645371 548457 343 1645371
+--R ,
+--R
+--R 91729 19 487915 18 4114333 17 1276987 16
+--R - ------ %B1 + ------ %B1 + ------- %B1 - ------- %B1
+--R 705159 705159 705159 235053
+--R +
+--R 13243117 15 16292173 14 26536060 13 722714 12
+--R - -------- %B1 - -------- %B1 - -------- %B1 - ------ %B1
+--R 705159 705159 705159 18081
+--R +
+--R 5382578 11 15449995 10 14279770 9 6603890 8
+--R - ------- %B1 - -------- %B1 - -------- %B1 - ------- %B1
+--R 100737 235053 235053 100737
+--R +
+--R 409930 7 37340389 6 34893715 5 26686318 4
+--R - ------ %B1 - -------- %B1 - -------- %B1 - -------- %B1
+--R 6027 705159 705159 705159
+--R +
+--R 801511 3 17206178 2 4406102 377534
+--R - ------ %B1 - -------- %B1 - ------- %B1 + ------
+--R 26117 705159 705159 705159
+--R ]
+--R ,
+--R
+--R [%B2,
+--R
+--R 1184459 19 2335702 18 5460230 17 79900378 16
+--R ------- %B2 - ------- %B2 - ------- %B2 + -------- %B2
+--R 1645371 548457 182819 1645371
+--R +
+--R 43953929 15 13420192 14 553986 13 193381378 12
+--R -------- %B2 + -------- %B2 + ------ %B2 + --------- %B2
+--R 548457 182819 3731 1645371
+--R +
+--R 35978916 11 358660781 10 271667666 9 118784873 8
+--R -------- %B2 + --------- %B2 + --------- %B2 + --------- %B2
+--R 182819 1645371 1645371 548457
+--R +
+--R 337505020 7 1389370 6 688291 5 3378002 4
+--R --------- %B2 + ------- %B2 + ------ %B2 + ------- %B2
+--R 1645371 11193 4459 42189
+--R +
+--R 140671876 3 32325724 2 8270 9741532
+--R --------- %B2 + -------- %B2 - ---- %B2 - -------
+--R 1645371 548457 343 1645371
+--R ,
+--R
+--R 91729 19 487915 18 4114333 17 1276987 16
+--R - ------ %B2 + ------ %B2 + ------- %B2 - ------- %B2
+--R 705159 705159 705159 235053
+--R +
+--R 13243117 15 16292173 14 26536060 13 722714 12
+--R - -------- %B2 - -------- %B2 - -------- %B2 - ------ %B2
+--R 705159 705159 705159 18081
+--R +
+--R 5382578 11 15449995 10 14279770 9 6603890 8
+--R - ------- %B2 - -------- %B2 - -------- %B2 - ------- %B2
+--R 100737 235053 235053 100737
+--R +
+--R 409930 7 37340389 6 34893715 5 26686318 4
+--R - ------ %B2 - -------- %B2 - -------- %B2 - -------- %B2
+--R 6027 705159 705159 705159
+--R +
+--R 801511 3 17206178 2 4406102 377534
+--R - ------ %B2 - -------- %B2 - ------- %B2 + ------
+--R 26117 705159 705159 705159
+--R ]
+--R ,
+--R
+--R [%B3,
+--R
+--R 1184459 19 2335702 18 5460230 17 79900378 16
+--R ------- %B3 - ------- %B3 - ------- %B3 + -------- %B3
+--R 1645371 548457 182819 1645371
+--R +
+--R 43953929 15 13420192 14 553986 13 193381378 12
+--R -------- %B3 + -------- %B3 + ------ %B3 + --------- %B3
+--R 548457 182819 3731 1645371
+--R +
+--R 35978916 11 358660781 10 271667666 9 118784873 8
+--R -------- %B3 + --------- %B3 + --------- %B3 + --------- %B3
+--R 182819 1645371 1645371 548457
+--R +
+--R 337505020 7 1389370 6 688291 5 3378002 4
+--R --------- %B3 + ------- %B3 + ------ %B3 + ------- %B3
+--R 1645371 11193 4459 42189
+--R +
+--R 140671876 3 32325724 2 8270 9741532
+--R --------- %B3 + -------- %B3 - ---- %B3 - -------
+--R 1645371 548457 343 1645371
+--R ,
+--R
+--R 91729 19 487915 18 4114333 17 1276987 16
+--R - ------ %B3 + ------ %B3 + ------- %B3 - ------- %B3
+--R 705159 705159 705159 235053
+--R +
+--R 13243117 15 16292173 14 26536060 13 722714 12
+--R - -------- %B3 - -------- %B3 - -------- %B3 - ------ %B3
+--R 705159 705159 705159 18081
+--R +
+--R 5382578 11 15449995 10 14279770 9 6603890 8
+--R - ------- %B3 - -------- %B3 - -------- %B3 - ------- %B3
+--R 100737 235053 235053 100737
+--R +
+--R 409930 7 37340389 6 34893715 5 26686318 4
+--R - ------ %B3 - -------- %B3 - -------- %B3 - -------- %B3
+--R 6027 705159 705159 705159
+--R +
+--R 801511 3 17206178 2 4406102 377534
+--R - ------ %B3 - -------- %B3 - ------- %B3 + ------
+--R 26117 705159 705159 705159
+--R ]
+--R ,
+--R
+--R [%B4,
+--R
+--R 1184459 19 2335702 18 5460230 17 79900378 16
+--R ------- %B4 - ------- %B4 - ------- %B4 + -------- %B4
+--R 1645371 548457 182819 1645371
+--R +
+--R 43953929 15 13420192 14 553986 13 193381378 12
+--R -------- %B4 + -------- %B4 + ------ %B4 + --------- %B4
+--R 548457 182819 3731 1645371
+--R +
+--R 35978916 11 358660781 10 271667666 9 118784873 8
+--R -------- %B4 + --------- %B4 + --------- %B4 + --------- %B4
+--R 182819 1645371 1645371 548457
+--R +
+--R 337505020 7 1389370 6 688291 5 3378002 4
+--R --------- %B4 + ------- %B4 + ------ %B4 + ------- %B4
+--R 1645371 11193 4459 42189
+--R +
+--R 140671876 3 32325724 2 8270 9741532
+--R --------- %B4 + -------- %B4 - ---- %B4 - -------
+--R 1645371 548457 343 1645371
+--R ,
+--R
+--R 91729 19 487915 18 4114333 17 1276987 16
+--R - ------ %B4 + ------ %B4 + ------- %B4 - ------- %B4
+--R 705159 705159 705159 235053
+--R +
+--R 13243117 15 16292173 14 26536060 13 722714 12
+--R - -------- %B4 - -------- %B4 - -------- %B4 - ------ %B4
+--R 705159 705159 705159 18081
+--R +
+--R 5382578 11 15449995 10 14279770 9 6603890 8
+--R - ------- %B4 - -------- %B4 - -------- %B4 - ------- %B4
+--R 100737 235053 235053 100737
+--R +
+--R 409930 7 37340389 6 34893715 5 26686318 4
+--R - ------ %B4 - -------- %B4 - -------- %B4 - -------- %B4
+--R 6027 705159 705159 705159
+--R +
+--R 801511 3 17206178 2 4406102 377534
+--R - ------ %B4 - -------- %B4 - ------- %B4 + ------
+--R 26117 705159 705159 705159
+--R ]
+--R ,
+--R
+--R [%B5,
+--R
+--R 1184459 19 2335702 18 5460230 17 79900378 16
+--R ------- %B5 - ------- %B5 - ------- %B5 + -------- %B5
+--R 1645371 548457 182819 1645371
+--R +
+--R 43953929 15 13420192 14 553986 13 193381378 12
+--R -------- %B5 + -------- %B5 + ------ %B5 + --------- %B5
+--R 548457 182819 3731 1645371
+--R +
+--R 35978916 11 358660781 10 271667666 9 118784873 8
+--R -------- %B5 + --------- %B5 + --------- %B5 + --------- %B5
+--R 182819 1645371 1645371 548457
+--R +
+--R 337505020 7 1389370 6 688291 5 3378002 4
+--R --------- %B5 + ------- %B5 + ------ %B5 + ------- %B5
+--R 1645371 11193 4459 42189
+--R +
+--R 140671876 3 32325724 2 8270 9741532
+--R --------- %B5 + -------- %B5 - ---- %B5 - -------
+--R 1645371 548457 343 1645371
+--R ,
+--R
+--R 91729 19 487915 18 4114333 17 1276987 16
+--R - ------ %B5 + ------ %B5 + ------- %B5 - ------- %B5
+--R 705159 705159 705159 235053
+--R +
+--R 13243117 15 16292173 14 26536060 13 722714 12
+--R - -------- %B5 - -------- %B5 - -------- %B5 - ------ %B5
+--R 705159 705159 705159 18081
+--R +
+--R 5382578 11 15449995 10 14279770 9 6603890 8
+--R - ------- %B5 - -------- %B5 - -------- %B5 - ------- %B5
+--R 100737 235053 235053 100737
+--R +
+--R 409930 7 37340389 6 34893715 5 26686318 4
+--R - ------ %B5 - -------- %B5 - -------- %B5 - -------- %B5
+--R 6027 705159 705159 705159
+--R +
+--R 801511 3 17206178 2 4406102 377534
+--R - ------ %B5 - -------- %B5 - ------- %B5 + ------
+--R 26117 705159 705159 705159
+--R ]
+--R ,
+--R
+--R [%B6,
+--R
+--R 1184459 19 2335702 18 5460230 17 79900378 16
+--R ------- %B6 - ------- %B6 - ------- %B6 + -------- %B6
+--R 1645371 548457 182819 1645371
+--R +
+--R 43953929 15 13420192 14 553986 13 193381378 12
+--R -------- %B6 + -------- %B6 + ------ %B6 + --------- %B6
+--R 548457 182819 3731 1645371
+--R +
+--R 35978916 11 358660781 10 271667666 9 118784873 8
+--R -------- %B6 + --------- %B6 + --------- %B6 + --------- %B6
+--R 182819 1645371 1645371 548457
+--R +
+--R 337505020 7 1389370 6 688291 5 3378002 4
+--R --------- %B6 + ------- %B6 + ------ %B6 + ------- %B6
+--R 1645371 11193 4459 42189
+--R +
+--R 140671876 3 32325724 2 8270 9741532
+--R --------- %B6 + -------- %B6 - ---- %B6 - -------
+--R 1645371 548457 343 1645371
+--R ,
+--R
+--R 91729 19 487915 18 4114333 17 1276987 16
+--R - ------ %B6 + ------ %B6 + ------- %B6 - ------- %B6
+--R 705159 705159 705159 235053
+--R +
+--R 13243117 15 16292173 14 26536060 13 722714 12
+--R - -------- %B6 - -------- %B6 - -------- %B6 - ------ %B6
+--R 705159 705159 705159 18081
+--R +
+--R 5382578 11 15449995 10 14279770 9 6603890 8
+--R - ------- %B6 - -------- %B6 - -------- %B6 - ------- %B6
+--R 100737 235053 235053 100737
+--R +
+--R 409930 7 37340389 6 34893715 5 26686318 4
+--R - ------ %B6 - -------- %B6 - -------- %B6 - -------- %B6
+--R 6027 705159 705159 705159
+--R +
+--R 801511 3 17206178 2 4406102 377534
+--R - ------ %B6 - -------- %B6 - ------- %B6 + ------
+--R 26117 705159 705159 705159
+--R ]
+--R ,
+--R
+--R [%B7,
+--R
+--R 1184459 19 2335702 18 5460230 17 79900378 16
+--R ------- %B7 - ------- %B7 - ------- %B7 + -------- %B7
+--R 1645371 548457 182819 1645371
+--R +
+--R 43953929 15 13420192 14 553986 13 193381378 12
+--R -------- %B7 + -------- %B7 + ------ %B7 + --------- %B7
+--R 548457 182819 3731 1645371
+--R +
+--R 35978916 11 358660781 10 271667666 9 118784873 8
+--R -------- %B7 + --------- %B7 + --------- %B7 + --------- %B7
+--R 182819 1645371 1645371 548457
+--R +
+--R 337505020 7 1389370 6 688291 5 3378002 4
+--R --------- %B7 + ------- %B7 + ------ %B7 + ------- %B7
+--R 1645371 11193 4459 42189
+--R +
+--R 140671876 3 32325724 2 8270 9741532
+--R --------- %B7 + -------- %B7 - ---- %B7 - -------
+--R 1645371 548457 343 1645371
+--R ,
+--R
+--R 91729 19 487915 18 4114333 17 1276987 16
+--R - ------ %B7 + ------ %B7 + ------- %B7 - ------- %B7
+--R 705159 705159 705159 235053
+--R +
+--R 13243117 15 16292173 14 26536060 13 722714 12
+--R - -------- %B7 - -------- %B7 - -------- %B7 - ------ %B7
+--R 705159 705159 705159 18081
+--R +
+--R 5382578 11 15449995 10 14279770 9 6603890 8
+--R - ------- %B7 - -------- %B7 - -------- %B7 - ------- %B7
+--R 100737 235053 235053 100737
+--R +
+--R 409930 7 37340389 6 34893715 5 26686318 4
+--R - ------ %B7 - -------- %B7 - -------- %B7 - -------- %B7
+--R 6027 705159 705159 705159
+--R +
+--R 801511 3 17206178 2 4406102 377534
+--R - ------ %B7 - -------- %B7 - ------- %B7 + ------
+--R 26117 705159 705159 705159
+--R ]
+--R ,
+--R
+--R [%B8,
+--R
+--R 1184459 19 2335702 18 5460230 17 79900378 16
+--R ------- %B8 - ------- %B8 - ------- %B8 + -------- %B8
+--R 1645371 548457 182819 1645371
+--R +
+--R 43953929 15 13420192 14 553986 13 193381378 12
+--R -------- %B8 + -------- %B8 + ------ %B8 + --------- %B8
+--R 548457 182819 3731 1645371
+--R +
+--R 35978916 11 358660781 10 271667666 9 118784873 8
+--R -------- %B8 + --------- %B8 + --------- %B8 + --------- %B8
+--R 182819 1645371 1645371 548457
+--R +
+--R 337505020 7 1389370 6 688291 5 3378002 4
+--R --------- %B8 + ------- %B8 + ------ %B8 + ------- %B8
+--R 1645371 11193 4459 42189
+--R +
+--R 140671876 3 32325724 2 8270 9741532
+--R --------- %B8 + -------- %B8 - ---- %B8 - -------
+--R 1645371 548457 343 1645371
+--R ,
+--R
+--R 91729 19 487915 18 4114333 17 1276987 16
+--R - ------ %B8 + ------ %B8 + ------- %B8 - ------- %B8
+--R 705159 705159 705159 235053
+--R +
+--R 13243117 15 16292173 14 26536060 13 722714 12
+--R - -------- %B8 - -------- %B8 - -------- %B8 - ------ %B8
+--R 705159 705159 705159 18081
+--R +
+--R 5382578 11 15449995 10 14279770 9 6603890 8
+--R - ------- %B8 - -------- %B8 - -------- %B8 - ------- %B8
+--R 100737 235053 235053 100737
+--R +
+--R 409930 7 37340389 6 34893715 5 26686318 4
+--R - ------ %B8 - -------- %B8 - -------- %B8 - -------- %B8
+--R 6027 705159 705159 705159
+--R +
+--R 801511 3 17206178 2 4406102 377534
+--R - ------ %B8 - -------- %B8 - ------- %B8 + ------
+--R 26117 705159 705159 705159
+--R ]
+--R ]
+--R Type: List List RealClosure Fraction
Integer
+--E 11
+
+--S 12 of 28
+# lr
+--R
+--R
+--R (12) 8
+--R Type:
PositiveInteger
+--E 12
+
+--S 13 of 28
+[ [approximate(r,1/1000000) for r in point] for point in lr]
+--R
+--R
+--R (13)
+--R [
+--R 10048059
+--R [- --------,
+--R 2097152
+--R
+--R
4503057316985387943524397913838966414596731976211768219335881208385516_
+--R
314058924567176091423629695777403099833360761048898228916578137094309_
+--R
838597331137202584846939132376157019506760357601165917454986815382098_
+--R
789094851523420392811293126141329856546977145464661495487825919941188_
+--R
447041722440491921567263542158028061437758844364634410045253024786561_
+--R 923163288214175
+--R /
+--R
4503057283025245488516511806985826635083100693757320465280554706865644_
+--R
949577509916867201889438090408354817931718593862797624551518983570793_
+--R
048774424291488708829840324189200301436123314860200821443733790755311_
+--R
243632919864895421704228949571290016119498807957023663865443069392027_
+--R
148979688266712323356043491523434068924275280417338574817381189277066_
+--R 143312396681216
+--R ,
+--R
+--R
2106260768823475073894798680486016596249607148690685538763683715020639_
+--R
680858649650790055889505646893309447097099937802187329095325898785247_
+--R
249020717504983660482075156618738724514685333060011202964635166381351_
+--R
543255982200250305283981086837110614842307026091211297929876896285681_
+--R
830479054760056380762664905618462055306047816191782011588703789138988_
+--R 1895
+--R /
+--R
2106260609498464192472113804816474175341962953296434102413903142368757_
+--R
967685273888585590975965211778862189872881953943640246297357061959812_
+--R
326103659799025126863258676567202342106877031710184247484181423288921_
+--R
837681237062708470295706218485928867400771937828499200923760593314168_
+--R
901000666373896347598118228556731037072026474496776228383762993923280_
+--R 0768
+--R ]
+--R ,
+--R
+--R 2563013
+--R [- -------,
+--R 2097152
+--R
+--R -
+--R
2611346176791927789698617693237757719238259963063541781922752330440_
+--R
189899668072928338490768623593207442125925986733815932243504809294_
+--R 837523030237337236806668167446173001727271353311571242897
+--R /
+--R
1165225400505222530583981916004589143757226610276858990008790134819_
+--R
914940922413753983971394019523433320408139928153188829495755455163_
+--R 963417619308395977544797140231469234269034921938055593984
+--R ,
+--R
+--R
3572594550275917221096588729615788272998517054675603239578198141006034_
+--R
091735282826590621902304466963941971038923304526273329316373757450061_
+--R 9789892286110976997087250466235373
+--R /
+--R
1039548269345598936877071244834026055800814551120170592200522366591759_
+--R
409659486442339141029452950265179989960104811875822530205346505131581_
+--R 2439017247289173865014702966308864
+--R ]
+--R ,
+--R
+--R 1715967
+--R [- -------,
+--R 2097152
+--R
+--R -
+--R
4213093533784303521084839517977082390377261503969586224828998436606_
+--R
030656076359374564813773498376603121267822565801436206939519951465_
+--R 18222580524697287410022543952491
+--R /
+--R
9441814144185374458649692034349224052436597470966253663930641960795_
+--R
805882585493199840191699917659443264824641135187383583888147867340_
+--R 19307857605820364195856822304768
+--R ,
+--R
+--R
7635833347112644222515625424410831225347475669008589338834162172501904_
+--R
994376346730876809042845208919919925302105720971453918982731389072591_
+--R 4035
+--R /
+--R
2624188764086097199784297610478066633934230467895851602278580978503784_
+--R
549205788499019640602266966026891580103543567625039018629887141284916_
+--R 75648
+--R ]
+--R ,
+--R
+--R 437701
+--R [- -------,
+--R 2097152
+--R
+--R
1683106908638349588322172332654225913562986313181951031452750161441497_
+--R
473455328150721364868355579646781603507777199075077835213366484533654_
+--R 91383623741304759
+--R /
+--R
1683106868095213389001709982705913638963077668731226111167785188004907_
+--R
425226298680325887810962614140298597366984264887998908377068799998454_
+--R 23381649008099328
+--R ,
+--R
+--R
4961550109835010186422681013422108735958714801003760639707968096646912_
+--R 82670847283444311723917219104249213450966312411133
+--R /
+--R
4961549872757738315509192078210209029852897118611097126236384040829376_
+--R 59261914313170254867464792718363492160482442215424
+--R ]
+--R ,
+--R
+--R 222801
+--R [-------,
+--R 2097152
+--R
+--R -
+--R
8994884880402428265107595121970691427136045692541978275573001865213_
+--R
759921588137716696126349101655220195142994932299137183241705867672_
+--R 383477
+--R /
+--R
1167889998665026372177765100691888582708969960229934769690835752457_
+--R
077779416435209473767866507769405888942764587718542434255625992456_
+--R 372224
+--R ,
+--R
+--R -
+--R
2389704888133156878320801544373808395612771509208491019847452991885_
+--R
509546519525467839016613593999693886640036283570552321155037871291_
+--R 458703265
+--R /
+--R
5355487273645096326090403286689931905988225444685411433221593833681_
+--R
192957562833671468654290340746993656285925599117602120446183443145_
+--R 479421952
+--R ]
+--R ,
+--R
+--R 765693
+--R [-------,
+--R 2097152
+--R
+--R
8558969219816716267873244761178198088724698958616670140213765754322002_
+--R
303251685786118678330840203328837654339523418704917749518340772512899_
+--R 000391009630373148561
+--R /
+--R
2941442445533010790976428411376393499815580215945856917906452535495723_
+--R
013856818941702330228779890141296236721138154231997238917322156711965_
+--R 2444639331719460159488
+--R ,
+--R
+--R -
+--R
2057618230582572101247650324860242561111302581543588808843923662767_
+--R
549382241659362712290777612800192921420574408948085193743688582762_
+--R 2246433251878894899015
+--R /
+--R
2671598203325735538097952353501450220576313759890835097091722520642_
+--R
710198771902667183948906289863714759678360292483949204616471537777_
+--R 775324180661095366656
+--R ]
+--R ,
+--R
+--R 5743879
+--R [-------,
+--R 2097152
+--R
+--R
1076288816968906847955546394773570208171456724942618614023663123574768_
+--R
960850434263971398072546592772662158833449797698617455397887562900072_
+--R
984768000608343553189801693408727205047612559889232757563830528688953_
+--R
535421809482771058917542602890060941949620874083007858366669453501766_
+--R 24841488732463225
+--R /
+--R
3131768957080317946648461940023552044190376613458584986228549631916196_
+--R
601616219781765615532532294746529648276430583810894079374566460757823_
+--R
146888581195556029208515218838883200318658407469399426063260589828612_
+--R
309231596669129707986481319851571942927230340622934023923486703042068_
+--R 1530440845099008
+--R ,
+--R
+--R -
+--R
2113286699185750918364120475565458437870172489865485994389828135335_
+--R
264444665284557526492734931691731407872701432935503473348172076098_
+--R
720545849008780077564160534317894688366119529739980502944162668550_
+--R
098127961950496210221942878089359674925850594427768502251789758706_
+--R 752831632503615
+--R /
+--R
1627615584937987580242906624347104580889144466168459718043153839408_
+--R
372525533309808070363699585502216011211087103263609551026027769414_
+--R
087391148126221168139781682587438075322591466131939975457200522349_
+--R
838568964285634448018562038272378787354460106106141518010935617205_
+--R 1706396253618176
+--R ]
+--R ,
+--R
+--R 19739877
+--R [--------,
+--R 2097152
+--R
+--R -
+--R
2997249936832703303799015804861520949215040387500707177701285766720_
+--R
192530579422478953566024359860143101547801638082771611160372212874_
+--R
847778035809872843149225484238365858013629341705321702582333350918_
+--R
009601789937023985935304900460493389873837030853410347089908880814_
+--R
853981132018464582458800615394770741699487295875960210750215891948_
+--R
814476854871031530931295467332190133702671098200902282300510751860_
+--R 7185928457030277807397796525813862762239286996106809728023675
+--R /
+--R
2308433274852278590728910081191811023906504141321432646123936794873_
+--R
933319270608960702138193417647898360620229519176632937631786851455_
+--R
014766027206259022252505551741823688896883806636602574431760472240_
+--R
292093196729475160247268834121141893318848728661844434927287285112_
+--R
897080767552864895056585864033178565910387065006112801516403522741_
+--R
037360990556054476949527059227070809593049491257519554708879259595_
+--R 52929920110858560812556635485429471554031675979542656381353984
+--R ,
+--R
+--R -
+--R
5128189263548228489096276397868940080600938410663080459407966335845_
+--R
009264109490520459825316250084723010047035024497436523038925818959_
+--R
289312931584701353927621435434398674263047293909122850133851990696_
+--R
490231566094371994333795070782624011727587749989296611277318372294_
+--R
624207116537910436554574146082884701305543912620419354885410735940_
+--R
157775896602822364575864611831512943973974715166920465061850603762_
+--R 87516256195847052412587282839139194642913955
+--R /
+--R
2288281939778439330531208793181290471183631092455368990386390824243_
+--R
509463644236249773080647438987739144921607794682653851741189091711_
+--R
741868145114978337284191822497675868358729486644730856622552687209_
+--R
203724411800481405702837198310642291275676195774614443815996713502_
+--R
629391749783590041470860127752372996488627742672487622480063268808_
+--R
889324891850842494934347337603075939980268208482904859678177751444_
+--R 65749979827872616963053217673201717237252096
+--R ]
+--R ]
+--R Type: List List Fraction
Integer
+--E 13
+
+--S 14 of 28
+lpr := positiveSolve(lp)$pack
+--R
+--R
+--R (14) []
+--R Type: List List RealClosure Fraction
Integer
+--E 14
+
+--S 15 of 28
+f0 := x**3 + y + z + t- 1
+--R
+--R
+--R 3
+--R (15) z + y + x + t - 1
+--R Type: Polynomial
Integer
+--E 15
+
+--S 16 of 28
+f1 := x + y**3 + z + t -1
+--R
+--R
+--R 3
+--R (16) z + y + x + t - 1
+--R Type: Polynomial
Integer
+--E 16
+
+--S 17 of 28
+f2 := x + y + z**3 + t-1
+--R
+--R
+--R 3
+--R (17) z + y + x + t - 1
+--R Type: Polynomial
Integer
+--E 17
+
+--S 18 of 28
+f3 := x + y + z + t**3 -1
+--R
+--R
+--R 3
+--R (18) z + y + x + t - 1
+--R Type: Polynomial
Integer
+--E 18
+
+--S 19 of 28
+lf := [f0, f1, f2, f3]
+--R
+--R
+--R (19)
+--R 3 3 3 3
+--R [z + y + x + t - 1,z + y + x + t - 1,z + y + x + t - 1,z + y + x + t
- 1]
+--R Type: List Polynomial
Integer
+--E 19
+
+--S 20 of 28
+lts := triangSolve(lf)$pack
+--R
+--R
+--R (20)
+--R [
+--R 2 3 3
+--R {t + t + 1, z - z - t + t,
+--R
+--R 3 2 2 3 6 3 3
2
+--R (3z + 3t - 3)y + (3z + (6t - 6)z + 3t - 6t + 3)y + (3t - 3)z
+--R +
+--R 6 3 9 6 3
+--R (3t - 6t + 3)z + t - 3t + 5t - 3t
+--R ,
+--R x + y + z}
+--R ,
+--R
+--R 16 13 10 7 4 2
+--R {t - 6t + 9t + 4t + 15t - 54t + 27,
+--R
+--R 15 14 13 12
11
+--R 4907232t + 40893984t - 115013088t + 22805712t +
36330336t
+--R +
+--R 10 9 8 7
+--R 162959040t - 159859440t - 156802608t + 117168768t
+--R +
+--R 6 5 4 3
+--R 126282384t - 129351600t + 306646992t + 475302816t
+--R +
+--R 2
+--R - 1006837776t - 237269088t + 480716208
+--R *
+--R z
+--R +
+--R 54 51 48 46 45 43 42
+--R 48t - 912t + 8232t - 72t - 46848t + 1152t + 186324t
+--R +
+--R 40 39 38 37 36 35
+--R - 3780t - 543144t - 3168t - 21384t + 1175251t + 41184t
+--R +
+--R 34 33 32 31 30
+--R 278003t - 1843242t - 301815t - 1440726t + 1912012t
+--R +
+--R 29 28 27 26 25
+--R 1442826t + 4696262t - 922481t - 4816188t - 10583524t
+--R +
+--R 24 23 22 21 20
+--R - 208751t + 11472138t + 16762859t - 857663t - 19328175t
+--R +
+--R 19 18 17 16 15
+--R - 18270421t + 4914903t + 22483044t + 12926517t - 8605511t
+--R +
+--R 14 13 12 11 10
+--R - 17455518t - 5014597t + 8108814t + 8465535t + 190542t
+--R +
+--R 9 8 7 6 5
4
+--R - 4305624t - 2226123t + 661905t + 1169775t + 226260t - 209952t
+--R +
+--R 3
+--R - 141183t + 27216t
+--R ,
+--R
+--R 3 2 2 3 6 3 3
2
+--R (3z + 3t - 3)y + (3z + (6t - 6)z + 3t - 6t + 3)y + (3t - 3)z
+--R +
+--R 6 3 9 6 3
+--R (3t - 6t + 3)z + t - 3t + 5t - 3t
+--R ,
+--R 3
+--R x + y + z + t - 1}
+--R ,
+--R 2 2 2
+--R {t,z - 1,y - 1,x + y}, {t - 1,z,y - 1,x + y}, {t - 1,z - 1,z y +
1,x},
+--R
+--R 16 13 10 7 4 2
+--R {t - 6t + 9t + 4t + 15t - 54t + 27,
+--R
+--R 29 28 27 26
25
+--R 4907232t + 40893984t - 115013088t - 1730448t -
168139584t
+--R +
+--R 24 23 22 21
+--R 738024480t - 195372288t + 315849456t - 2567279232t
+--R +
+--R 20 19 18 17
+--R 937147968t + 1026357696t + 4780488240t - 2893767696t
+--R +
+--R 16 15 14 13
+--R - 5617160352t - 3427651728t + 5001100848t + 8720098416t
+--R +
+--R 12 11 10 9
+--R 2331732960t - 499046544t - 16243306272t - 9748123200t
+--R +
+--R 8 7 6 5
+--R 3927244320t + 25257280896t + 10348032096t - 17128672128t
+--R +
+--R 4 3 2
+--R - 14755488768t + 544086720t + 10848188736t + 1423614528t
+--R +
+--R - 2884297248
+--R *
+--R z
+--R +
+--R 68 65 62 60 59 57
56
+--R - 48t + 1152t - 13560t + 360t + 103656t - 7560t -
572820t
+--R +
+--R 54 53 52 51 50 49
+--R 71316t + 2414556t + 2736t - 402876t - 7985131t - 49248t
+--R +
+--R 48 47 46 45 44
+--R 1431133t + 20977409t + 521487t - 2697635t - 43763654t
+--R +
+--R 43 42 41 40 39
+--R - 3756573t - 2093410t + 71546495t + 19699032t + 35025028t
+--R +
+--R 38 37 36 35
34
+--R - 89623786t - 77798760t - 138654191t + 87596128t +
235642497t
+--R +
+--R 33 32 31 30
29
+--R 349607642t - 93299834t - 551563167t - 630995176t +
186818962t
+--R +
+--R 28 27 26 25
+--R 995427468t + 828416204t - 393919231t - 1076617485t
+--R +
+--R 24 23 22 21
+--R - 1609479791t + 595738126t + 1198787136t + 4342832069t
+--R +
+--R 20 19 18 17
+--R - 2075938757t - 4390835799t - 4822843033t + 6932747678t
+--R +
+--R 16 15 14 13
+--R 6172196808t + 1141517740t - 4981677585t - 9819815280t
+--R +
+--R 12 11 10 9
+--R - 7404299976t - 157295760t + 29124027630t + 14856038208t
+--R +
+--R 8 7 6 5
+--R - 16184101410t - 26935440354t - 3574164258t + 10271338974t
+--R +
+--R 4 3 2
+--R 11191425264t + 6869861262t - 9780477840t - 3586674168t +
2884297248
+--R ,
+--R
+--R 3 3 2 6 3 9 6 3
+--R (3z + (6t - 6)z + (6t - 12t + 3)z + 2t - 6t + t + 3t)y
+--R +
+--R 3 3 6 3 2 9 6 3 12
9
+--R (3t - 3)z + (6t - 12t + 6)z + (4t - 12t + 11t - 3)z + t
- 4t
+--R +
+--R 6 3
+--R 5t - 2t
+--R ,
+--R 3
+--R x + y + z + t - 1}
+--R ,
+--R 2
+--R {t - 1,z - 1,y,x + z},
+--R
+--R 8 7 6 5 4 3 2
+--R {t + t + t - 2t - 2t - 2t + 19t + 19t - 8,
+--R
+--R 7 6 5 4 3
+--R 2395770t + 3934440t - 3902067t - 10084164t - 1010448t
+--R +
+--R 2
+--R 32386932t + 22413225t - 10432368
+--R *
+--R z
+--R +
+--R 7 6 5 4 3
+--R - 463519t + 3586833t + 9494955t - 8539305t - 33283098t
+--R +
+--R 2
+--R 35479377t + 46263256t - 17419896
+--R ,
+--R
+--R 4 3 3 6 3 2 3
+--R 3z + (9t - 9)z + (12t - 24t + 9)z + (- 152t + 219t -
67)z
+--R +
+--R 6 4 3
+--R - 41t + 57t + 25t - 57t + 16
+--R *
+--R y
+--R +
+--R 3 4 6 3 3 3 2
+--R (3t - 3)z + (9t - 18t + 9)z + (- 181t + 270t - 89)z
+--R +
+--R 6 4 3 7 6 4 3
+--R (- 92t + 135t + 49t - 135t + 43)z + 27t - 27t - 54t + 396t
+--R +
+--R - 486t + 144
+--R ,
+--R 3
+--R x + y + z + t - 1}
+--R ,
+--R 3
+--R {t,z - t + 1,y - 1,x - 1}, {t - 1,z,y,x}, {t,z - 1,y,x}, {t,z,y - 1,x},
+--R {t,z,y,x - 1}]
+--R Type: List
RegularChain(Integer,[x,y,z,t])
+--E 20
+
+--S 21 of 28
+univariateSolve(lf)$pack
+--R
+--R
+--R (21)
+--R [[complexRoots= ?,coordinates= [x - 1,y - 1,z + 1,t - %A]],
+--R [complexRoots= ?,coordinates= [x,y - 1,z,t - %A]],
+--R [complexRoots= ? - 1,coordinates= [x,y,z,t - %A]],
+--R [complexRoots= ?,coordinates= [x - 1,y,z,t - %A]],
+--R [complexRoots= ?,coordinates= [x,y,z - 1,t - %A]],
+--R [complexRoots= ? - 2,coordinates= [x - 1,y + 1,z,t - 1]],
+--R [complexRoots= ?,coordinates= [x + 1,y - 1,z,t - 1]],
+--R [complexRoots= ? - 1,coordinates= [x - 1,y + 1,z - 1,t]],
+--R [complexRoots= ? + 1,coordinates= [x + 1,y - 1,z - 1,t]],
+--R
+--R 6 3 2
+--R [complexRoots= ? - 2? + 3? - 3,
+--R 3 3
+--R coordinates= [2x + %A + %A - 1,2y + %A + %A - 1,z - %A,t - %A]]
+--R ,
+--R
+--R 5 3 2
+--R [complexRoots= ? + 3? - 2? + 3? - 3,
+--R 3
+--R coordinates= [x - %A,y - %A,z + %A + 2%A - 1,t - %A]]
+--R ,
+--R
+--R 4 3 2
+--R [complexRoots= ? - ? - 2? + 3,
+--R 3 3 3
+--R coordinates= [x + %A - %A - 1,y + %A - %A - 1,z - %A + 2%A + 1,t -
%A]]
+--R ,
+--R [complexRoots= ? + 1,coordinates= [x - 1,y - 1,z,t - %A]],
+--R
+--R 6 3 2
+--R [complexRoots= ? + 2? + 3? - 3,
+--R 3 3
+--R coordinates= [2x - %A - %A - 1,y + %A,2z - %A - %A - 1,t + %A]]
+--R ,
+--R
+--R 6 4 3 2
+--R [complexRoots= ? + 12? + 20? - 45? - 42? - 953,
+--R
+--R coordinates =
+--R 5 4 3 2
+--R [12609x + 23%A + 49%A - 46%A + 362%A - 5015%A - 8239,
+--R 5 4 3 2
+--R 25218y + 23%A + 49%A - 46%A + 362%A + 7594%A - 8239,
+--R 5 4 3 2
+--R 25218z + 23%A + 49%A - 46%A + 362%A + 7594%A - 8239,
+--R 5 4 3 2
+--R 12609t + 23%A + 49%A - 46%A + 362%A - 5015%A - 8239]
+--R ]
+--R ,
+--R
+--R 5 3 2
+--R [complexRoots= ? + 12? - 16? + 48? - 96,
+--R 3
+--R coordinates= [8x + %A + 8%A - 8,2y - %A,2z - %A,2t - %A]]
+--R ,
+--R
+--R 5 4 3 2
+--R [complexRoots= ? + ? - 5? - 3? + 9? + 3,
+--R
+--R coordinates =
+--R 3 3 3
+--R [2x - %A + 2%A - 1, 2y + %A - 4%A + 1, 2z - %A + 2%A - 1,
+--R 3
+--R 2t - %A + 2%A - 1]
+--R ]
+--R ,
+--R
+--R 4 3 2
+--R [complexRoots= ? - 3? + 4? - 6? + 13,
+--R
+--R coordinates =
+--R 3 2 3 2
+--R [9x - 2%A + 4%A - %A + 2, 9y + %A - 2%A + 5%A - 1,
+--R 3 2 3 2
+--R 9z + %A - 2%A + 5%A - 1, 9t + %A - 2%A - 4%A - 1]
+--R ]
+--R ,
+--R
+--R 4 2
+--R [complexRoots= ? - 11? + 37,
+--R
+--R coordinates =
+--R 2 2 2 2
+--R [3x - %A + 7,6y + %A + 3%A - 7,3z - %A + 7,6t + %A - 3%A - 7]
+--R ]
+--R ,
+--R [complexRoots= ? + 1,coordinates= [x - 1,y,z - 1,t + 1]],
+--R [complexRoots= ? + 2,coordinates= [x,y - 1,z - 1,t + 1]],
+--R [complexRoots= ? - 2,coordinates= [x,y - 1,z + 1,t - 1]],
+--R [complexRoots= ?,coordinates= [x,y + 1,z - 1,t - 1]],
+--R [complexRoots= ? - 2,coordinates= [x - 1,y,z + 1,t - 1]],
+--R [complexRoots= ?,coordinates= [x + 1,y,z - 1,t - 1]],
+--R
+--R 4 3 2
+--R [complexRoots= ? + 5? + 16? + 30? + 57,
+--R
+--R coordinates =
+--R 3 2 3 2
+--R [151x + 15%A + 54%A + 104%A + 93, 151y - 10%A - 36%A - 19%A -
62,
+--R 3 2 3 2
+--R 151z - 5%A - 18%A - 85%A - 31, 151t - 5%A - 18%A - 85%A - 31]
+--R ]
+--R ,
+--R
+--R 4 3 2
+--R [complexRoots= ? - ? - 2? + 3,
+--R 3 3 3
+--R coordinates= [x - %A + 2%A + 1,y + %A - %A - 1,z - %A,t + %A - %A
- 1]]
+--R ,
+--R
+--R 4 3 2
+--R [complexRoots= ? + 2? - 8? + 48,
+--R
+--R coordinates =
+--R 3 3 3
+--R [8x - %A + 4%A - 8,2y + %A,8z + %A - 8%A + 8,8t - %A + 4%A - 8]
+--R ]
+--R ,
+--R
+--R 5 4 3 2
+--R [complexRoots= ? + ? - 2? - 4? + 5? + 8,
+--R 3 3 3
+--R coordinates= [3x + %A - 1,3y + %A - 1,3z + %A - 1,t - %A]]
+--R ,
+--R 3
+--R [complexRoots= ? + 3? - 1,coordinates= [x - %A,y - %A,z - %A,t - %A]]]
+--RType: List Record(complexRoots: SparseUnivariatePolynomial
Integer,coordinates: List Polynomial Integer)
+--E 21
+
+--S 22 of 28
+ts := lts.1
+--R
+--R
+--R (22)
+--R 2 3 3
+--R {t + t + 1, z - z - t + t,
+--R
+--R 3 2 2 3 6 3 3 2
+--R (3z + 3t - 3)y + (3z + (6t - 6)z + 3t - 6t + 3)y + (3t - 3)z
+--R +
+--R 6 3 9 6 3
+--R (3t - 6t + 3)z + t - 3t + 5t - 3t
+--R ,
+--R x + y + z}
+--R Type:
RegularChain(Integer,[x,y,z,t])
+--E 22
+
+univariateSolve(ts)$pack
+--S 23 of 28
+--R
+--R
+--R (23)
+--R [
+--R 4 3 2
+--R [complexRoots= ? + 5? + 16? + 30? + 57,
+--R
+--R coordinates =
+--R 3 2 3 2
+--R [151x + 15%A + 54%A + 104%A + 93, 151y - 10%A - 36%A - 19%A -
62,
+--R 3 2 3 2
+--R 151z - 5%A - 18%A - 85%A - 31, 151t - 5%A - 18%A - 85%A - 31]
+--R ]
+--R ,
+--R
+--R 4 3 2
+--R [complexRoots= ? - ? - 2? + 3,
+--R 3 3 3
+--R coordinates= [x - %A + 2%A + 1,y + %A - %A - 1,z - %A,t + %A - %A
- 1]]
+--R ,
+--R
+--R 4 3 2
+--R [complexRoots= ? + 2? - 8? + 48,
+--R
+--R coordinates =
+--R 3 3 3
+--R [8x - %A + 4%A - 8,2y + %A,8z + %A - 8%A + 8,8t - %A + 4%A - 8]
+--R ]
+--R ]
+--RType: List Record(complexRoots: SparseUnivariatePolynomial
Integer,coordinates: List Polynomial Integer)
+--E 23
+
+--S 24
+realSolve(ts)$pack
+--R
+--R
+--R (24) []
+--R Type: List List RealClosure Fraction
Integer
+--E 24
+
+--S 25 of 28
+lr2 := realSolve(lf)$pack
+--R
+--R
+--R (25)
+--R [[0,- 1,1,1], [0,0,1,0], [1,0,0,0], [0,0,0,1], [0,1,0,0], [1,0,%B37,-
%B37],
+--R [1,0,%B38,- %B38], [0,1,%B35,- %B35], [0,1,%B36,- %B36], [- 1,0,1,1],
+--R
+--R [%B32,
+--R
+--R 1 15 2 14 1 13 4 12 11 11 4
10
+--R -- %B32 + -- %B32 + -- %B32 - -- %B32 - -- %B32 - -- %B32
+--R 27 27 27 27 27 27
+--R +
+--R 1 9 14 8 1 7 2 6 1 5 2 4
3
+--R -- %B32 + -- %B32 + -- %B32 + - %B32 + - %B32 + - %B32 + %B32
+--R 27 27 27 9 3 9
+--R +
+--R 4 2
+--R - %B32 - %B32 - 2
+--R 3
+--R ,
+--R
+--R 1 15 1 14 1 13 2 12 11 11 2
10
+--R - -- %B32 - -- %B32 - -- %B32 + -- %B32 + -- %B32 + --
%B32
+--R 54 27 54 27 54 27
+--R +
+--R 1 9 7 8 1 7 1 6 1 5 1 4
3
+--R - -- %B32 - -- %B32 - -- %B32 - - %B32 - - %B32 - - %B32 -
%B32
+--R 54 27 54 9 6 9
+--R +
+--R 2 2 1 3
+--R - - %B32 + - %B32 + -
+--R 3 2 2
+--R ,
+--R
+--R 1 15 1 14 1 13 2 12 11 11 2
10
+--R - -- %B32 - -- %B32 - -- %B32 + -- %B32 + -- %B32 + --
%B32
+--R 54 27 54 27 54 27
+--R +
+--R 1 9 7 8 1 7 1 6 1 5 1 4
3
+--R - -- %B32 - -- %B32 - -- %B32 - - %B32 - - %B32 - - %B32 -
%B32
+--R 54 27 54 9 6 9
+--R +
+--R 2 2 1 3
+--R - - %B32 + - %B32 + -
+--R 3 2 2
+--R ]
+--R ,
+--R
+--R [%B33,
+--R
+--R 1 15 2 14 1 13 4 12 11 11 4
10
+--R -- %B33 + -- %B33 + -- %B33 - -- %B33 - -- %B33 - -- %B33
+--R 27 27 27 27 27 27
+--R +
+--R 1 9 14 8 1 7 2 6 1 5 2 4
3
+--R -- %B33 + -- %B33 + -- %B33 + - %B33 + - %B33 + - %B33 + %B33
+--R 27 27 27 9 3 9
+--R +
+--R 4 2
+--R - %B33 - %B33 - 2
+--R 3
+--R ,
+--R
+--R 1 15 1 14 1 13 2 12 11 11 2
10
+--R - -- %B33 - -- %B33 - -- %B33 + -- %B33 + -- %B33 + --
%B33
+--R 54 27 54 27 54 27
+--R +
+--R 1 9 7 8 1 7 1 6 1 5 1 4
3
+--R - -- %B33 - -- %B33 - -- %B33 - - %B33 - - %B33 - - %B33 -
%B33
+--R 54 27 54 9 6 9
+--R +
+--R 2 2 1 3
+--R - - %B33 + - %B33 + -
+--R 3 2 2
+--R ,
+--R
+--R 1 15 1 14 1 13 2 12 11 11 2
10
+--R - -- %B33 - -- %B33 - -- %B33 + -- %B33 + -- %B33 + --
%B33
+--R 54 27 54 27 54 27
+--R +
+--R 1 9 7 8 1 7 1 6 1 5 1 4
3
+--R - -- %B33 - -- %B33 - -- %B33 - - %B33 - - %B33 - - %B33 -
%B33
+--R 54 27 54 9 6 9
+--R +
+--R 2 2 1 3
+--R - - %B33 + - %B33 + -
+--R 3 2 2
+--R ]
+--R ,
+--R
+--R [%B34,
+--R
+--R 1 15 2 14 1 13 4 12 11 11 4
10
+--R -- %B34 + -- %B34 + -- %B34 - -- %B34 - -- %B34 - -- %B34
+--R 27 27 27 27 27 27
+--R +
+--R 1 9 14 8 1 7 2 6 1 5 2 4
3
+--R -- %B34 + -- %B34 + -- %B34 + - %B34 + - %B34 + - %B34 + %B34
+--R 27 27 27 9 3 9
+--R +
+--R 4 2
+--R - %B34 - %B34 - 2
+--R 3
+--R ,
+--R
+--R 1 15 1 14 1 13 2 12 11 11 2
10
+--R - -- %B34 - -- %B34 - -- %B34 + -- %B34 + -- %B34 + --
%B34
+--R 54 27 54 27 54 27
+--R +
+--R 1 9 7 8 1 7 1 6 1 5 1 4
3
+--R - -- %B34 - -- %B34 - -- %B34 - - %B34 - - %B34 - - %B34 -
%B34
+--R 54 27 54 9 6 9
+--R +
+--R 2 2 1 3
+--R - - %B34 + - %B34 + -
+--R 3 2 2
+--R ,
+--R
+--R 1 15 1 14 1 13 2 12 11 11 2
10
+--R - -- %B34 - -- %B34 - -- %B34 + -- %B34 + -- %B34 + --
%B34
+--R 54 27 54 27 54 27
+--R +
+--R 1 9 7 8 1 7 1 6 1 5 1 4
3
+--R - -- %B34 - -- %B34 - -- %B34 - - %B34 - - %B34 - - %B34 -
%B34
+--R 54 27 54 9 6 9
+--R +
+--R 2 2 1 3
+--R - - %B34 + - %B34 + -
+--R 3 2 2
+--R ]
+--R ,
+--R [- 1,1,0,1], [- 1,1,1,0],
+--R
+--R [%B23,
+--R
+--R 1 15 1 14 1 13 2 12 11 11 2
10
+--R - -- %B23 - -- %B23 - -- %B23 + -- %B23 + -- %B23 + --
%B23
+--R 54 27 54 27 54 27
+--R +
+--R 1 9 7 8 1 7 1 6 1 5 1 4
3
+--R - -- %B23 - -- %B23 - -- %B23 - - %B23 - - %B23 - - %B23 -
%B23
+--R 54 27 54 9 6 9
+--R +
+--R 2 2 1 3
+--R - - %B23 + - %B23 + -
+--R 3 2 2
+--R ,
+--R %B30,
+--R
+--R 1 15 1 14 1 13 2 12 11 11
+--R - %B30 + -- %B23 + -- %B23 + -- %B23 - -- %B23 - -- %B23
+--R 54 27 54 27 54
+--R +
+--R 2 10 1 9 7 8 1 7 1 6 1 5
+--R - -- %B23 + -- %B23 + -- %B23 + -- %B23 + - %B23 + - %B23
+--R 27 54 27 54 9 6
+--R +
+--R 1 4 2 2 1 1
+--R - %B23 + - %B23 - - %B23 - -
+--R 9 3 2 2
+--R ]
+--R ,
+--R
+--R [%B23,
+--R
+--R 1 15 1 14 1 13 2 12 11 11 2
10
+--R - -- %B23 - -- %B23 - -- %B23 + -- %B23 + -- %B23 + --
%B23
+--R 54 27 54 27 54 27
+--R +
+--R 1 9 7 8 1 7 1 6 1 5 1 4
3
+--R - -- %B23 - -- %B23 - -- %B23 - - %B23 - - %B23 - - %B23 -
%B23
+--R 54 27 54 9 6 9
+--R +
+--R 2 2 1 3
+--R - - %B23 + - %B23 + -
+--R 3 2 2
+--R ,
+--R %B31,
+--R
+--R 1 15 1 14 1 13 2 12 11 11
+--R - %B31 + -- %B23 + -- %B23 + -- %B23 - -- %B23 - -- %B23
+--R 54 27 54 27 54
+--R +
+--R 2 10 1 9 7 8 1 7 1 6 1 5
+--R - -- %B23 + -- %B23 + -- %B23 + -- %B23 + - %B23 + - %B23
+--R 27 54 27 54 9 6
+--R +
+--R 1 4 2 2 1 1
+--R - %B23 + - %B23 - - %B23 - -
+--R 9 3 2 2
+--R ]
+--R ,
+--R
+--R [%B24,
+--R
+--R 1 15 1 14 1 13 2 12 11 11 2
10
+--R - -- %B24 - -- %B24 - -- %B24 + -- %B24 + -- %B24 + --
%B24
+--R 54 27 54 27 54 27
+--R +
+--R 1 9 7 8 1 7 1 6 1 5 1 4
3
+--R - -- %B24 - -- %B24 - -- %B24 - - %B24 - - %B24 - - %B24 -
%B24
+--R 54 27 54 9 6 9
+--R +
+--R 2 2 1 3
+--R - - %B24 + - %B24 + -
+--R 3 2 2
+--R ,
+--R %B28,
+--R
+--R 1 15 1 14 1 13 2 12 11 11
+--R - %B28 + -- %B24 + -- %B24 + -- %B24 - -- %B24 - -- %B24
+--R 54 27 54 27 54
+--R +
+--R 2 10 1 9 7 8 1 7 1 6 1 5
+--R - -- %B24 + -- %B24 + -- %B24 + -- %B24 + - %B24 + - %B24
+--R 27 54 27 54 9 6
+--R +
+--R 1 4 2 2 1 1
+--R - %B24 + - %B24 - - %B24 - -
+--R 9 3 2 2
+--R ]
+--R ,
+--R
+--R [%B24,
+--R
+--R 1 15 1 14 1 13 2 12 11 11 2
10
+--R - -- %B24 - -- %B24 - -- %B24 + -- %B24 + -- %B24 + --
%B24
+--R 54 27 54 27 54 27
+--R +
+--R 1 9 7 8 1 7 1 6 1 5 1 4
3
+--R - -- %B24 - -- %B24 - -- %B24 - - %B24 - - %B24 - - %B24 -
%B24
+--R 54 27 54 9 6 9
+--R +
+--R 2 2 1 3
+--R - - %B24 + - %B24 + -
+--R 3 2 2
+--R ,
+--R %B29,
+--R
+--R 1 15 1 14 1 13 2 12 11 11
+--R - %B29 + -- %B24 + -- %B24 + -- %B24 - -- %B24 - -- %B24
+--R 54 27 54 27 54
+--R +
+--R 2 10 1 9 7 8 1 7 1 6 1 5
+--R - -- %B24 + -- %B24 + -- %B24 + -- %B24 + - %B24 + - %B24
+--R 27 54 27 54 9 6
+--R +
+--R 1 4 2 2 1 1
+--R - %B24 + - %B24 - - %B24 - -
+--R 9 3 2 2
+--R ]
+--R ,
+--R
+--R [%B25,
+--R
+--R 1 15 1 14 1 13 2 12 11 11 2
10
+--R - -- %B25 - -- %B25 - -- %B25 + -- %B25 + -- %B25 + --
%B25
+--R 54 27 54 27 54 27
+--R +
+--R 1 9 7 8 1 7 1 6 1 5 1 4
3
+--R - -- %B25 - -- %B25 - -- %B25 - - %B25 - - %B25 - - %B25 -
%B25
+--R 54 27 54 9 6 9
+--R +
+--R 2 2 1 3
+--R - - %B25 + - %B25 + -
+--R 3 2 2
+--R ,
+--R %B26,
+--R
+--R 1 15 1 14 1 13 2 12 11 11
+--R - %B26 + -- %B25 + -- %B25 + -- %B25 - -- %B25 - -- %B25
+--R 54 27 54 27 54
+--R +
+--R 2 10 1 9 7 8 1 7 1 6 1 5
+--R - -- %B25 + -- %B25 + -- %B25 + -- %B25 + - %B25 + - %B25
+--R 27 54 27 54 9 6
+--R +
+--R 1 4 2 2 1 1
+--R - %B25 + - %B25 - - %B25 - -
+--R 9 3 2 2
+--R ]
+--R ,
+--R
+--R [%B25,
+--R
+--R 1 15 1 14 1 13 2 12 11 11 2
10
+--R - -- %B25 - -- %B25 - -- %B25 + -- %B25 + -- %B25 + --
%B25
+--R 54 27 54 27 54 27
+--R +
+--R 1 9 7 8 1 7 1 6 1 5 1 4
3
+--R - -- %B25 - -- %B25 - -- %B25 - - %B25 - - %B25 - - %B25 -
%B25
+--R 54 27 54 9 6 9
+--R +
+--R 2 2 1 3
+--R - - %B25 + - %B25 + -
+--R 3 2 2
+--R ,
+--R %B27,
+--R
+--R 1 15 1 14 1 13 2 12 11 11
+--R - %B27 + -- %B25 + -- %B25 + -- %B25 - -- %B25 - -- %B25
+--R 54 27 54 27 54
+--R +
+--R 2 10 1 9 7 8 1 7 1 6 1 5
+--R - -- %B25 + -- %B25 + -- %B25 + -- %B25 + - %B25 + - %B25
+--R 27 54 27 54 9 6
+--R +
+--R 1 4 2 2 1 1
+--R - %B25 + - %B25 - - %B25 - -
+--R 9 3 2 2
+--R ]
+--R ,
+--R [1,%B21,- %B21,0], [1,%B22,- %B22,0], [1,%B19,0,- %B19], [1,%B20,0,-
%B20],
+--R 1 3 1 1 3 1 1 3 1
+--R [%B17,- - %B17 + -,- - %B17 + -,- - %B17 + -],
+--R 3 3 3 3 3 3
+--R 1 3 1 1 3 1 1 3 1
+--R [%B18,- - %B18 + -,- - %B18 + -,- - %B18 + -]]
+--R 3 3 3 3 3 3
+--R Type: List List RealClosure Fraction
Integer
+--E 25
+
+--S 26 of 28
+#lr2
+--R
+--R
+--R (26) 27
+--R Type:
PositiveInteger
+--E 26
+
+--S 27 of 28
+lpr2 := positiveSolve(lf)$pack
+--R
+--R
+--R 1 3 1 1 3 1 1 3 1
+--R (27) [[%B40,- - %B40 + -,- - %B40 + -,- - %B40 + -]]
+--R 3 3 3 3 3 3
+--R Type: List List RealClosure Fraction
Integer
+--E 27
+
+--S 28 of 28
+[approximate(r,1/10**21)::Float for r in lpr2.1]
+--R
+--R
+--R (28)
+--R [0.3221853546 2608559291, 0.3221853546 2608559291, 0.3221853546
2608559291,
+--R 0.3221853546 2608559291]
+--R Type: List
Float
+--E 28
+)spool
+)lisp (bye)
+@
+<<ZeroDimensionalSolvePackage.help>>=
+====================================================================
+ZeroDimensionalSolvePackage examples
+====================================================================
+
+The ZeroDimensionalSolvePackage package constructor provides
+operations for computing symbolically the complex or real roots of
+zero-dimensional algebraic systems.
+
+The package provides no multiplicity information (i.e. some returned
+roots may be double or higher) but only distinct roots are returned.
+
+Complex roots are given by means of univariate representations of
+irreducible regular chains. These representations are computed by the
+univariateSolve operation (by calling the
+InternalRationalUnivariateRepresentationPackage package constructor
+which does the job).
+
+Real roots are given by means of tuples of coordinates lying in the
+RealClosure of the coefficient ring. They are computed by the
+realSolve and positiveSolve operations. The former computes all the
+solutions of the input system with real coordinates whereas the later
+concentrate on the solutions with (strictly) positive coordinates. In
+both cases, the computations are performed by the RealClosure constructor.
+
+Both computations of complex roots and real roots rely on triangular
+decompositions. These decompositions can be computed in two different
+ways. First, by a applying the zeroSetSplit operation from the REGSET
+domain constructor. In that case, no Groebner bases are computed.
+This strategy is used by default. Secondly, by applying the zeroSetSplit
+from LEXTRIPK. To use this later strategy with the operations
+univariateSolve, realSolve and positiveSolve one just needs to use an
+extra boolean argument.
+
+Note that the way of understanding triangular decompositions is
+detailed in the example of the RegularTriangularSet constructor.
+
+The ZeroDimensionalSolvePackage constructor takes three arguments.The
+first one R is the coefficient ring; it must belong to the categories
+OrderedRing, EuclideanDomain, CharacteristicZero and RealConstant. This
+means essentially that R is Integer or Fraction(Integer). The second
+argument ls is the list of variables involved in the systems to solve.
+The third one MUST BE concat(ls,s) where s is an additional symbol used
+for the univariate representations. The abbreviation for
+ZeroDimensionalSolvePackage is ZDSOLVE.
+
+We illustrate now how to use the constructor ZDSOLVE by two examples:
+the Arnborg and Lazard system and the L-3 system (Aubry and Moreno
+Maza). Note that the use of this package is also demonstrated in the
+example of the LexTriangularPackage constructor.
+
+Define the coefficient ring.
+
+ R := Integer
+ Integer
+ Type: Domain
+
+Define the lists of variables:
+
+ ls : List Symbol := [x,y,z,t]
+ [x,y,z,t]
+ Type: List Symbol
+
+and:
+
+ ls2 : List Symbol := [x,y,z,t,new()$Symbol]
+ [x,y,z,t,%A]
+ Type: List Symbol
+
+Call the package:
+
+ pack := ZDSOLVE(R,ls,ls2)
+ ZeroDimensionalSolvePackage(Integer,[x,y,z,t],[x,y,z,t,%A])
+ Type: Domain
+
+Define a polynomial system (Arnborg-Lazard)
+
+ p1 := x**2*y*z + x*y**2*z + x*y*z**2 + x*y*z + x*y + x*z + y*z
+ 2 2 2
+ x y z + (x y + (x + x + 1)y + x)z + x y
+ Type: Polynomial Integer
+
+ p2 := x**2*y**2*z + x*y**2*z**2 + x**2*y*z + x*y*z + y*z + x + z
+ 2 2 2 2 2
+ x y z + (x y + (x + x + 1)y + 1)z + x
+ Type: Polynomial Integer
+
+ p3 := x**2*y**2*z**2 + x**2*y**2*z + x*y**2*z + x*y*z + x*z + z + 1
+ 2 2 2 2 2
+ x y z + ((x + x)y + x y + x + 1)z + 1
+ Type: Polynomial Integer
+
+ lp := [p1, p2, p3]
+ 2 2 2
+ [x y z + (x y + (x + x + 1)y + x)z + x y,
+ 2 2 2 2 2
+ x y z + (x y + (x + x + 1)y + 1)z + x,
+ 2 2 2 2 2
+ x y z + ((x + x)y + x y + x + 1)z + 1]
+ Type: List Polynomial Integer
+
+Note that these polynomials do not involve the variable t; we will use
+it in the second example.
+
+First compute a decomposition into regular chains (i.e. regular
+triangular sets).
+
+ triangSolve(lp)$pack
+ [
+ {
+ 20 19 18 17 16 15 14 13 12
+ z - 6z - 41z + 71z + 106z + 92z + 197z + 145z + 257z
+ +
+ 11 10 9 8 7 6 5 4 3
+ 278z + 201z + 278z + 257z + 145z + 197z + 92z + 106z + 71z
+ +
+ 2
+ - 41z - 6z + 1
+ ,
+ 19 18 17 16
+ 14745844z + 50357474z - 130948857z - 185261586z
+ +
+ 15 14 13 12
+ - 180077775z - 338007307z - 275379623z - 453190404z
+ +
+ 11 10 9 8
+ - 474597456z - 366147695z - 481433567z - 430613166z
+ +
+ 7 6 5 4
+ - 261878358z - 326073537z - 163008796z - 177213227z
+ +
+ 3 2
+ - 104356755z + 65241699z + 9237732z - 1567348
+ *
+ y
+ +
+ 19 18 17 16 15
+ 1917314z + 6508991z - 16973165z - 24000259z - 23349192z
+ +
+ 14 13 12 11 10
+ - 43786426z - 35696474z - 58724172z - 61480792z - 47452440z
+ +
+ 9 8 7 6 5
+ - 62378085z - 55776527z - 33940618z - 42233406z - 21122875z
+ +
+ 4 3 2
+ - 22958177z - 13504569z + 8448317z + 1195888z - 202934
+ ,
+ 3 2 3 2 2 2
+ ((z - 2z)y + (- z - z - 2z - 1)y - z - z + 1)x + z - 1}
+ ]
+ Type: List RegularChain(Integer,[x,y,z,t])
+
+We can see easily from this decomposition (consisting of a single
+regular chain) that the input system has 20 complex roots.
+
+Then we compute a univariate representation of this regular chain.
+
+ univariateSolve(lp)$pack
+ [
+ [
+ complexRoots =
+ 12 11 10 9 8 7 6 5 4 3
+ ? - 12? + 24? + 4? - 9? + 27? - 21? + 27? - 9? + 4?
+ +
+ 2
+ 24? - 12? + 1
+ ,
+ coordinates =
+ [
+ 11 10 9 8 7 6
+ 63x + 62%A - 721%A + 1220%A + 705%A - 285%A + 1512%A
+ +
+ 5 4 3 2
+ - 735%A + 1401%A - 21%A + 215%A + 1577%A - 142
+ ,
+ 11 10 9 8 7 6
+ 63y - 75%A + 890%A - 1682%A - 516%A + 588%A - 1953%A
+ +
+ 5 4 3 2
+ 1323%A - 1815%A + 426%A - 243%A - 1801%A + 679
+ ,
+ z - %A]
+ ]
+ ,
+ 6 5 4 3 2
+ [complexRoots= ? + ? + ? + ? + ? + ? + 1,
+ 5 3
+ coordinates= [x - %A ,y - %A ,z - %A]]
+ ,
+ 2
+ [complexRoots= ? + 5? + 1,coordinates= [x - 1,y - 1,z - %A]]]
+ Type: List Record(complexRoots: SparseUnivariatePolynomial Integer,
+ coordinates: List Polynomial Integer)
+
+We see that the zeros of our regular chain are split into three components.
+This is due to the use of univariate polynomial factorization.
+
+Each of these components consist of two parts. The first one is an
+irreducible univariate polynomial p(?) which defines a simple
+algebraic extension of the field of fractions of R. The second one
+consists of multivariate polynomials pol1(x,%A), pol2(y,%A) and
+pol3(z,%A). Each of these polynomials involve two variables: one is
+an indeterminate x, y or z of the input system lp and the other is %A
+which represents any root of p(?). Recall that this %A is the last
+element of the third parameter of ZDSOLVE. Thus any complex root ? of
+p(?) leads to a solution of the input system lp by replacing %A by
+this ? in pol1(x,%A), pol2(y,%A) and pol3(z,%A). Note that the
+polynomials pol1(x,%A), pol2(y,%A) and pol3(z,%A) have degree one
+w.r.t. x, y or z respectively. This is always the case for all
+univariate representations. Hence the operation univariateSolve
+replaces a system of multivariate polynomials by a list of univariate
+polynomials, what justifies its name. Another example of univariate
+representations illustrates the LexTriangularPackage package constructor.
+
+We now compute the solutions with real coordinates:
+
+ lr := realSolve(lp)$pack
+ [
+ [%B1,
+ 1184459 19 2335702 18 5460230 17 79900378 16
+ ------- %B1 - ------- %B1 - ------- %B1 + -------- %B1
+ 1645371 548457 182819 1645371
+ +
+ 43953929 15 13420192 14 553986 13 193381378 12
+ -------- %B1 + -------- %B1 + ------ %B1 + --------- %B1
+ 548457 182819 3731 1645371
+ +
+ 35978916 11 358660781 10 271667666 9 118784873 8
+ -------- %B1 + --------- %B1 + --------- %B1 + --------- %B1
+ 182819 1645371 1645371 548457
+ +
+ 337505020 7 1389370 6 688291 5 3378002 4
+ --------- %B1 + ------- %B1 + ------ %B1 + ------- %B1
+ 1645371 11193 4459 42189
+ +
+ 140671876 3 32325724 2 8270 9741532
+ --------- %B1 + -------- %B1 - ---- %B1 - -------
+ 1645371 548457 343 1645371
+ ,
+ 91729 19 487915 18 4114333 17 1276987 16
+ - ------ %B1 + ------ %B1 + ------- %B1 - ------- %B1
+ 705159 705159 705159 235053
+ +
+ 13243117 15 16292173 14 26536060 13 722714 12
+ - -------- %B1 - -------- %B1 - -------- %B1 - ------ %B1
+ 705159 705159 705159 18081
+ +
+ 5382578 11 15449995 10 14279770 9 6603890 8
+ - ------- %B1 - -------- %B1 - -------- %B1 - ------- %B1
+ 100737 235053 235053 100737
+ +
+ 409930 7 37340389 6 34893715 5 26686318 4
+ - ------ %B1 - -------- %B1 - -------- %B1 - -------- %B1
+ 6027 705159 705159 705159
+ +
+ 801511 3 17206178 2 4406102 377534
+ - ------ %B1 - -------- %B1 - ------- %B1 + ------
+ 26117 705159 705159 705159
+ ]
+ ,
+ [%B2,
+ 1184459 19 2335702 18 5460230 17 79900378 16
+ ------- %B2 - ------- %B2 - ------- %B2 + -------- %B2
+ 1645371 548457 182819 1645371
+ +
+ 43953929 15 13420192 14 553986 13 193381378 12
+ -------- %B2 + -------- %B2 + ------ %B2 + --------- %B2
+ 548457 182819 3731 1645371
+ +
+ 35978916 11 358660781 10 271667666 9 118784873 8
+ -------- %B2 + --------- %B2 + --------- %B2 + --------- %B2
+ 182819 1645371 1645371 548457
+ +
+ 337505020 7 1389370 6 688291 5 3378002 4
+ --------- %B2 + ------- %B2 + ------ %B2 + ------- %B2
+ 1645371 11193 4459 42189
+ +
+ 140671876 3 32325724 2 8270 9741532
+ --------- %B2 + -------- %B2 - ---- %B2 - -------
+ 1645371 548457 343 1645371
+ ,
+ 91729 19 487915 18 4114333 17 1276987 16
+ - ------ %B2 + ------ %B2 + ------- %B2 - ------- %B2
+ 705159 705159 705159 235053
+ +
+ 13243117 15 16292173 14 26536060 13 722714 12
+ - -------- %B2 - -------- %B2 - -------- %B2 - ------ %B2
+ 705159 705159 705159 18081
+ +
+ 5382578 11 15449995 10 14279770 9 6603890 8
+ - ------- %B2 - -------- %B2 - -------- %B2 - ------- %B2
+ 100737 235053 235053 100737
+ +
+ 409930 7 37340389 6 34893715 5 26686318 4
+ - ------ %B2 - -------- %B2 - -------- %B2 - -------- %B2
+ 6027 705159 705159 705159
+ +
+ 801511 3 17206178 2 4406102 377534
+ - ------ %B2 - -------- %B2 - ------- %B2 + ------
+ 26117 705159 705159 705159
+ ]
+ ,
+ [%B3,
+ 1184459 19 2335702 18 5460230 17 79900378 16
+ ------- %B3 - ------- %B3 - ------- %B3 + -------- %B3
+ 1645371 548457 182819 1645371
+ +
+ 43953929 15 13420192 14 553986 13 193381378 12
+ -------- %B3 + -------- %B3 + ------ %B3 + --------- %B3
+ 548457 182819 3731 1645371
+ +
+ 35978916 11 358660781 10 271667666 9 118784873 8
+ -------- %B3 + --------- %B3 + --------- %B3 + --------- %B3
+ 182819 1645371 1645371 548457
+ +
+ 337505020 7 1389370 6 688291 5 3378002 4
+ --------- %B3 + ------- %B3 + ------ %B3 + ------- %B3
+ 1645371 11193 4459 42189
+ +
+ 140671876 3 32325724 2 8270 9741532
+ --------- %B3 + -------- %B3 - ---- %B3 - -------
+ 1645371 548457 343 1645371
+ ,
+ 91729 19 487915 18 4114333 17 1276987 16
+ - ------ %B3 + ------ %B3 + ------- %B3 - ------- %B3
+ 705159 705159 705159 235053
+ +
+ 13243117 15 16292173 14 26536060 13 722714 12
+ - -------- %B3 - -------- %B3 - -------- %B3 - ------ %B3
+ 705159 705159 705159 18081
+ +
+ 5382578 11 15449995 10 14279770 9 6603890 8
+ - ------- %B3 - -------- %B3 - -------- %B3 - ------- %B3
+ 100737 235053 235053 100737
+ +
+ 409930 7 37340389 6 34893715 5 26686318 4
+ - ------ %B3 - -------- %B3 - -------- %B3 - -------- %B3
+ 6027 705159 705159 705159
+ +
+ 801511 3 17206178 2 4406102 377534
+ - ------ %B3 - -------- %B3 - ------- %B3 + ------
+ 26117 705159 705159 705159
+ ]
+ ,
+ [%B4,
+ 1184459 19 2335702 18 5460230 17 79900378 16
+ ------- %B4 - ------- %B4 - ------- %B4 + -------- %B4
+ 1645371 548457 182819 1645371
+ +
+ 43953929 15 13420192 14 553986 13 193381378 12
+ -------- %B4 + -------- %B4 + ------ %B4 + --------- %B4
+ 548457 182819 3731 1645371
+ +
+ 35978916 11 358660781 10 271667666 9 118784873 8
+ -------- %B4 + --------- %B4 + --------- %B4 + --------- %B4
+ 182819 1645371 1645371 548457
+ +
+ 337505020 7 1389370 6 688291 5 3378002 4
+ --------- %B4 + ------- %B4 + ------ %B4 + ------- %B4
+ 1645371 11193 4459 42189
+ +
+ 140671876 3 32325724 2 8270 9741532
+ --------- %B4 + -------- %B4 - ---- %B4 - -------
+ 1645371 548457 343 1645371
+ ,
+ 91729 19 487915 18 4114333 17 1276987 16
+ - ------ %B4 + ------ %B4 + ------- %B4 - ------- %B4
+ 705159 705159 705159 235053
+ +
+ 13243117 15 16292173 14 26536060 13 722714 12
+ - -------- %B4 - -------- %B4 - -------- %B4 - ------ %B4
+ 705159 705159 705159 18081
+ +
+ 5382578 11 15449995 10 14279770 9 6603890 8
+ - ------- %B4 - -------- %B4 - -------- %B4 - ------- %B4
+ 100737 235053 235053 100737
+ +
+ 409930 7 37340389 6 34893715 5 26686318 4
+ - ------ %B4 - -------- %B4 - -------- %B4 - -------- %B4
+ 6027 705159 705159 705159
+ +
+ 801511 3 17206178 2 4406102 377534
+ - ------ %B4 - -------- %B4 - ------- %B4 + ------
+ 26117 705159 705159 705159
+ ]
+ ,
+ [%B5,
+ 1184459 19 2335702 18 5460230 17 79900378 16
+ ------- %B5 - ------- %B5 - ------- %B5 + -------- %B5
+ 1645371 548457 182819 1645371
+ +
+ 43953929 15 13420192 14 553986 13 193381378 12
+ -------- %B5 + -------- %B5 + ------ %B5 + --------- %B5
+ 548457 182819 3731 1645371
+ +
+ 35978916 11 358660781 10 271667666 9 118784873 8
+ -------- %B5 + --------- %B5 + --------- %B5 + --------- %B5
+ 182819 1645371 1645371 548457
+ +
+ 337505020 7 1389370 6 688291 5 3378002 4
+ --------- %B5 + ------- %B5 + ------ %B5 + ------- %B5
+ 1645371 11193 4459 42189
+ +
+ 140671876 3 32325724 2 8270 9741532
+ --------- %B5 + -------- %B5 - ---- %B5 - -------
+ 1645371 548457 343 1645371
+ ,
+ 91729 19 487915 18 4114333 17 1276987 16
+ - ------ %B5 + ------ %B5 + ------- %B5 - ------- %B5
+ 705159 705159 705159 235053
+ +
+ 13243117 15 16292173 14 26536060 13 722714 12
+ - -------- %B5 - -------- %B5 - -------- %B5 - ------ %B5
+ 705159 705159 705159 18081
+ +
+ 5382578 11 15449995 10 14279770 9 6603890 8
+ - ------- %B5 - -------- %B5 - -------- %B5 - ------- %B5
+ 100737 235053 235053 100737
+ +
+ 409930 7 37340389 6 34893715 5 26686318 4
+ - ------ %B5 - -------- %B5 - -------- %B5 - -------- %B5
+ 6027 705159 705159 705159
+ +
+ 801511 3 17206178 2 4406102 377534
+ - ------ %B5 - -------- %B5 - ------- %B5 + ------
+ 26117 705159 705159 705159
+ ]
+ ,
+ [%B6,
+ 1184459 19 2335702 18 5460230 17 79900378 16
+ ------- %B6 - ------- %B6 - ------- %B6 + -------- %B6
+ 1645371 548457 182819 1645371
+ +
+ 43953929 15 13420192 14 553986 13 193381378 12
+ -------- %B6 + -------- %B6 + ------ %B6 + --------- %B6
+ 548457 182819 3731 1645371
+ +
+ 35978916 11 358660781 10 271667666 9 118784873 8
+ -------- %B6 + --------- %B6 + --------- %B6 + --------- %B6
+ 182819 1645371 1645371 548457
+ +
+ 337505020 7 1389370 6 688291 5 3378002 4
+ --------- %B6 + ------- %B6 + ------ %B6 + ------- %B6
+ 1645371 11193 4459 42189
+ +
+ 140671876 3 32325724 2 8270 9741532
+ --------- %B6 + -------- %B6 - ---- %B6 - -------
+ 1645371 548457 343 1645371
+ ,
+ 91729 19 487915 18 4114333 17 1276987 16
+ - ------ %B6 + ------ %B6 + ------- %B6 - ------- %B6
+ 705159 705159 705159 235053
+ +
+ 13243117 15 16292173 14 26536060 13 722714 12
+ - -------- %B6 - -------- %B6 - -------- %B6 - ------ %B6
+ 705159 705159 705159 18081
+ +
+ 5382578 11 15449995 10 14279770 9 6603890 8
+ - ------- %B6 - -------- %B6 - -------- %B6 - ------- %B6
+ 100737 235053 235053 100737
+ +
+ 409930 7 37340389 6 34893715 5 26686318 4
+ - ------ %B6 - -------- %B6 - -------- %B6 - -------- %B6
+ 6027 705159 705159 705159
+ +
+ 801511 3 17206178 2 4406102 377534
+ - ------ %B6 - -------- %B6 - ------- %B6 + ------
+ 26117 705159 705159 705159
+ ]
+ ,
+ [%B7,
+ 1184459 19 2335702 18 5460230 17 79900378 16
+ ------- %B7 - ------- %B7 - ------- %B7 + -------- %B7
+ 1645371 548457 182819 1645371
+ +
+ 43953929 15 13420192 14 553986 13 193381378 12
+ -------- %B7 + -------- %B7 + ------ %B7 + --------- %B7
+ 548457 182819 3731 1645371
+ +
+ 35978916 11 358660781 10 271667666 9 118784873 8
+ -------- %B7 + --------- %B7 + --------- %B7 + --------- %B7
+ 182819 1645371 1645371 548457
+ +
+ 337505020 7 1389370 6 688291 5 3378002 4
+ --------- %B7 + ------- %B7 + ------ %B7 + ------- %B7
+ 1645371 11193 4459 42189
+ +
+ 140671876 3 32325724 2 8270 9741532
+ --------- %B7 + -------- %B7 - ---- %B7 - -------
+ 1645371 548457 343 1645371
+ ,
+ 91729 19 487915 18 4114333 17 1276987 16
+ - ------ %B7 + ------ %B7 + ------- %B7 - ------- %B7
+ 705159 705159 705159 235053
+ +
+ 13243117 15 16292173 14 26536060 13 722714 12
+ - -------- %B7 - -------- %B7 - -------- %B7 - ------ %B7
+ 705159 705159 705159 18081
+ +
+ 5382578 11 15449995 10 14279770 9 6603890 8
+ - ------- %B7 - -------- %B7 - -------- %B7 - ------- %B7
+ 100737 235053 235053 100737
+ +
+ 409930 7 37340389 6 34893715 5 26686318 4
+ - ------ %B7 - -------- %B7 - -------- %B7 - -------- %B7
+ 6027 705159 705159 705159
+ +
+ 801511 3 17206178 2 4406102 377534
+ - ------ %B7 - -------- %B7 - ------- %B7 + ------
+ 26117 705159 705159 705159
+ ]
+ ,
+ [%B8,
+ 1184459 19 2335702 18 5460230 17 79900378 16
+ ------- %B8 - ------- %B8 - ------- %B8 + -------- %B8
+ 1645371 548457 182819 1645371
+ +
+ 43953929 15 13420192 14 553986 13 193381378 12
+ -------- %B8 + -------- %B8 + ------ %B8 + --------- %B8
+ 548457 182819 3731 1645371
+ +
+ 35978916 11 358660781 10 271667666 9 118784873 8
+ -------- %B8 + --------- %B8 + --------- %B8 + --------- %B8
+ 182819 1645371 1645371 548457
+ +
+ 337505020 7 1389370 6 688291 5 3378002 4
+ --------- %B8 + ------- %B8 + ------ %B8 + ------- %B8
+ 1645371 11193 4459 42189
+ +
+ 140671876 3 32325724 2 8270 9741532
+ --------- %B8 + -------- %B8 - ---- %B8 - -------
+ 1645371 548457 343 1645371
+ ,
+ 91729 19 487915 18 4114333 17 1276987 16
+ - ------ %B8 + ------ %B8 + ------- %B8 - ------- %B8
+ 705159 705159 705159 235053
+ +
+ 13243117 15 16292173 14 26536060 13 722714 12
+ - -------- %B8 - -------- %B8 - -------- %B8 - ------ %B8
+ 705159 705159 705159 18081
+ +
+ 5382578 11 15449995 10 14279770 9 6603890 8
+ - ------- %B8 - -------- %B8 - -------- %B8 - ------- %B8
+ 100737 235053 235053 100737
+ +
+ 409930 7 37340389 6 34893715 5 26686318 4
+ - ------ %B8 - -------- %B8 - -------- %B8 - -------- %B8
+ 6027 705159 705159 705159
+ +
+ 801511 3 17206178 2 4406102 377534
+ - ------ %B8 - -------- %B8 - ------- %B8 + ------
+ 26117 705159 705159 705159
+ ]
+ ]
+ Type: List List RealClosure Fraction Integer
+
+The number of real solutions for the input system is:
+
+ # lr
+ 8
+ Type: PositiveInteger
+
+Each of these real solutions is given by a list of elements in
+RealClosure(R). In these 8 lists, the first element is a value of z,
+the second of y and the last of x. This is logical since by setting
+the list of variables of the package to [x,y,z,t] we mean that the
+elimination ordering on the variables is t < z < y < x. Note that
+each system treated by the ZDSOLVE package constructor needs only to
+be zero-dimensional w.r.t. the variables involved in the system it-self
+and not necessarily w.r.t. all the variables used to define the package.
+
+We can approximate these real numbers as follows. This computation
+takes between 30 sec. and 5 min, depending on your machine.
+
+ [ [approximate(r,1/1000000) for r in point] for point in lr]
+ [
+ 10048059
+ [- --------,
+ 2097152
+
+ 4503057316985387943524397913838966414596731976211768219335881208385516_
+ 314058924567176091423629695777403099833360761048898228916578137094309_
+ 838597331137202584846939132376157019506760357601165917454986815382098_
+ 789094851523420392811293126141329856546977145464661495487825919941188_
+ 447041722440491921567263542158028061437758844364634410045253024786561_
+ 923163288214175
+ /
+ 4503057283025245488516511806985826635083100693757320465280554706865644_
+ 949577509916867201889438090408354817931718593862797624551518983570793_
+ 048774424291488708829840324189200301436123314860200821443733790755311_
+ 243632919864895421704228949571290016119498807957023663865443069392027_
+ 148979688266712323356043491523434068924275280417338574817381189277066_
+ 143312396681216
+ ,
+
+ 2106260768823475073894798680486016596249607148690685538763683715020639_
+ 680858649650790055889505646893309447097099937802187329095325898785247_
+ 249020717504983660482075156618738724514685333060011202964635166381351_
+ 543255982200250305283981086837110614842307026091211297929876896285681_
+ 830479054760056380762664905618462055306047816191782011588703789138988_
+ 1895
+ /
+ 2106260609498464192472113804816474175341962953296434102413903142368757_
+ 967685273888585590975965211778862189872881953943640246297357061959812_
+ 326103659799025126863258676567202342106877031710184247484181423288921_
+ 837681237062708470295706218485928867400771937828499200923760593314168_
+ 901000666373896347598118228556731037072026474496776228383762993923280_
+ 0768
+ ]
+ ,
+
+ 2563013
+ [- -------,
+ 2097152
+
+ -
+ 2611346176791927789698617693237757719238259963063541781922752330440_
+ 189899668072928338490768623593207442125925986733815932243504809294_
+ 837523030237337236806668167446173001727271353311571242897
+ /
+ 1165225400505222530583981916004589143757226610276858990008790134819_
+ 914940922413753983971394019523433320408139928153188829495755455163_
+ 963417619308395977544797140231469234269034921938055593984
+ ,
+
+ 3572594550275917221096588729615788272998517054675603239578198141006034_
+ 091735282826590621902304466963941971038923304526273329316373757450061_
+ 9789892286110976997087250466235373
+ /
+ 1039548269345598936877071244834026055800814551120170592200522366591759_
+ 409659486442339141029452950265179989960104811875822530205346505131581_
+ 2439017247289173865014702966308864
+ ]
+ ,
+
+ 1715967
+ [- -------,
+ 2097152
+
+ -
+ 4213093533784303521084839517977082390377261503969586224828998436606_
+ 030656076359374564813773498376603121267822565801436206939519951465_
+ 18222580524697287410022543952491
+ /
+ 9441814144185374458649692034349224052436597470966253663930641960795_
+ 805882585493199840191699917659443264824641135187383583888147867340_
+ 19307857605820364195856822304768
+ ,
+
+ 7635833347112644222515625424410831225347475669008589338834162172501904_
+ 994376346730876809042845208919919925302105720971453918982731389072591_
+ 4035
+ /
+ 2624188764086097199784297610478066633934230467895851602278580978503784_
+ 549205788499019640602266966026891580103543567625039018629887141284916_
+ 75648
+ ]
+ ,
+
+ 437701
+ [- -------,
+ 2097152
+
+ 1683106908638349588322172332654225913562986313181951031452750161441497_
+ 473455328150721364868355579646781603507777199075077835213366484533654_
+ 91383623741304759
+ /
+ 1683106868095213389001709982705913638963077668731226111167785188004907_
+ 425226298680325887810962614140298597366984264887998908377068799998454_
+ 23381649008099328
+ ,
+
+ 4961550109835010186422681013422108735958714801003760639707968096646912_
+ 82670847283444311723917219104249213450966312411133
+ /
+ 4961549872757738315509192078210209029852897118611097126236384040829376_
+ 59261914313170254867464792718363492160482442215424
+ ]
+ ,
+
+ 222801
+ [-------,
+ 2097152
+
+ -
+ 8994884880402428265107595121970691427136045692541978275573001865213_
+ 759921588137716696126349101655220195142994932299137183241705867672_
+ 383477
+ /
+ 1167889998665026372177765100691888582708969960229934769690835752457_
+ 077779416435209473767866507769405888942764587718542434255625992456_
+ 372224
+ ,
+
+ -
+ 2389704888133156878320801544373808395612771509208491019847452991885_
+ 509546519525467839016613593999693886640036283570552321155037871291_
+ 458703265
+ /
+ 5355487273645096326090403286689931905988225444685411433221593833681_
+ 192957562833671468654290340746993656285925599117602120446183443145_
+ 479421952
+ ]
+ ,
+
+ 765693
+ [-------,
+ 2097152
+
+ 8558969219816716267873244761178198088724698958616670140213765754322002_
+ 303251685786118678330840203328837654339523418704917749518340772512899_
+ 000391009630373148561
+ /
+ 2941442445533010790976428411376393499815580215945856917906452535495723_
+ 013856818941702330228779890141296236721138154231997238917322156711965_
+ 2444639331719460159488
+ ,
+
+ -
+ 2057618230582572101247650324860242561111302581543588808843923662767_
+ 549382241659362712290777612800192921420574408948085193743688582762_
+ 2246433251878894899015
+ /
+ 2671598203325735538097952353501450220576313759890835097091722520642_
+ 710198771902667183948906289863714759678360292483949204616471537777_
+ 775324180661095366656
+ ]
+ ,
+
+ 5743879
+ [-------,
+ 2097152
+
+ 1076288816968906847955546394773570208171456724942618614023663123574768_
+ 960850434263971398072546592772662158833449797698617455397887562900072_
+ 984768000608343553189801693408727205047612559889232757563830528688953_
+ 535421809482771058917542602890060941949620874083007858366669453501766_
+ 24841488732463225
+ /
+ 3131768957080317946648461940023552044190376613458584986228549631916196_
+ 601616219781765615532532294746529648276430583810894079374566460757823_
+ 146888581195556029208515218838883200318658407469399426063260589828612_
+ 309231596669129707986481319851571942927230340622934023923486703042068_
+ 1530440845099008
+ ,
+
+ -
+ 2113286699185750918364120475565458437870172489865485994389828135335_
+ 264444665284557526492734931691731407872701432935503473348172076098_
+ 720545849008780077564160534317894688366119529739980502944162668550_
+ 098127961950496210221942878089359674925850594427768502251789758706_
+ 752831632503615
+ /
+ 1627615584937987580242906624347104580889144466168459718043153839408_
+ 372525533309808070363699585502216011211087103263609551026027769414_
+ 087391148126221168139781682587438075322591466131939975457200522349_
+ 838568964285634448018562038272378787354460106106141518010935617205_
+ 1706396253618176
+ ]
+ ,
+
+ 19739877
+ [--------,
+ 2097152
+
+ -
+ 2997249936832703303799015804861520949215040387500707177701285766720_
+ 192530579422478953566024359860143101547801638082771611160372212874_
+ 847778035809872843149225484238365858013629341705321702582333350918_
+ 009601789937023985935304900460493389873837030853410347089908880814_
+ 853981132018464582458800615394770741699487295875960210750215891948_
+ 814476854871031530931295467332190133702671098200902282300510751860_
+ 7185928457030277807397796525813862762239286996106809728023675
+ /
+ 2308433274852278590728910081191811023906504141321432646123936794873_
+ 933319270608960702138193417647898360620229519176632937631786851455_
+ 014766027206259022252505551741823688896883806636602574431760472240_
+ 292093196729475160247268834121141893318848728661844434927287285112_
+ 897080767552864895056585864033178565910387065006112801516403522741_
+ 037360990556054476949527059227070809593049491257519554708879259595_
+ 52929920110858560812556635485429471554031675979542656381353984
+ ,
+
+ -
+ 5128189263548228489096276397868940080600938410663080459407966335845_
+ 009264109490520459825316250084723010047035024497436523038925818959_
+ 289312931584701353927621435434398674263047293909122850133851990696_
+ 490231566094371994333795070782624011727587749989296611277318372294_
+ 624207116537910436554574146082884701305543912620419354885410735940_
+ 157775896602822364575864611831512943973974715166920465061850603762_
+ 87516256195847052412587282839139194642913955
+ /
+ 2288281939778439330531208793181290471183631092455368990386390824243_
+ 509463644236249773080647438987739144921607794682653851741189091711_
+ 741868145114978337284191822497675868358729486644730856622552687209_
+ 203724411800481405702837198310642291275676195774614443815996713502_
+ 629391749783590041470860127752372996488627742672487622480063268808_
+ 889324891850842494934347337603075939980268208482904859678177751444_
+ 65749979827872616963053217673201717237252096
+ ]
+ ]
+ Type: List List Fraction Integer
+
+We can also concentrate on the solutions with real (strictly) positive
+coordinates:
+
+ lpr := positiveSolve(lp)$pack
+ []
+ Type: List List RealClosure Fraction Integer
+
+Thus we have checked that the input system has no solution with
+strictly positive coordinates.
+
+Let us define another polynomial system (L-3).
+
+ f0 := x**3 + y + z + t- 1
+ 3
+ z + y + x + t - 1
+ Type: Polynomial Integer
+
+ f1 := x + y**3 + z + t -1
+ 3
+ z + y + x + t - 1
+ Type: Polynomial Integer
+
+ f2 := x + y + z**3 + t-1
+ 3
+ z + y + x + t - 1
+ Type: Polynomial Integer
+
+ f3 := x + y + z + t**3 -1
+ 3
+ z + y + x + t - 1
+ Type: Polynomial Integer
+
+ lf := [f0, f1, f2, f3]
+ 3 3 3 3
+ [z + y + x + t - 1,z + y + x + t - 1,z + y + x + t - 1,z + y + x + t - 1]
+ Type: List Polynomial Integer
+
+First compute a decomposition into regular chains (i.e. regular
+triangular sets).
+
+ lts := triangSolve(lf)$pack
+ [
+ 2 3 3
+ {t + t + 1, z - z - t + t,
+ 3 2 2 3 6 3 3 2
+ (3z + 3t - 3)y + (3z + (6t - 6)z + 3t - 6t + 3)y + (3t - 3)z
+ +
+ 6 3 9 6 3
+ (3t - 6t + 3)z + t - 3t + 5t - 3t
+ ,
+ x + y + z}
+ ,
+ 16 13 10 7 4 2
+ {t - 6t + 9t + 4t + 15t - 54t + 27,
+ 15 14 13 12 11
+ 4907232t + 40893984t - 115013088t + 22805712t + 36330336t
+ +
+ 10 9 8 7
+ 162959040t - 159859440t - 156802608t + 117168768t
+ +
+ 6 5 4 3
+ 126282384t - 129351600t + 306646992t + 475302816t
+ +
+ 2
+ - 1006837776t - 237269088t + 480716208
+ *
+ z
+ +
+ 54 51 48 46 45 43 42
+ 48t - 912t + 8232t - 72t - 46848t + 1152t + 186324t
+ +
+ 40 39 38 37 36 35
+ - 3780t - 543144t - 3168t - 21384t + 1175251t + 41184t
+ +
+ 34 33 32 31 30
+ 278003t - 1843242t - 301815t - 1440726t + 1912012t
+ +
+ 29 28 27 26 25
+ 1442826t + 4696262t - 922481t - 4816188t - 10583524t
+ +
+ 24 23 22 21 20
+ - 208751t + 11472138t + 16762859t - 857663t - 19328175t
+ +
+ 19 18 17 16 15
+ - 18270421t + 4914903t + 22483044t + 12926517t - 8605511t
+ +
+ 14 13 12 11 10
+ - 17455518t - 5014597t + 8108814t + 8465535t + 190542t
+ +
+ 9 8 7 6 5 4
+ - 4305624t - 2226123t + 661905t + 1169775t + 226260t - 209952t
+ +
+ 3
+ - 141183t + 27216t
+ ,
+ 3 2 2 3 6 3 3 2
+ (3z + 3t - 3)y + (3z + (6t - 6)z + 3t - 6t + 3)y + (3t - 3)z
+ +
+ 6 3 9 6 3
+ (3t - 6t + 3)z + t - 3t + 5t - 3t
+ ,
+ 3
+ x + y + z + t - 1}
+ ,
+ 2 2 2
+ {t,z - 1,y - 1,x + y}, {t - 1,z,y - 1,x + y}, {t - 1,z - 1,z y + 1,x},
+ 16 13 10 7 4 2
+ {t - 6t + 9t + 4t + 15t - 54t + 27,
+ 29 28 27 26 25
+ 4907232t + 40893984t - 115013088t - 1730448t - 168139584t
+ +
+ 24 23 22 21
+ 738024480t - 195372288t + 315849456t - 2567279232t
+ +
+ 20 19 18 17
+ 937147968t + 1026357696t + 4780488240t - 2893767696t
+ +
+ 16 15 14 13
+ - 5617160352t - 3427651728t + 5001100848t + 8720098416t
+ +
+ 12 11 10 9
+ 2331732960t - 499046544t - 16243306272t - 9748123200t
+ +
+ 8 7 6 5
+ 3927244320t + 25257280896t + 10348032096t - 17128672128t
+ +
+ 4 3 2
+ - 14755488768t + 544086720t + 10848188736t + 1423614528t
+ +
+ - 2884297248
+ *
+ z
+ +
+ 68 65 62 60 59 57 56
+ - 48t + 1152t - 13560t + 360t + 103656t - 7560t - 572820t
+ +
+ 54 53 52 51 50 49
+ 71316t + 2414556t + 2736t - 402876t - 7985131t - 49248t
+ +
+ 48 47 46 45 44
+ 1431133t + 20977409t + 521487t - 2697635t - 43763654t
+ +
+ 43 42 41 40 39
+ - 3756573t - 2093410t + 71546495t + 19699032t + 35025028t
+ +
+ 38 37 36 35 34
+ - 89623786t - 77798760t - 138654191t + 87596128t + 235642497t
+ +
+ 33 32 31 30 29
+ 349607642t - 93299834t - 551563167t - 630995176t + 186818962t
+ +
+ 28 27 26 25
+ 995427468t + 828416204t - 393919231t - 1076617485t
+ +
+ 24 23 22 21
+ - 1609479791t + 595738126t + 1198787136t + 4342832069t
+ +
+ 20 19 18 17
+ - 2075938757t - 4390835799t - 4822843033t + 6932747678t
+ +
+ 16 15 14 13
+ 6172196808t + 1141517740t - 4981677585t - 9819815280t
+ +
+ 12 11 10 9
+ - 7404299976t - 157295760t + 29124027630t + 14856038208t
+ +
+ 8 7 6 5
+ - 16184101410t - 26935440354t - 3574164258t + 10271338974t
+ +
+ 4 3 2
+ 11191425264t + 6869861262t - 9780477840t - 3586674168t + 2884297248
+ ,
+ 3 3 2 6 3 9 6 3
+ (3z + (6t - 6)z + (6t - 12t + 3)z + 2t - 6t + t + 3t)y
+ +
+ 3 3 6 3 2 9 6 3 12 9
+ (3t - 3)z + (6t - 12t + 6)z + (4t - 12t + 11t - 3)z + t - 4t
+ +
+ 6 3
+ 5t - 2t
+ ,
+ 3
+ x + y + z + t - 1}
+ ,
+ 2
+ {t - 1,z - 1,y,x + z},
+ 8 7 6 5 4 3 2
+ {t + t + t - 2t - 2t - 2t + 19t + 19t - 8,
+ 7 6 5 4 3
+ 2395770t + 3934440t - 3902067t - 10084164t - 1010448t
+ +
+ 2
+ 32386932t + 22413225t - 10432368
+ *
+ z
+ +
+ 7 6 5 4 3
+ - 463519t + 3586833t + 9494955t - 8539305t - 33283098t
+ +
+ 2
+ 35479377t + 46263256t - 17419896
+ ,
+ 4 3 3 6 3 2 3
+ 3z + (9t - 9)z + (12t - 24t + 9)z + (- 152t + 219t - 67)z
+ +
+ 6 4 3
+ - 41t + 57t + 25t - 57t + 16
+ *
+ y
+ +
+ 3 4 6 3 3 3 2
+ (3t - 3)z + (9t - 18t + 9)z + (- 181t + 270t - 89)z
+ +
+ 6 4 3 7 6 4 3
+ (- 92t + 135t + 49t - 135t + 43)z + 27t - 27t - 54t + 396t
+ +
+ - 486t + 144
+ ,
+ 3
+ x + y + z + t - 1}
+ ,
+ 3
+ {t,z - t + 1,y - 1,x - 1}, {t - 1,z,y,x}, {t,z - 1,y,x}, {t,z,y - 1,x},
+ {t,z,y,x - 1}]
+ Type: List RegularChain(Integer,[x,y,z,t])
+
+Then we compute a univariate representation.
+
+ univariateSolve(lf)$pack
+ [[complexRoots= ?,coordinates= [x - 1,y - 1,z + 1,t - %A]],
+ [complexRoots= ?,coordinates= [x,y - 1,z,t - %A]],
+ [complexRoots= ? - 1,coordinates= [x,y,z,t - %A]],
+ [complexRoots= ?,coordinates= [x - 1,y,z,t - %A]],
+ [complexRoots= ?,coordinates= [x,y,z - 1,t - %A]],
+ [complexRoots= ? - 2,coordinates= [x - 1,y + 1,z,t - 1]],
+ [complexRoots= ?,coordinates= [x + 1,y - 1,z,t - 1]],
+ [complexRoots= ? - 1,coordinates= [x - 1,y + 1,z - 1,t]],
+ [complexRoots= ? + 1,coordinates= [x + 1,y - 1,z - 1,t]],
+
+ 6 3 2
+ [complexRoots= ? - 2? + 3? - 3,
+ 3 3
+ coordinates= [2x + %A + %A - 1,2y + %A + %A - 1,z - %A,t - %A]]
+ ,
+
+ 5 3 2
+ [complexRoots= ? + 3? - 2? + 3? - 3,
+ 3
+ coordinates= [x - %A,y - %A,z + %A + 2%A - 1,t - %A]]
+ ,
+
+ 4 3 2
+ [complexRoots= ? - ? - 2? + 3,
+ 3 3 3
+ coordinates= [x + %A - %A - 1,y + %A - %A - 1,z - %A + 2%A + 1,t - %A]]
+ ,
+ [complexRoots= ? + 1,coordinates= [x - 1,y - 1,z,t - %A]],
+
+ 6 3 2
+ [complexRoots= ? + 2? + 3? - 3,
+ 3 3
+ coordinates= [2x - %A - %A - 1,y + %A,2z - %A - %A - 1,t + %A]]
+ ,
+
+ 6 4 3 2
+ [complexRoots= ? + 12? + 20? - 45? - 42? - 953,
+
+ coordinates =
+ 5 4 3 2
+ [12609x + 23%A + 49%A - 46%A + 362%A - 5015%A - 8239,
+ 5 4 3 2
+ 25218y + 23%A + 49%A - 46%A + 362%A + 7594%A - 8239,
+ 5 4 3 2
+ 25218z + 23%A + 49%A - 46%A + 362%A + 7594%A - 8239,
+ 5 4 3 2
+ 12609t + 23%A + 49%A - 46%A + 362%A - 5015%A - 8239]
+ ]
+ ,
+
+ 5 3 2
+ [complexRoots= ? + 12? - 16? + 48? - 96,
+ 3
+ coordinates= [8x + %A + 8%A - 8,2y - %A,2z - %A,2t - %A]]
+ ,
+
+ 5 4 3 2
+ [complexRoots= ? + ? - 5? - 3? + 9? + 3,
+
+ coordinates =
+ 3 3 3
+ [2x - %A + 2%A - 1, 2y + %A - 4%A + 1, 2z - %A + 2%A - 1,
+ 3
+ 2t - %A + 2%A - 1]
+ ]
+ ,
+
+ 4 3 2
+ [complexRoots= ? - 3? + 4? - 6? + 13,
+
+ coordinates =
+ 3 2 3 2
+ [9x - 2%A + 4%A - %A + 2, 9y + %A - 2%A + 5%A - 1,
+ 3 2 3 2
+ 9z + %A - 2%A + 5%A - 1, 9t + %A - 2%A - 4%A - 1]
+ ]
+ ,
+
+ 4 2
+ [complexRoots= ? - 11? + 37,
+
+ coordinates =
+ 2 2 2 2
+ [3x - %A + 7,6y + %A + 3%A - 7,3z - %A + 7,6t + %A - 3%A - 7]
+ ]
+ ,
+ [complexRoots= ? + 1,coordinates= [x - 1,y,z - 1,t + 1]],
+ [complexRoots= ? + 2,coordinates= [x,y - 1,z - 1,t + 1]],
+ [complexRoots= ? - 2,coordinates= [x,y - 1,z + 1,t - 1]],
+ [complexRoots= ?,coordinates= [x,y + 1,z - 1,t - 1]],
+ [complexRoots= ? - 2,coordinates= [x - 1,y,z + 1,t - 1]],
+ [complexRoots= ?,coordinates= [x + 1,y,z - 1,t - 1]],
+
+ 4 3 2
+ [complexRoots= ? + 5? + 16? + 30? + 57,
+
+ coordinates =
+ 3 2 3 2
+ [151x + 15%A + 54%A + 104%A + 93, 151y - 10%A - 36%A - 19%A - 62,
+ 3 2 3 2
+ 151z - 5%A - 18%A - 85%A - 31, 151t - 5%A - 18%A - 85%A - 31]
+ ]
+ ,
+
+ 4 3 2
+ [complexRoots= ? - ? - 2? + 3,
+ 3 3 3
+ coordinates= [x - %A + 2%A + 1,y + %A - %A - 1,z - %A,t + %A - %A - 1]]
+ ,
+
+ 4 3 2
+ [complexRoots= ? + 2? - 8? + 48,
+
+ coordinates =
+ 3 3 3
+ [8x - %A + 4%A - 8,2y + %A,8z + %A - 8%A + 8,8t - %A + 4%A - 8]
+ ]
+ ,
+
+ 5 4 3 2
+ [complexRoots= ? + ? - 2? - 4? + 5? + 8,
+ 3 3 3
+ coordinates= [3x + %A - 1,3y + %A - 1,3z + %A - 1,t - %A]]
+ ,
+ 3
+ [complexRoots= ? + 3? - 1,coordinates= [x - %A,y - %A,z - %A,t - %A]]]
+ Type: List Record(complexRoots: SparseUnivariatePolynomial Integer,
+ coordinates: List Polynomial Integer)
+
+Note that this computation is made from the input system lf.
+
+However it is possible to reuse a pre-computed regular chain as follows:
+
+ ts := lts.1
+ 2 3 3
+ {t + t + 1, z - z - t + t,
+
+ 3 2 2 3 6 3 3 2
+ (3z + 3t - 3)y + (3z + (6t - 6)z + 3t - 6t + 3)y + (3t - 3)z
+ +
+ 6 3 9 6 3
+ (3t - 6t + 3)z + t - 3t + 5t - 3t
+ ,
+ x + y + z}
+ Type: RegularChain(Integer,[x,y,z,t])
+
+ univariateSolve(ts)$pack
+ [
+ 4 3 2
+ [complexRoots= ? + 5? + 16? + 30? + 57,
+ coordinates =
+ 3 2 3 2
+ [151x + 15%A + 54%A + 104%A + 93, 151y - 10%A - 36%A - 19%A - 62,
+ 3 2 3 2
+ 151z - 5%A - 18%A - 85%A - 31, 151t - 5%A - 18%A - 85%A - 31]
+ ]
+ ,
+ 4 3 2
+ [complexRoots= ? - ? - 2? + 3,
+ 3 3 3
+ coordinates= [x - %A + 2%A + 1,y + %A - %A - 1,z - %A,t + %A - %A - 1]]
+ ,
+ 4 3 2
+ [complexRoots= ? + 2? - 8? + 48,
+ coordinates =
+ 3 3 3
+ [8x - %A + 4%A - 8,2y + %A,8z + %A - 8%A + 8,8t - %A + 4%A - 8]
+ ]
+ ]
+ Type: List Record(complexRoots: SparseUnivariatePolynomial Integer,
+ coordinates: List Polynomial Integer)
+
+ realSolve(ts)$pack
+ []
+ Type: List List RealClosure Fraction Integer
+
+We compute now the full set of points with real coordinates:
+
+ lr2 := realSolve(lf)$pack
+ [[0,- 1,1,1], [0,0,1,0], [1,0,0,0], [0,0,0,1], [0,1,0,0], [1,0,%B37,- %B37],
+ [1,0,%B38,- %B38], [0,1,%B35,- %B35], [0,1,%B36,- %B36], [- 1,0,1,1],
+ [%B32,
+ 1 15 2 14 1 13 4 12 11 11 4 10
+ -- %B32 + -- %B32 + -- %B32 - -- %B32 - -- %B32 - -- %B32
+ 27 27 27 27 27 27
+ +
+ 1 9 14 8 1 7 2 6 1 5 2 4 3
+ -- %B32 + -- %B32 + -- %B32 + - %B32 + - %B32 + - %B32 + %B32
+ 27 27 27 9 3 9
+ +
+ 4 2
+ - %B32 - %B32 - 2
+ 3
+ ,
+ 1 15 1 14 1 13 2 12 11 11 2 10
+ - -- %B32 - -- %B32 - -- %B32 + -- %B32 + -- %B32 + -- %B32
+ 54 27 54 27 54 27
+ +
+ 1 9 7 8 1 7 1 6 1 5 1 4 3
+ - -- %B32 - -- %B32 - -- %B32 - - %B32 - - %B32 - - %B32 - %B32
+ 54 27 54 9 6 9
+ +
+ 2 2 1 3
+ - - %B32 + - %B32 + -
+ 3 2 2
+ ,
+ 1 15 1 14 1 13 2 12 11 11 2 10
+ - -- %B32 - -- %B32 - -- %B32 + -- %B32 + -- %B32 + -- %B32
+ 54 27 54 27 54 27
+ +
+ 1 9 7 8 1 7 1 6 1 5 1 4 3
+ - -- %B32 - -- %B32 - -- %B32 - - %B32 - - %B32 - - %B32 - %B32
+ 54 27 54 9 6 9
+ +
+ 2 2 1 3
+ - - %B32 + - %B32 + -
+ 3 2 2
+ ]
+ ,
+ [%B33,
+ 1 15 2 14 1 13 4 12 11 11 4 10
+ -- %B33 + -- %B33 + -- %B33 - -- %B33 - -- %B33 - -- %B33
+ 27 27 27 27 27 27
+ +
+ 1 9 14 8 1 7 2 6 1 5 2 4 3
+ -- %B33 + -- %B33 + -- %B33 + - %B33 + - %B33 + - %B33 + %B33
+ 27 27 27 9 3 9
+ +
+ 4 2
+ - %B33 - %B33 - 2
+ 3
+ ,
+ 1 15 1 14 1 13 2 12 11 11 2 10
+ - -- %B33 - -- %B33 - -- %B33 + -- %B33 + -- %B33 + -- %B33
+ 54 27 54 27 54 27
+ +
+ 1 9 7 8 1 7 1 6 1 5 1 4 3
+ - -- %B33 - -- %B33 - -- %B33 - - %B33 - - %B33 - - %B33 - %B33
+ 54 27 54 9 6 9
+ +
+ 2 2 1 3
+ - - %B33 + - %B33 + -
+ 3 2 2
+ ,
+ 1 15 1 14 1 13 2 12 11 11 2 10
+ - -- %B33 - -- %B33 - -- %B33 + -- %B33 + -- %B33 + -- %B33
+ 54 27 54 27 54 27
+ +
+ 1 9 7 8 1 7 1 6 1 5 1 4 3
+ - -- %B33 - -- %B33 - -- %B33 - - %B33 - - %B33 - - %B33 - %B33
+ 54 27 54 9 6 9
+ +
+ 2 2 1 3
+ - - %B33 + - %B33 + -
+ 3 2 2
+ ]
+ ,
+ [%B34,
+ 1 15 2 14 1 13 4 12 11 11 4 10
+ -- %B34 + -- %B34 + -- %B34 - -- %B34 - -- %B34 - -- %B34
+ 27 27 27 27 27 27
+ +
+ 1 9 14 8 1 7 2 6 1 5 2 4 3
+ -- %B34 + -- %B34 + -- %B34 + - %B34 + - %B34 + - %B34 + %B34
+ 27 27 27 9 3 9
+ +
+ 4 2
+ - %B34 - %B34 - 2
+ 3
+ ,
+ 1 15 1 14 1 13 2 12 11 11 2 10
+ - -- %B34 - -- %B34 - -- %B34 + -- %B34 + -- %B34 + -- %B34
+ 54 27 54 27 54 27
+ +
+ 1 9 7 8 1 7 1 6 1 5 1 4 3
+ - -- %B34 - -- %B34 - -- %B34 - - %B34 - - %B34 - - %B34 - %B34
+ 54 27 54 9 6 9
+ +
+ 2 2 1 3
+ - - %B34 + - %B34 + -
+ 3 2 2
+ ,
+ 1 15 1 14 1 13 2 12 11 11 2 10
+ - -- %B34 - -- %B34 - -- %B34 + -- %B34 + -- %B34 + -- %B34
+ 54 27 54 27 54 27
+ +
+ 1 9 7 8 1 7 1 6 1 5 1 4 3
+ - -- %B34 - -- %B34 - -- %B34 - - %B34 - - %B34 - - %B34 - %B34
+ 54 27 54 9 6 9
+ +
+ 2 2 1 3
+ - - %B34 + - %B34 + -
+ 3 2 2
+ ]
+ ,
+ [- 1,1,0,1], [- 1,1,1,0],
+ [%B23,
+ 1 15 1 14 1 13 2 12 11 11 2 10
+ - -- %B23 - -- %B23 - -- %B23 + -- %B23 + -- %B23 + -- %B23
+ 54 27 54 27 54 27
+ +
+ 1 9 7 8 1 7 1 6 1 5 1 4 3
+ - -- %B23 - -- %B23 - -- %B23 - - %B23 - - %B23 - - %B23 - %B23
+ 54 27 54 9 6 9
+ +
+ 2 2 1 3
+ - - %B23 + - %B23 + -
+ 3 2 2
+ ,
+ %B30,
+ 1 15 1 14 1 13 2 12 11 11
+ - %B30 + -- %B23 + -- %B23 + -- %B23 - -- %B23 - -- %B23
+ 54 27 54 27 54
+ +
+ 2 10 1 9 7 8 1 7 1 6 1 5
+ - -- %B23 + -- %B23 + -- %B23 + -- %B23 + - %B23 + - %B23
+ 27 54 27 54 9 6
+ +
+ 1 4 2 2 1 1
+ - %B23 + - %B23 - - %B23 - -
+ 9 3 2 2
+ ]
+ ,
+ [%B23,
+ 1 15 1 14 1 13 2 12 11 11 2 10
+ - -- %B23 - -- %B23 - -- %B23 + -- %B23 + -- %B23 + -- %B23
+ 54 27 54 27 54 27
+ +
+ 1 9 7 8 1 7 1 6 1 5 1 4 3
+ - -- %B23 - -- %B23 - -- %B23 - - %B23 - - %B23 - - %B23 - %B23
+ 54 27 54 9 6 9
+ +
+ 2 2 1 3
+ - - %B23 + - %B23 + -
+ 3 2 2
+ ,
+ %B31,
+ 1 15 1 14 1 13 2 12 11 11
+ - %B31 + -- %B23 + -- %B23 + -- %B23 - -- %B23 - -- %B23
+ 54 27 54 27 54
+ +
+ 2 10 1 9 7 8 1 7 1 6 1 5
+ - -- %B23 + -- %B23 + -- %B23 + -- %B23 + - %B23 + - %B23
+ 27 54 27 54 9 6
+ +
+ 1 4 2 2 1 1
+ - %B23 + - %B23 - - %B23 - -
+ 9 3 2 2
+ ]
+ ,
+ [%B24,
+ 1 15 1 14 1 13 2 12 11 11 2 10
+ - -- %B24 - -- %B24 - -- %B24 + -- %B24 + -- %B24 + -- %B24
+ 54 27 54 27 54 27
+ +
+ 1 9 7 8 1 7 1 6 1 5 1 4 3
+ - -- %B24 - -- %B24 - -- %B24 - - %B24 - - %B24 - - %B24 - %B24
+ 54 27 54 9 6 9
+ +
+ 2 2 1 3
+ - - %B24 + - %B24 + -
+ 3 2 2
+ ,
+ %B28,
+ 1 15 1 14 1 13 2 12 11 11
+ - %B28 + -- %B24 + -- %B24 + -- %B24 - -- %B24 - -- %B24
+ 54 27 54 27 54
+ +
+ 2 10 1 9 7 8 1 7 1 6 1 5
+ - -- %B24 + -- %B24 + -- %B24 + -- %B24 + - %B24 + - %B24
+ 27 54 27 54 9 6
+ +
+ 1 4 2 2 1 1
+ - %B24 + - %B24 - - %B24 - -
+ 9 3 2 2
+ ]
+ ,
+ [%B24,
+ 1 15 1 14 1 13 2 12 11 11 2 10
+ - -- %B24 - -- %B24 - -- %B24 + -- %B24 + -- %B24 + -- %B24
+ 54 27 54 27 54 27
+ +
+ 1 9 7 8 1 7 1 6 1 5 1 4 3
+ - -- %B24 - -- %B24 - -- %B24 - - %B24 - - %B24 - - %B24 - %B24
+ 54 27 54 9 6 9
+ +
+ 2 2 1 3
+ - - %B24 + - %B24 + -
+ 3 2 2
+ ,
+ %B29,
+ 1 15 1 14 1 13 2 12 11 11
+ - %B29 + -- %B24 + -- %B24 + -- %B24 - -- %B24 - -- %B24
+ 54 27 54 27 54
+ +
+ 2 10 1 9 7 8 1 7 1 6 1 5
+ - -- %B24 + -- %B24 + -- %B24 + -- %B24 + - %B24 + - %B24
+ 27 54 27 54 9 6
+ +
+ 1 4 2 2 1 1
+ - %B24 + - %B24 - - %B24 - -
+ 9 3 2 2
+ ]
+ ,
+ [%B25,
+ 1 15 1 14 1 13 2 12 11 11 2 10
+ - -- %B25 - -- %B25 - -- %B25 + -- %B25 + -- %B25 + -- %B25
+ 54 27 54 27 54 27
+ +
+ 1 9 7 8 1 7 1 6 1 5 1 4 3
+ - -- %B25 - -- %B25 - -- %B25 - - %B25 - - %B25 - - %B25 - %B25
+ 54 27 54 9 6 9
+ +
+ 2 2 1 3
+ - - %B25 + - %B25 + -
+ 3 2 2
+ ,
+ %B26,
+ 1 15 1 14 1 13 2 12 11 11
+ - %B26 + -- %B25 + -- %B25 + -- %B25 - -- %B25 - -- %B25
+ 54 27 54 27 54
+ +
+ 2 10 1 9 7 8 1 7 1 6 1 5
+ - -- %B25 + -- %B25 + -- %B25 + -- %B25 + - %B25 + - %B25
+ 27 54 27 54 9 6
+ +
+ 1 4 2 2 1 1
+ - %B25 + - %B25 - - %B25 - -
+ 9 3 2 2
+ ]
+ ,
+ [%B25,
+ 1 15 1 14 1 13 2 12 11 11 2 10
+ - -- %B25 - -- %B25 - -- %B25 + -- %B25 + -- %B25 + -- %B25
+ 54 27 54 27 54 27
+ +
+ 1 9 7 8 1 7 1 6 1 5 1 4 3
+ - -- %B25 - -- %B25 - -- %B25 - - %B25 - - %B25 - - %B25 - %B25
+ 54 27 54 9 6 9
+ +
+ 2 2 1 3
+ - - %B25 + - %B25 + -
+ 3 2 2
+ ,
+ %B27,
+ 1 15 1 14 1 13 2 12 11 11
+ - %B27 + -- %B25 + -- %B25 + -- %B25 - -- %B25 - -- %B25
+ 54 27 54 27 54
+ +
+ 2 10 1 9 7 8 1 7 1 6 1 5
+ - -- %B25 + -- %B25 + -- %B25 + -- %B25 + - %B25 + - %B25
+ 27 54 27 54 9 6
+ +
+ 1 4 2 2 1 1
+ - %B25 + - %B25 - - %B25 - -
+ 9 3 2 2
+ ]
+ ,
+ [1,%B21,- %B21,0], [1,%B22,- %B22,0], [1,%B19,0,- %B19], [1,%B20,0,- %B20],
+ 1 3 1 1 3 1 1 3 1
+ [%B17,- - %B17 + -,- - %B17 + -,- - %B17 + -],
+ 3 3 3 3 3 3
+ 1 3 1 1 3 1 1 3 1
+ [%B18,- - %B18 + -,- - %B18 + -,- - %B18 + -]]
+ 3 3 3 3 3 3
+ Type: List List RealClosure Fraction Integer
+
+The number of real solutions for the input system is:
+
+ #lr2
+ 27
+ Type: PositiveInteger
+
+Another example of computation of real solutions illustrates the
+LexTriangularPackage package constructor.
+
+We concentrate now on the solutions with real (strictly) positive
+coordinates:
+
+ lpr2 := positiveSolve(lf)$pack
+ 1 3 1 1 3 1 1 3 1
+ [[%B40,- - %B40 + -,- - %B40 + -,- - %B40 + -]]
+ 3 3 3 3 3 3
+ Type: List List RealClosure Fraction Integer
+
+Finally, we approximate the coordinates of this point with 20 exact digits:
+
+ [approximate(r,1/10**21)::Float for r in lpr2.1]
+ [0.3221853546 2608559291, 0.3221853546 2608559291, 0.3221853546 2608559291,
+ 0.3221853546 2608559291]
+ Type: List Float
+
+See Also:
+o )show ZeroDimensionalSolvePackage
+o $AXIOM/doc/src/algebra/zerodim.spad.dvi
+
+@
<<package ZDSOLVE ZeroDimensionalSolvePackage>>=
)abbrev package ZDSOLVE ZeroDimensionalSolvePackage
++ Author: Marc Moreno Maza
diff --git a/src/doc/book.pamphlet b/src/doc/book.pamphlet
index a113b73..377d5c6 100644
--- a/src/doc/book.pamphlet
+++ b/src/doc/book.pamphlet
@@ -47667,8 +47667,7 @@ $$
\returnType{Type: String}
Strings can be changed to upper case or lower case using the
-operations \spadfunFrom{upperCase}{String},
-\spadfunFrom{upperCase}{String}, \spadfunFrom{lowerCase}{String} and
+operations \spadfunFrom{upperCase}{String}, and
\spadfunFrom{lowerCase}{String}.
\spadcommand{upperCase hello }
@@ -50596,7 +50595,7 @@ x \ {y \sp 2}
$$
\returnType{Type: OrderedFreeMonoid Symbol}
-The we can compute the right-quotient of {\bf qr} by {\bf r}:
+We can compute the right-quotient of {\bf qr} by {\bf r}:
\spadcommand{rquo(qr,w) }
$$
diff --git a/src/doc/spadhelp.pamphlet b/src/doc/spadhelp.pamphlet
index 3275622..21925ae 100644
--- a/src/doc/spadhelp.pamphlet
+++ b/src/doc/spadhelp.pamphlet
@@ -1504,7 +1504,8 @@ Integer (INT) IntegerLinearDependence
(ZLINDEP)
IntegerNumberTheoryFunctions (INTHEORY)
Kernel (KERNEL) KeyedAccessFile (KAFILE)
LexTriangularPackage (LEXTRIPK) Library (LIB)
-LieExponentials (LEXP) LinearOrdinaryDifferentialOperator (LODO)
+LieExponentials (LEXP) LiePolynomial (LPOLY)
+LinearOrdinaryDifferentialOperator (LODO)
LinearOrdinaryDifferentialOperator1 (LODO1)
LinearOrdinaryDifferentialOperator2 (LODO2)
List (LIST) LyndonWord (LWORD)
@@ -1516,12 +1517,23 @@ None (NONE) Octonion (OCT)
OneDimensionalArray (ARRAY1) Operator (OP)
OrderedVariableList (OVAR) OrderlyDifferentialPolynomial (ODPOL)
PartialFraction (PFR) Permanent (PERMAN)
-Polynomial (POLY) Quaternion (QUAT)
-RadixExpansion (RADIX) RealClosure (RECLOS)
-PlaneAlgebraicCurvePlot (ACPLOT) RealSolvePackage (REALSOLV)
+PlaneAlgebraicCurvePlot (ACPLOT) Polynomial (POLY)
+Quaternion (QUAT) RadixExpansion (RADIX)
+RealClosure (RECLOS) RealSolvePackage (REALSOLV)
RegularTriangularSet (REGSET) RomanNumeral (ROMAN)
Segment (SEG) SegmentBinding (SEGBIND)
-Set (SET) TwoDimensionalViewport (VIEW2D)
+Set (SET) SingleInteger (SINT)
+SparseTable (STBL) SquareMatrix (SQMATRIX)
+SquareFreeRegularTriangularSet (SREGSET)
+Stream (STREAM) String (STRING)
+StringTable (STRTBL) Symbol (SYMBOL)
+Table (TABLE) TextFile (TEXTFILE)
+TwoDimensionalArray (ARRAY2) TwoDimensionalViewport (VIEW2D)
+UnivariatePolynomial (UP) UniversalSegment (UNISEG)
+Vector (VECTOR) Void (VOID)
+WuWenTsunTriangularSet (WUTSET) XPBWPolynomial (XPBWPOLY)
+XPolynomial (XPOLY) XPolynomialRing (XPR)
+ZeroDimensionalSolvePackage (ZDSOLVE)
@
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Axiom-developer] 20070906.01.tpd.patch,
daly <=