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

Edit detail for SandBoxSpeciesBayreuth2 revision 9 of 10

1 2 3 4 5 6 7 8 9 10
Editor: Thomas Feulner
Time: 2008/06/23 04:21:55 GMT-7
Note:

changed:
-A Graph Example:
Composition of Species:

changed:
-TwoSet(L: ACLabelType): CombinatorialSpecies L == RestrictedSpecies(SetSpecies, 2)(L) add;
-Graph(L: ACLabelType): CombinatorialSpecies L == FunctorialCompose(Subset, SetSpecies*TwoSet)(L)
kSet(L:ACLabelType, k:Integer): CombinatorialSpecies L == RestrictedSpecies(SetSpecies, k)(L) add;
kSubset(L:ACLabelType, k:Integer): CombinatorialSpecies L  == (RestrictedSpecies(SetSpecies, k)*SetSpecies)(L) add;
TwoSet(L:ACLabelType): CombinatorialSpecies L == kSet(L,2) add;
Graph(L: ACLabelType): CombinatorialSpecies L == FunctorialCompose(Subset, SetSpecies*TwoSet)(L) add;

added:
These are the definitions of Cycle and LinearOrder see SandBoxSpeciesAldor
  
\begin{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");
}

Perm(L: ACLabelType): CombinatorialSpecies L == Compose(SetSpecies,Cycle)(L) add;
\end{aldor}


changed:
-X:=TwoSet(Z);
-[structures(labels)$X]$ACLIST(X)
labels: SetSpecies Z := set [1::Z,2::Z, 3::Z, 4::Z, 5::Z]
[structures(labels)$kSet(Z,5)]$ACLIST(kSet(Z,5))
[structures(labels)$kSet(Z,2)]$ACLIST(kSet(Z,2))
[structures(labels)$kSubset(Z, 2)]$ACLIST(kSubset(Z, 2))
[structures(labels)$TwoSet(Z)]$ACLIST(TwoSet(Z))

changed:
-[structures(labels3)$X]$ACLIST(X)
[structures(labels3)$TwoSet(Z)]$ACLIST(TwoSet(Z))
[structures(labels)$Perm(Z)]$ACLIST(Perm(Z))
\end{axiom}
Some problems are appearing, calling

[structures(labels3)$Graph(Z)]$ACLIST(Graph(Z))
\begin{axiom}
es: ExponentialGeneratingSeries := generatingSeries()$Perm(Z);
[count(es, i) for i in 0..10]
\end{axiom}

These are the binomial coefficients of 2 and 4, respectively.
\begin{axiom}
es: ExponentialGeneratingSeries := generatingSeries()$kSubset(Z,2);
[count(es, i) for i in 0..10]
es: ExponentialGeneratingSeries := generatingSeries()$kSubset(Z,4);
[count(es, i) for i in 0..10]

added:
os2: OrdinaryGeneratingSeries := isomorphismTypeGeneratingSeries()$Perm(Z);
[coefficient(os2, i) for i in 0..5]
\end{axiom}

???

\begin{axiom}

removed:
-\end{axiom}
-
-Some problems are appearing, calling
-[structures(labels3)$Graph(Z)]$ACLIST(Graph(Z))
-
-\begin{axiom}

changed:
-A transposition $\tau \in S_5$ is an automorphism of
-\begin{axiom}
-32/3*factorial(5)
-32/3*2*factorial(3)
-\end{axiom}
-graphs.
Each transposition $\tau \in S_5$ fixes the same number of graphs, because of symmetry. We want to know how many graphs are fixed by transposition. Therefore we have to 
multiplicate the coefficient of $x_1^3x_2^1$ by factorial(n) and divide by the number of transposition in $S_5$:
\begin{axiom}
32/3*factorial(5)/(5*4/2)
\end{axiom}

