Test species in axiom/FriCAS?.
The species project is written in Aldor. Thus we need to load the libraries explicitly:
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
)lib csaxcompat.ao
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
)lib csaxcompat2.ao
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
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
Partial is now explicitly exposed in frame initial
Partial will be automatically loaded when needed from
/var/lib/zope/combinat/src/csaxcompat2
Won't parse: (Type)->NIL
axiom
)lib csistruc.ao
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
)lib csdistpoly.ao
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
)lib csstream.ao
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
)lib csseries.ao
axiom
Reading /var/lib/zope/combinat/src/csseries.asy
SeriesOrder is now explicitly exposed in frame initial
SeriesOrder will be automatically loaded when needed from
/var/lib/zope/combinat/src/csseries
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
axiom
)lib csidxpp.ao
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
)lib cssiprimes.ao
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
)lib cssitools.ao
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
)lib csgseries.ao
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
)lib csmultinom.ao
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
)lib csspexpr.ao
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
)lib csspecies.ao
axiom
Reading /var/lib/zope/combinat/src/csspecies.asy
SetSpecies is now explicitly exposed in frame initial
SetSpecies 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
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
CombinatorialSpecies is now explicitly exposed in frame initial
CombinatorialSpecies 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
NonEmpty is now explicitly exposed in frame initial
NonEmpty 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
Partition is now explicitly exposed in frame initial
Partition 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
axiom
)lib csexamples.ao
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
SetSpecies is already explicitly exposed in frame initial
SetSpecies 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
Won't parse: (ACLabelType)->NIL
Won't parse: (Type)->NIL
axiom
)lib csinterp.ao
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
)lib csparse.ao
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
aldor
#includeDir "/var/lib/zope/combinat/include"
#libraryDir "/var/lib/zope/combinat/lib"
#assert MacrosCombinat
#assert Axiom
#include "combinat"
macro {
SPECIES == (L: LabelType) -> CombinatorialSpecies L;
V == CycleIndexVariable;
NonNegativeMachineInteger == I;
T == SparseIndexedPowerProduct(V, NonNegativeMachineInteger);
P == SparseDistributedPolynomial(Q, V, T);
}
LinearOrder(L: LabelType): with {
CombinatorialSpecies L;
coerce: % -> List L;
} == List L add {
Rep == List L;
import from Rep;
coerce(x: %): List L == rep x;
local lists(l: List L): Generator List L == generate {
empty? l => yield l;
current := l;
c := first current;
for u in lists(rest l) repeat yield cons(c, u);
assert(not empty? current);
while not empty?(tmp := rest current) repeat {
c := first current;
setrest!(current, rest tmp); -- remove c from l
for u in lists l repeat yield cons(c, u);
setrest!(current, tmp); -- put c back into l
current := tmp;
}
}
structures(s: SetSpecies L): Generator % == generate {
for l in lists(s :: List L) repeat yield per l;
}
local LinearOrderIsomorphismType: IsomorphismTypeCategory L
== add {
isomorphismTypes(s: MultiSet L): Generator % == never;
(x:%) = (y:%): Boolean == never;
(tw: TextWriter) << (x: %): TextWriter == never;
}
IsomorphismType: IsomorphismTypeCategory L == LinearOrderIsomorphismType;
generatingSeries: ExponentialGeneratingSeries == {
(stream(1$Q)$DataStream(Q)) :: ExponentialGeneratingSeries;
}
isomorphismTypeGeneratingSeries: OrdinaryGeneratingSeries == {
(stream(1$Z)$DataStream(Z)) :: OrdinaryGeneratingSeries;
}
local cisGenerator: Generator P == generate {
import from I, T, P;
x1: V := 1::V;
for n: I in 0.. repeat yield power(x1, n) :: P;
}
cycleIndexSeries: CycleIndexSeries == cisGenerator :: CycleIndexSeries;
import from String;
expression: SpeciesExpression == leaf("LinearOrder");
}
Cycle(L: LabelType): with {
CombinatorialSpecies L;
coerce: % -> List L;
cycle: List L -> %;
} == List L add {
Rep == List L;
import from I, Rep;
local cisCycle(ao: I): Generator P == generate {
macro PrimePowerProduct == SparseIndexedPowerProduct(I, I);
local multiply(k: PrimePowerProduct): I == {
r: I := 1;
for ep in k repeat {(e, p) := ep; r := r * p^e}
r;
}
local eulerPhi(t: SparseIndexedPowerProduct(I, I)): I == {
phi: I := 1;
for ep in t repeat {
(e, p) := ep;
phi := phi * p^(e-1) * (p-1)
}
phi;
}
local cisCoefficient(n: I): P == BugWorkaround(
PrimePowerProduct has with {
divisors: % -> Generator %;
/: (%, %) -> %;
}
){
import from Z, V, SmallIntegerTools;
nn: PrimePowerProduct := factor n;
p: P := 0;
for m in divisors nn repeat {
k: PrimePowerProduct := nn/m;
q: Q := (eulerPhi(k) :: Z) / (n :: Z);
xk: V := multiply(k) :: V;
t: T := power(xk, multiply m);
p := [q, t]$P + p;
}
p;
}
yield 0$P;
for n:I in 1.. repeat yield cisCoefficient(n);
}
coerce(x: %): List L == rep x;
cycle(l: List L): % == per l;
structures(s: SetSpecies L): Generator % == generate {
import from LinearOrder L;
if not empty? s then {
l: List L := s :: List L;
u := first l;
for t in structures(set rest l)$LinearOrder(L) repeat {
yield per cons(u, t :: List L);
}
}
}
local CycleIsomorphismType: IsomorphismTypeCategory L
== add {
isomorphismTypes(s: MultiSet L): Generator % == never;
(x:%) = (y:%): Boolean == never;
(tw: TextWriter) << (x: %): TextWriter == never;
}
IsomorphismType: IsomorphismTypeCategory L == CycleIsomorphismType;
local cycleOrder(): SeriesOrder == 1 :: SeriesOrder;
egsCycle(ao: I): Generator Q == generate {
import from Z, Q;
yield 0;
for n:I in 1.. repeat yield inv(n :: Z);
}
generatingSeries: ExponentialGeneratingSeries == new(egsCycle, cycleOrder);
ogsCycle(ao: I): Generator Z == generate {yield 0$Z; yield 1$Z};
isomorphismTypeGeneratingSeries: OrdinaryGeneratingSeries == {
new(ogsCycle, cycleOrder);
}
cycleIndexSeries: CycleIndexSeries == new(cisCycle, cycleOrder);
import from String;
expression: SpeciesExpression == leaf("Cycle");
}
aldor
Compiling FriCAS source code from file
/var/zope2/var/LatexWiki/8188642503154069003-25px003.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'
"/var/zope2/var/LatexWiki/8188642503154069003-25px003.as", line 94:
){
.^
[L94 C2] #2 (Warning) Suspicious juxtaposition. Check for missing `;'.
Check indentation if you are using `#pile'.
Compiling Lisp source code from file
./8188642503154069003-25px003.lsp
Issuing )library command for 8188642503154069003-25px003
Reading /var/lib/zope/combinat/src/8188642503154069003-25px003.asy
Cycle is now explicitly exposed in frame initial
Cycle will be automatically loaded when needed from
/var/lib/zope/combinat/src/8188642503154069003-25px003
LinearOrder is now explicitly exposed in frame initial
LinearOrder will be automatically loaded when needed from
/var/lib/zope/combinat/src/8188642503154069003-25px003
axiom
labels: SetSpecies ACINT := set [i::ACINT for i in 1..3]
Type: SetSpecies
? ACInteger
?
axiom
)set output tex off
axiom
)set output algebra on
[structures(labels)$Cycle(ACINT)]$ACLIST(Cycle(ACINT))
(2) [[1,2,3],[1,2,2]]
Type: ACList
? Cycle ACInteger
?
axiom
I := ACMachineInteger
(3) ACMachineInteger
Type: Domain
axiom
Z := ACInteger
(4) ACInteger
Type: Domain
axiom
Q := ACFraction Z
(5) ACFraction ACInteger
Type: Domain
axiom
V := CycleIndexVariable
(6) CycleIndexVariable
Type: Domain
axiom
T := SparseIndexedPowerProduct(V, I)
(7) SparseIndexedPowerProduct(CycleIndexVariable,ACMachineInteger)
Type: Domain
axiom
P := SparseDistributedPolynomial(Q, V, T)
(8)
SparseDistributedPolynomial(ACFraction ACInteger,CycleIndexVariable,SparseInd
exedPowerProduct(CycleIndexVariable,ACMachineInteger))
Type: Domain
axiom
S := CycleIndexSeries;
Type: Domain
axiom
X := A(Z)
(10) A ACInteger
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: SetSpecies Z := set [i::Z for i in 1..3]
(11) [1,2,3]
Type: SetSpecies
? ACInteger
?
axiom
)set output tex off
axiom
)set output algebra on
[structures(labels)$X]$ACLIST(X)
(12)
[((1, "nil"), ((2, "nil"), ((3, "nil"), "nil"))),
((1, "nil"), ((3, "nil"), ((2, "nil"), "nil"))),
((1, "nil"), ((2, ((3, "nil"), "nil")), "nil")),
((1, "nil"), ((3, ((2, "nil"), "nil")), "nil")),
((2, "nil"), ((1, "nil"), ((3, "nil"), "nil"))),
((2, "nil"), ((3, "nil"), ((1, "nil"), "nil"))),
((2, "nil"), ((1, ((3, "nil"), "nil")), "nil")),
((2, "nil"), ((3, ((1, "nil"), "nil")), "nil")),
((1, ((2, "nil"), "nil")), ((3, "nil"), "nil")),
((2, ((1, "nil"), "nil")), ((3, "nil"), "nil")),
((3, "nil"), ((1, "nil"), ((2, "nil"), "nil"))),
((3, "nil"), ((2, "nil"), ((1, "nil"), "nil"))),
((3, "nil"), ((1, ((2, "nil"), "nil")), "nil")),
((3, "nil"), ((2, ((1, "nil"), "nil")), "nil")),
((1, ((3, "nil"), "nil")), ((2, "nil"), "nil")),
((3, ((1, "nil"), "nil")), ((2, "nil"), "nil")),
((2, ((3, "nil"), "nil")), ((1, "nil"), "nil")),
((3, ((2, "nil"), "nil")), ((1, "nil"), "nil")),
((1, ((2, "nil"), ((3, "nil"), "nil"))), "nil"),
((1, ((3, "nil"), ((2, "nil"), "nil"))), "nil"),
((1, ((2, ((3, "nil"), "nil")), "nil")), "nil"),
((1, ((3, ((2, "nil"), "nil")), "nil")), "nil"),
((2, ((1, "nil"), ((3, "nil"), "nil"))), "nil"),
((2, ((3, "nil"), ((1, "nil"), "nil"))), "nil"),
((2, ((1, ((3, "nil"), "nil")), "nil")), "nil"),
((2, ((3, ((1, "nil"), "nil")), "nil")), "nil"),
((3, ((1, "nil"), ((2, "nil"), "nil"))), "nil"),
((3, ((2, "nil"), ((1, "nil"), "nil"))), "nil"),
((3, ((1, ((2, "nil"), "nil")), "nil")), "nil"),
((3, ((2, ((1, "nil"), "nil")), "nil")), "nil")]
Type: ACList
? A ACInteger
?
axiom
)set output tex on
axiom
)set output algebra off
Let's count how many structures of a certain size exist.
This is encoded in the generating series. Note that this is an
exponential generating series.
axiom
es: ExponentialGeneratingSeries := generatingSeries()$X;
Type: ExponentialGeneratingSeries
?
axiom
[coefficient(es, i) for i in 0..10]
Type: List ACFraction
? ACInteger
?
axiom
[count(es, i) for i in 0..10]
AldorCombinat? can also count the number of isomorphism types of structues.
That is encoded in the isomorphim type series.
axiom
os: OrdinaryGeneratingSeries := isomorphismTypeGeneratingSeries()$X;
Type: OrdinaryGeneratingSeries
?
axiom
[coefficient(os, i) for i in 0..10]
axiom
[count(os, i) for i in 0..10]
axiom
cs: S := cycleIndexSeries()$X;
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 tex off
axiom
)set output algebra on
coeffs3: ACList P := [coefficient(cs, i) for i in 0..5]
(20) [(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 tex on
axiom
)set output algebra off
P is the polynomial domain in infinitely many variables with rational coefficients.
axiom
p: P := 1$P
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
axiom
v: V := 3::I::V
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
?)
axiom
p := t :: P + 3*t2
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
Let's do some more advanced stuff with
Aldor-Combinat .
See the
functorial composition testpage
for more details.
Here we compute the
cycle index series
of simple graphs.
axiom
e: S := cycleIndexSeries() $ SetSpecies(Z);
axiom
e2: S := term(coefficient(e, 2), 2);
axiom
h: S := functorialCompose(e * e, e2 * e);
axiom
coefficient(h, 0)
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
axiom
coefficient(h, 1)
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
axiom
coefficient(h, 2)
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
axiom
coefficient(h, 3)
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
axiom
coefficient(h, 4)
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))
axiom
coefficient(h, 5)
Type: SparseDistributedPolynomial
?(ACFraction
? ACInteger
?,CycleIndexVariable
?,SparseIndexedPowerProduct
?(CycleIndexVariable
?,ACMachineInteger
?))