Test species in axiom/FriCAS?.
The species project is written in Aldor. Thus we need to load the libraries explicitly:
Want loading of libraries with no output.
axiom
)cd ~/combinat/src
The current FriCAS default directory is /var/lib/zope/combinat/src
axiom
)re ../lib/combinat.input
axiom
)lib cscombinatversion.ao
axiom
Reading /var/lib/zope/combinat/src/cscombinatversion.asy
LibraryInformationCombinat is now explicitly exposed in frame
initial
LibraryInformationCombinat will be automatically loaded when needed
from /var/lib/zope/combinat/src/cscombinatversion
axiom
Reading /var/lib/zope/combinat/src/csaxcompat.asy
ACCharacter is now explicitly exposed in frame initial
ACCharacter will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat
ACFraction is now explicitly exposed in frame initial
ACFraction will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat
ACIntegerTools is now explicitly exposed in frame initial
ACIntegerTools will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat
ACInteger is now explicitly exposed in frame initial
ACInteger will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat
ACList is now explicitly exposed in frame initial
ACList will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat
ACMachineInteger is now explicitly exposed in frame initial
ACMachineInteger will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat
ACPrimitiveArray is now explicitly exposed in frame initial
ACPrimitiveArray will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat
ACString is now explicitly exposed in frame initial
ACString will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat
ACSymbol is now explicitly exposed in frame initial
ACSymbol will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat
Array is now explicitly exposed in frame initial
Array will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat
ACLabelType is now explicitly exposed in frame initial
ACLabelType will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat
OutputType is now explicitly exposed in frame initial
OutputType will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat
TotallyOrderedType is now explicitly exposed in frame initial
TotallyOrderedType will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat
axiom
Reading /var/lib/zope/combinat/src/csaxcompat2.asy
ExpressionTreeExpt is now explicitly exposed in frame initial
ExpressionTreeExpt will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat2
ExpressionTreeLeaf is now explicitly exposed in frame initial
ExpressionTreeLeaf will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat2
ExpressionTreePlus is now explicitly exposed in frame initial
ExpressionTreePlus will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat2
ExpressionTreePrefix is now explicitly exposed in frame initial
ExpressionTreePrefix will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat2
ExpressionTreeTimes is now explicitly exposed in frame initial
ExpressionTreeTimes will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat2
ExpressionTree is now explicitly exposed in frame initial
ExpressionTree will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat2
GeneratorException is now explicitly exposed in frame initial
GeneratorException will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat2
Generator is now explicitly exposed in frame initial
Generator will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat2
ExpressionTreeOperator is now explicitly exposed in frame initial
ExpressionTreeOperator will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat2
Partial is now explicitly exposed in frame initial
Partial will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat2
ExpressionType is now explicitly exposed in frame initial
ExpressionType will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat2
GeneratorExceptionType is now explicitly exposed in frame initial
GeneratorExceptionType will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat2
Won't parse: (Type)->NIL
axiom
Reading /var/lib/zope/combinat/src/csistruc.asy
SparseAdditiveArray is now explicitly exposed in frame initial
SparseAdditiveArray will be automatically loaded when needed from
/var/lib/zope/combinat/src/csistruc
SparseFiniteMonoidRing is now explicitly exposed in frame initial
SparseFiniteMonoidRing will be automatically loaded when needed from
/var/lib/zope/combinat/src/csistruc
IndexedFreeAdditiveCombinationType is now explicitly exposed in
frame initial
IndexedFreeAdditiveCombinationType will be automatically loaded when
needed from /var/lib/zope/combinat/src/csistruc
IndexedFreeArithmeticType is now explicitly exposed in frame initial
IndexedFreeArithmeticType will be automatically loaded when needed
from /var/lib/zope/combinat/src/csistruc
axiom
Reading /var/lib/zope/combinat/src/csdistpoly.asy
SparseDistributedPolynomial is now explicitly exposed in frame
initial
SparseDistributedPolynomial will be automatically loaded when needed
from /var/lib/zope/combinat/src/csdistpoly
axiom
Reading /var/lib/zope/combinat/src/csstream.asy
DataStream is now explicitly exposed in frame initial
DataStream will be automatically loaded when needed from
/var/lib/zope/combinat/src/csstream
axiom
Reading /var/lib/zope/combinat/src/csseries.asy
FormalPowerSeries is now explicitly exposed in frame initial
FormalPowerSeries will be automatically loaded when needed from
/var/lib/zope/combinat/src/csseries
FormalPowerSeriesCategory is now explicitly exposed in frame initial
FormalPowerSeriesCategory will be automatically loaded when needed
from /var/lib/zope/combinat/src/csseries
SeriesOrder is now explicitly exposed in frame initial
SeriesOrder will be automatically loaded when needed from
/var/lib/zope/combinat/src/csseries
axiom
Reading /var/lib/zope/combinat/src/csidxpp.asy
SparseIndexedPowerProduct is now explicitly exposed in frame initial
SparseIndexedPowerProduct will be automatically loaded when needed
from /var/lib/zope/combinat/src/csidxpp
axiom
Reading /var/lib/zope/combinat/src/cssiprimes.asy
SmallIntegerPrimes is now explicitly exposed in frame initial
SmallIntegerPrimes will be automatically loaded when needed from
/var/lib/zope/combinat/src/cssiprimes
axiom
Reading /var/lib/zope/combinat/src/cssitools.asy
SmallIntegerTools is now explicitly exposed in frame initial
SmallIntegerTools will be automatically loaded when needed from
/var/lib/zope/combinat/src/cssitools
axiom
Reading /var/lib/zope/combinat/src/csgseries.asy
CycleIndexSeries is now explicitly exposed in frame initial
CycleIndexSeries will be automatically loaded when needed from
/var/lib/zope/combinat/src/csgseries
CycleIndexVariable is now explicitly exposed in frame initial
CycleIndexVariable will be automatically loaded when needed from
/var/lib/zope/combinat/src/csgseries
ExponentialGeneratingSeries is now explicitly exposed in frame
initial
ExponentialGeneratingSeries will be automatically loaded when needed
from /var/lib/zope/combinat/src/csgseries
OrdinaryGeneratingSeries is now explicitly exposed in frame initial
OrdinaryGeneratingSeries will be automatically loaded when needed
from /var/lib/zope/combinat/src/csgseries
axiom
Reading /var/lib/zope/combinat/src/csmultinom.asy
MultinomialTools is now explicitly exposed in frame initial
MultinomialTools will be automatically loaded when needed from
/var/lib/zope/combinat/src/csmultinom
axiom
Reading /var/lib/zope/combinat/src/csspexpr.asy
SpeciesExpression is now explicitly exposed in frame initial
SpeciesExpression will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspexpr
axiom
Reading /var/lib/zope/combinat/src/csspecies.asy
ACIsomorphismType is now explicitly exposed in frame initial
ACIsomorphismType will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
Subset is now explicitly exposed in frame initial
Subset will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
Times is now explicitly exposed in frame initial
Times will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
Augment is now explicitly exposed in frame initial
Augment will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
CharacteristicSpecies is now explicitly exposed in frame initial
CharacteristicSpecies will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
Combination is now explicitly exposed in frame initial
Combination will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
Compose is now explicitly exposed in frame initial
Compose will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
Derivative is now explicitly exposed in frame initial
Derivative will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
DropEmpty is now explicitly exposed in frame initial
DropEmpty will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
EmptySetSpecies is now explicitly exposed in frame initial
EmptySetSpecies will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
FunctorialCompose is now explicitly exposed in frame initial
FunctorialCompose will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
MultiCompose is now explicitly exposed in frame initial
MultiCompose will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
MultiDerivative is now explicitly exposed in frame initial
MultiDerivative will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
MultiPlus is now explicitly exposed in frame initial
MultiPlus will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
MultiSetCombination is now explicitly exposed in frame initial
MultiSetCombination will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
MultiSetPartition is now explicitly exposed in frame initial
MultiSetPartition will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
MultiSet is now explicitly exposed in frame initial
MultiSet will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
MultiSubset is now explicitly exposed in frame initial
MultiSubset will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
MultiTimes is now explicitly exposed in frame initial
MultiTimes will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
Multiple is now explicitly exposed in frame initial
Multiple will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
CombinatorialSpecies is now explicitly exposed in frame initial
CombinatorialSpecies will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
NonEmpty is now explicitly exposed in frame initial
NonEmpty will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
Plus is now explicitly exposed in frame initial
Plus will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
RestrictedSpecies is now explicitly exposed in frame initial
RestrictedSpecies will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
SetSpecies is now explicitly exposed in frame initial
SetSpecies will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
IsomorphismTypeCategory is now explicitly exposed in frame initial
IsomorphismTypeCategory will be automatically loaded when needed
from /var/lib/zope/combinat/src/csspecies
SingletonSpecies is now explicitly exposed in frame initial
SingletonSpecies will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
Partition is now explicitly exposed in frame initial
Partition will be automatically loaded when needed from
/var/lib/zope/combinat/src/csspecies
axiom
Reading /var/lib/zope/combinat/src/csexamples.asy
ACBinaryTree is now explicitly exposed in frame initial
ACBinaryTree will be automatically loaded when needed from
/var/lib/zope/combinat/src/csexamples
Combination is already explicitly exposed in frame initial
Combination will be automatically loaded when needed from
/var/lib/zope/combinat/src/csexamples
Generator is already explicitly exposed in frame initial
Generator will be automatically loaded when needed from
/var/lib/zope/combinat/src/csexamples
SetSpecies is already explicitly exposed in frame initial
SetSpecies will be automatically loaded when needed from
/var/lib/zope/combinat/src/csexamples
Won't parse: (Type)->NIL
Won't parse: (ACLabelType)->NIL
axiom
Reading /var/lib/zope/combinat/src/csinterp.asy
Interpret is now explicitly exposed in frame initial
Interpret will be automatically loaded when needed from
/var/lib/zope/combinat/src/csinterp
InterpretingTools is now explicitly exposed in frame initial
InterpretingTools will be automatically loaded when needed from
/var/lib/zope/combinat/src/csinterp
LabelSpecies is now explicitly exposed in frame initial
LabelSpecies will be automatically loaded when needed from
/var/lib/zope/combinat/src/csinterp
axiom
Reading /var/lib/zope/combinat/src/csparse.asy
MyParser is now explicitly exposed in frame initial
MyParser will be automatically loaded when needed from
/var/lib/zope/combinat/src/csparse
Let's define a binary tree.
aldor
#includeDir "/var/lib/zope/combinat/include"
#libraryDir "/var/lib/zope/combinat/lib"
#include "combinat"
macro {
E == EmptySetSpecies;
X == SingletonSpecies;
+ == Plus;
* == Times;
}
A(L: LabelType): CombinatorialSpecies L == (E + X*A*A)(L) add;
aldor
Compiling FriCAS source code from file
/var/zope2/var/LatexWiki/5200085684951427974-25px002.as using
AXIOM-XL compiler and options
-O -Fasy -Fao -Flsp -laxiom -Mno-AXL_W_WillObsolete -DAxiom -Y $AXIOM/algebra
Use the system command )set compiler args to change these
options.
#1 (Warning) Deprecated message prefix: use `ALDOR_' instead of `_AXL'
Compiling Lisp source code from file
./5200085684951427974-25px002.lsp
Issuing )library command for 5200085684951427974-25px002
Reading /var/lib/zope/combinat/src/5200085684951427974-25px002.asy
A is now explicitly exposed in frame initial
A will be automatically loaded when needed from
/var/lib/zope/combinat/src/5200085684951427974-25px002
Type: Domain
axiom
)show X
A ACInteger is a domain constructor.
Abbreviation for A is A
This constructor is exposed in this frame.
Issue )edit 5200085684951427974-25px002.as to see algebra source code for A
------------------------------- Operations --------------------------------
?=? : (%,%) -> Boolean coerce : % -> OutputForm
hash : % -> SingleInteger latex : % -> String
?~=? : (%,%) -> Boolean
?<<? : (OutputForm,%) -> OutputForm
IsomorphismType : () -> IsomorphismTypeCategory ACInteger
cycleIndexSeries : () -> CycleIndexSeries
expression : () -> SpeciesExpression
generatingSeries : () -> ExponentialGeneratingSeries
isomorphismTypeGeneratingSeries : () -> OrdinaryGeneratingSeries
structures : SetSpecies ACInteger -> Generator %
labels := set [i::ACInteger for i in 1..3]
axiom
[structures(labels)$X]$ACLIST(X)
There are 1 exposed and 0 unexposed library operations named
structures having 1 argument(s) but none was determined to be
applicable. Use HyperDoc Browse, or issue
)display op structures
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named
structures with argument type(s)
Set ACInteger
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
es: ExponentialGeneratingSeries := generatingSeries()$X;
Type: ExponentialGeneratingSeries
?
axiom
coeffs := [coefficient(es, i) for i in 0..10]
Type: List ACFraction
? ACInteger
?
axiom
os: OrdinaryGeneratingSeries := isomorphismTypeGeneratingSeries()$X;
Type: OrdinaryGeneratingSeries
?
axiom
coeffs2 := [coefficient(os, i) for i in 0..10]
axiom
I := ACMachineInteger
Type: Domain
axiom
Q := ACFraction ACInteger
Type: Domain
axiom
V := CycleIndexVariable
Type: Domain
axiom
T := SparseIndexedPowerProduct(V, I)
Type: Domain
axiom
P := SparseDistributedPolynomial(Q, V, T)
Type: Domain
axiom
S := CycleIndexSeries;
Type: Domain
axiom
cs: S := cycleIndexSeries()$X;
axiom
coeffs3: List P := [coefficient(cs, i) for i in 0..5]
LISP output:
((((1 . 1))) (((1 . 1) (1 . 1))) (((2 . 1) (2 . 1))) (((5 . 1) (3 . 1))) (((14 .
1) (4 . 1))) (((42 . 1) (5 . 1))))
Type: List SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
Ooops, it seems that elements of P cannot be printed in Axiom. :-(
So let's find the problem. P is the polynomial domain in infinitely many variables with rational coefficients.
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
Type: CycleIndexVariable
?
axiom
t: T := power(v,2) * power(5::I::V,3)
Type: SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?)
axiom
t2: T := power(v,3) * power(1::I::V,2)
Type: SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?)
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
Hmm, prints fine...
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
The output of the next command apparently causes a "Proxy Error" on the mathaction server. This can be avoided by changing the output from LaTeX? to ASCII mode:
axiom
)set output algebra on
coeffs4: ACList P := [coefficient(cs, i) for i in 0..5]
(26) [(1)*1, (1)*x1^1, (2)*x1^2, (5)*x1^3, (14)*x1^4,
(42)*x1^5]
Type: ACList
? SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
axiom
)set output algebra off
Let's do some more advanced stuff. See
the functorial composition testpage
for more details.
axiom
e: S := cycleIndexSeries() $ SetSpecies(Z);
Z is not a valid type.
e2: S := term(coefficient(e, 2), 2);
e is declared as being in CycleIndexSeries but has not been given a
value.
h: S := functorialCompose(e * e, e2 * e);
e is declared as being in CycleIndexSeries but has not been given a
value.
coefficient(h, 0)
h is declared as being in CycleIndexSeries but has not been given a
value.
coefficient(h, 1)
h is declared as being in CycleIndexSeries but has not been given a
value.
coefficient(h, 2)
h is declared as being in CycleIndexSeries but has not been given a
value.
coefficient(h, 3)
h is declared as being in CycleIndexSeries but has not been given a
value.
coefficient(h, 4)
h is declared as being in CycleIndexSeries but has not been given a
value.
coefficient(h, 5)
h is declared as being in CycleIndexSeries but has not been given a
value.