Test the different Series defined for Species

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
   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
   ACIsomorphismType is now explicitly exposed in frame initial 
   ACIsomorphismType 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
   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
   Subset is now explicitly exposed in frame initial 
   Subset 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
   Times is now explicitly exposed in frame initial 
   Times 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
   CombinatorialSpecies is now explicitly exposed in frame initial 
   CombinatorialSpecies 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
   IsomorphismTypeCategory is now explicitly exposed in frame initial 
   IsomorphismTypeCategory 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
   Partition is now explicitly exposed in frame initial 
   Partition 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

Composition of Species:

aldor
#includeDir "/var/lib/zope/combinat/include" #libraryDir "/var/lib/zope/combinat/lib" #include "combinat" macro { E == EmptySetSpecies; X == SingletonSpecies; + == Plus; * == Times; } import from ACInteger; kSet(L:ACLabelType, k:Integer): CombinatorialSpecies L == RestrictedSpecies(SetSpecies, k)(L) add; kSubset(L:ACLabelType, k:Integer): CombinatorialSpecies L == (RestrictedSpecies(SetSpecies, k)*SetSpecies)(L) add; TwoSet(L:ACLabelType): CombinatorialSpecies L == kSet(L,2) add; Graph(L: ACLabelType): CombinatorialSpecies L == FunctorialCompose(Subset, SetSpecies*TwoSet)(L) add;
aldor
   Compiling FriCAS source code from file 
      /var/zope2/var/LatexWiki/328803476490765780-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 
      ./328803476490765780-25px002.lsp
   Issuing )library command for 328803476490765780-25px002
   Reading /var/lib/zope/combinat/src/328803476490765780-25px002.asy
   TwoSet is now explicitly exposed in frame initial 
   TwoSet will be automatically loaded when needed from 
      /var/lib/zope/combinat/src/328803476490765780-25px002
   kSet is now explicitly exposed in frame initial 
   kSet will be automatically loaded when needed from 
      /var/lib/zope/combinat/src/328803476490765780-25px002
   kSubset is now explicitly exposed in frame initial 
   kSubset will be automatically loaded when needed from 
      /var/lib/zope/combinat/src/328803476490765780-25px002
   Graph is now explicitly exposed in frame initial 
   Graph will be automatically loaded when needed from 
      /var/lib/zope/combinat/src/328803476490765780-25px002

