login  home  contents  what's new  discussion  bug reports     help  links  subscribe  changes  refresh  edit

Edit detail for SandBoxSpeciesAldor revision 9 of 11

1 2 3 4 5 6 7 8 9 10 11
Editor: Bill Page
Time: 2008/06/17 15:45:18 GMT-7
Note: fix typos

changed:
-AldorCombinat can also count the number of isomorphism types of structues.
-That is encoded in the isomorphim type series.
AldorCombinat can also count the number of isomorphism types of structures.
That is encoded in the isomorphism type series.

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
   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
   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
   Augment is now explicitly exposed in frame initial 
   Augment 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
   CharacteristicSpecies is now explicitly exposed in frame initial 
   CharacteristicSpecies 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
   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
   CombinatorialSpecies is now explicitly exposed in frame initial 
   CombinatorialSpecies 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
   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
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 tmp; 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/6373670188426008557-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/6373670188426008557-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 
      ./6373670188426008557-25px003.lsp
   Issuing )library command for 6373670188426008557-25px003
   Reading /var/lib/zope/combinat/src/6373670188426008557-25px003.asy
   Cycle is now explicitly exposed in frame initial 
   Cycle will be automatically loaded when needed from 
      /var/lib/zope/combinat/src/6373670188426008557-25px003
   LinearOrder is now explicitly exposed in frame initial 
   LinearOrder will be automatically loaded when needed from 
      /var/lib/zope/combinat/src/6373670188426008557-25px003

axiom
labels: SetSpecies ACINT := set [i::ACINT for i in 1..3]
LatexWiki Image(1)
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,3,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]
LatexWiki Image(2)
Type: List ACFraction? ACInteger?
axiom
[count(es, i) for i in 0..10]
LatexWiki Image(3)
Type: List ACInteger?

AldorCombinat? can also count the number of isomorphism types of structures. That is encoded in the isomorphism type series.

axiom
os: OrdinaryGeneratingSeries := isomorphismTypeGeneratingSeries()$X;
Type: OrdinaryGeneratingSeries?
axiom
[coefficient(os, i) for i in 0..10]
LatexWiki Image(4)
Type: List ACInteger?
axiom
[count(os, i) for i in 0..10]
LatexWiki Image(5)
Type: List ACInteger?
axiom
cs: S := cycleIndexSeries()$X;
Type: CycleIndexSeries?

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
LatexWiki Image(6)
Type: SparseDistributedPolynomial?(ACFraction? ACInteger?,CycleIndexVariable?,SparseIndexedPowerProduct?(CycleIndexVariable?,ACMachineInteger?))
axiom
v: V := 3::I::V
LatexWiki Image(7)
Type: CycleIndexVariable?
axiom
t: T := power(v,2) * power(5::I::V,3)
LatexWiki Image(8)
Type: SparseIndexedPowerProduct?(CycleIndexVariable?,ACMachineInteger?)
axiom
t2: T := power(v,3) * power(1::I::V,2)
LatexWiki Image(9)
Type: SparseIndexedPowerProduct?(CycleIndexVariable?,ACMachineInteger?)
axiom
p := t :: P + 3*t2
LatexWiki Image(10)
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);
Type: CycleIndexSeries?
axiom
e2: S := term(coefficient(e, 2), 2);
Type: CycleIndexSeries?
axiom
h: S := functorialCompose(e * e, e2 * e);
Type: CycleIndexSeries?
axiom
coefficient(h, 0)
LatexWiki Image(11)
Type: SparseDistributedPolynomial?(ACFraction? ACInteger?,CycleIndexVariable?,SparseIndexedPowerProduct?(CycleIndexVariable?,ACMachineInteger?))
axiom
coefficient(h, 1)
LatexWiki Image(12)
Type: SparseDistributedPolynomial?(ACFraction? ACInteger?,CycleIndexVariable?,SparseIndexedPowerProduct?(CycleIndexVariable?,ACMachineInteger?))
axiom
coefficient(h, 2)
LatexWiki Image(13)
Type: SparseDistributedPolynomial?(ACFraction? ACInteger?,CycleIndexVariable?,SparseIndexedPowerProduct?(CycleIndexVariable?,ACMachineInteger?))
axiom
coefficient(h, 3)
LatexWiki Image(14)
Type: SparseDistributedPolynomial?(ACFraction? ACInteger?,CycleIndexVariable?,SparseIndexedPowerProduct?(CycleIndexVariable?,ACMachineInteger?))
axiom
coefficient(h, 4)
LatexWiki Image(15)
Type: SparseDistributedPolynomial?(ACFraction? ACInteger?,CycleIndexVariable?,SparseIndexedPowerProduct?(CycleIndexVariable?,ACMachineInteger?))
axiom
coefficient(h, 5)
LatexWiki Image(16)
Type: SparseDistributedPolynomial?(ACFraction? ACInteger?,CycleIndexVariable?,SparseIndexedPowerProduct?(CycleIndexVariable?,ACMachineInteger?))