These are the definitions of Cycle and LinearOrder? see SandBoxSpeciesAldor?

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"); } Perm(L: ACLabelType): CombinatorialSpecies L == Compose(SetSpecies,Cycle)(L) add;
aldor
   Compiling FriCAS source code from file 
      /var/zope2/var/LatexWiki/1726705911677297462-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/1726705911677297462-25px003.as", line 86: 
){
.^
[L86 C2] #2 (Warning) Suspicious juxtaposition.  Check for missing `;'.
Check indentation if you are using `#pile'.
   Compiling Lisp source code from file 
      ./1726705911677297462-25px003.lsp
   Issuing )library command for 1726705911677297462-25px003
   Reading /var/lib/zope/combinat/src/1726705911677297462-25px003.asy
   Perm is now explicitly exposed in frame initial 
   Perm will be automatically loaded when needed from 
      /var/lib/zope/combinat/src/1726705911677297462-25px003
   Cycle is now explicitly exposed in frame initial 
   Cycle will be automatically loaded when needed from 
      /var/lib/zope/combinat/src/1726705911677297462-25px003
   LinearOrder is now explicitly exposed in frame initial 
   LinearOrder will be automatically loaded when needed from 
      /var/lib/zope/combinat/src/1726705911677297462-25px003

axiom
Z := ACInteger;
Type: Domain
axiom
labels: SetSpecies Z := set [1::Z,2::Z, 3::Z, 4::Z, 5::Z]
LatexWiki Image(1)
Type: SetSpecies? ACInteger?
axiom
[structures(labels)$kSet(Z,5)]$ACLIST(kSet(Z,5))
LatexWiki Image(2)
Type: ACList? kSet(ACInteger?,5)
axiom
[structures(labels)$kSet(Z,2)]$ACLIST(kSet(Z,2))
LatexWiki Image(3)
Type: ACList? kSet(ACInteger?,2)
axiom
[structures(labels)$kSubset(Z, 2)]$ACLIST(kSubset(Z, 2))
LatexWiki Image(4)
Type: ACList? kSubset(ACInteger?,2)
axiom
[structures(labels)$TwoSet(Z)]$ACLIST(TwoSet(Z))
LatexWiki Image(5)
Type: ACList? TwoSet? ACInteger?
axiom
labels3: SetSpecies Z := set [10::Z,20::Z]
LatexWiki Image(6)
Type: SetSpecies? ACInteger?
axiom
[structures(labels3)$TwoSet(Z)]$ACLIST(TwoSet(Z))
LatexWiki Image(7)
Type: ACList? TwoSet? ACInteger?
axiom
[structures(labels)$Perm(Z)]$ACLIST(Perm(Z))
LatexWiki Image(8)
Type: ACList? Perm ACInteger?

Some problems are appearing, calling

[structures(labels3)LatexWiki ImageACLIST(Graph(Z))

axiom
es: ExponentialGeneratingSeries := generatingSeries()$Perm(Z);
Type: ExponentialGeneratingSeries?
axiom
[count(es, i) for i in 0..10]
LatexWiki Image(9)
Type: List ACInteger?

These are the binomial coefficients of 2 and 4, respectively.

axiom
es: ExponentialGeneratingSeries := generatingSeries()$kSubset(Z,2);
Type: ExponentialGeneratingSeries?
axiom
[count(es, i) for i in 0..10]
LatexWiki Image(10)
Type: List ACInteger?
axiom
es: ExponentialGeneratingSeries := generatingSeries()$kSubset(Z,4);
Type: ExponentialGeneratingSeries?
axiom
[count(es, i) for i in 0..10]
LatexWiki Image(11)
Type: List ACInteger?
axiom
es: ExponentialGeneratingSeries := generatingSeries()$Graph(Z);
Type: ExponentialGeneratingSeries?
axiom
[coefficient(es, i) for i in 0..5]
LatexWiki Image(12)
Type: List ACFraction? ACInteger?
axiom
os2: OrdinaryGeneratingSeries := isomorphismTypeGeneratingSeries()$Perm(Z);
Type: OrdinaryGeneratingSeries?
axiom
[coefficient(os2, i) for i in 0..5] Looking in IndexedOneDimensionalArray(FormalPowerSeries(SparseDistributedPolynomial(ACFraction( ACInteger()), CycleIndexVariable(), SparseIndexedPowerProduct(CycleIndexVariable(), ACMachineInteger()))), ??) for apply with code 376666083 >> System error: FOAM-USER::|fiRaiseException| is invalid as a function.

???

axiom
os: OrdinaryGeneratingSeries := isomorphismTypeGeneratingSeries()$Graph(Z);
Type: OrdinaryGeneratingSeries?
axiom
[coefficient(os, i) for i in 0..5]
LatexWiki Image(13)
Type: List ACInteger?
axiom
cs: CycleIndexSeries := cycleIndexSeries()$Graph(Z);
Type: CycleIndexSeries?
axiom
cs5:=coefficient(cs, 5)
LatexWiki Image(14)
Type: SparseDistributedPolynomial?(ACFraction? ACInteger?,CycleIndexVariable?,SparseIndexedPowerProduct?(CycleIndexVariable?,ACMachineInteger?))

The identity in LatexWiki Image fixes every graph, so the coefficient of LatexWiki Image must be equal to coefficient(es, 5). This is the background to the equation "es = cs(1,0,0,0...)"

axiom
coefficient(es, 5)
LatexWiki Image(15)
Type: ACFraction? ACInteger?

Each transposition LatexWiki Image fixes the same number of graphs, because of symmetry. We want to know how many graphs are fixed by transposition. Therefore we have to multiplicate the coefficient of LatexWiki Image by factorial(n) and divide by the number of transposition in LatexWiki Image:

axiom
32/3*factorial(5)/(5*4/2)
LatexWiki Image(16)
Type: Fraction Integer