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

Edit detail for SandBoxSpecies revision 3 of 8

1 2 3 4 5 6 7 8
Editor: Bill Page
Time: 2008/08/07 10:39:08 GMT-7
Note: new version of FriCAS and Aldor interface

added:
)version

Test species in axiom/FriCAS?.

The species project is written in Aldor. Thus we need to load the libraries explicitly:

axiom
)version
Value = "Thursday August 7, 2008 at 07:01:07 "
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
   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
   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
axiom
)lib csaxcompat2.ao
axiom
Reading /var/lib/zope/combinat/src/csaxcompat2.asy
   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
   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
Won't parse: (Type)->NIL
axiom
)lib csistruc.ao
axiom
Reading /var/lib/zope/combinat/src/csistruc.asy
   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 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
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
   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
)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
   OrdinaryGeneratingSeries is now explicitly exposed in frame initial 
   OrdinaryGeneratingSeries will be automatically loaded when needed 
      from /var/lib/zope/combinat/src/csgseries
   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
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
   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
   Partition is now explicitly exposed in frame initial 
   Partition 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
   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
axiom
)lib csexamples.ao
axiom
Reading /var/lib/zope/combinat/src/csexamples.asy
   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
   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
Won't parse: (Type)->NIL
Won't parse: (ACLabelType)->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

We took the decision not to rely on the Axiom algebra. Unfortunately, this means that integration in Axiom is a little unsatisfactory. Eg., instead of Integer and List, we need to use ACInteger and ACList. Often explicit coercions are necessary.

This should give the set partitions of {1,2,3,4}

axiom
l: SetSpecies ACINT := set [i::ACINT for i in 1..4]
LatexWiki Image(1)
Type: SetSpecies? ACInteger?
axiom
[structures(l)$Partition ACINT]$ACLIST(Partition ACINT)
LatexWiki Image(2)
Type: ACList? Partition ACInteger?

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-25px003.as using 
      AXIOM-XL compiler and options 
-O -Fasy -Fao -Flsp -laxiom -Mno-ALDOR_W_WillObsolete -DAxiom -Y $AXIOM/algebra -I $AXIOM/algebra
      Use the system command )set compiler args to change these 
      options.
   Compiling Lisp source code from file 
      ./5200085684951427974-25px003.lsp
   Issuing )library command for 5200085684951427974-25px003
   Reading /var/lib/zope/combinat/src/5200085684951427974-25px003.asy
   A is now explicitly exposed in frame initial 
   A will be automatically loaded when needed from 
      /var/lib/zope/combinat/src/5200085684951427974-25px003

Due to types not being first class objects in the Axiom interpreter, we had to write a little interpreter to allow for user specified species:

axiom
T := Interpret([parse "Plus(SingletonSpecies, Times(Self, Self))"], ACInteger);
Type: Domain
axiom
)sh T
Interpret([CONCATPlus(PAREN (AGGLST (CONCAT (NOTHING) SingletonSpecies) (CONCAT Times (PAREN (AGGLST (CONCAT (NOTHING) Self) (CONCAT (NOTHING) Self))))))],ACInteger) is a domain constructor. Abbreviation for Interpret is INTERPR This constructor is exposed in this frame. ------------------------------- 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 %
l := set [i::ACINT for i in 1..3]
LatexWiki Image(3)
Type: SetSpecies? ACInteger?
axiom
[structures(l)$T]$ACLIST(T)
LatexWiki Image(4)
Type: ACList? Interpret([CONCATPlus(PAREN (AGGLST (CONCAT (NOTHING) SingletonSpecies) (CONCAT Times (PAREN (AGGLST (CONCAT (NOTHING) Self) (CONCAT (NOTHING) Self))))))]?,ACInteger?)

We are still not 100% sure how to represent isomorphism types. So far, we had two ideas: in the iso-experiment branch, we have separate (but tightly connected) representation:

axiom
m: MultiSet ACINT := multiset([1$ACINT for i in 1..3]::ACList ACINT)
LatexWiki Image(5)
Type: MultiSet? ACInteger?
axiom
[isomorphismTypes(m)$MultiSet(ACINT)]$ACList(MultiSet ACINT)
LatexWiki Image(6)
Type: ACList? MultiSet? ACInteger?

axiom
IsoT := ACIsomorphismType(ACINT, T)
LatexWiki Image(7)
Type: Domain
axiom
)sh IsoT
ACIsomorphismType(ACInteger,Interpret([CONCATPlus(PAREN (AGGLST (CONCAT (NOTHING) SingletonSpecies) (CONCAT Times (PAREN (AGGLST (CONCAT (NOTHING) Self) (CONCAT (NOTHING) Self))))))],ACInteger)) is a domain constructor. Abbreviation for ACIsomorphismType is ACISOMO This constructor is exposed in this frame. ------------------------------- Operations --------------------------------
?=? : (%,%) -> Boolean coerce : % -> OutputForm hash : % -> SingleInteger latex : % -> String ?~=? : (%,%) -> Boolean ?<<? : (OutputForm,%) -> OutputForm isomorphismTypes : MultiSet ACInteger -> Generator %
[isomorphismTypes(m)$IsoT]$ACList(IsoT)
LatexWiki Image(8)
Type: ACList? ACIsomorphismType?(ACInteger?,Interpret([CONCATPlus(PAREN (AGGLST (CONCAT (NOTHING) SingletonSpecies) (CONCAT Times (PAREN (AGGLST (CONCAT (NOTHING) Self) (CONCAT (NOTHING) Self))))))]?,ACInteger?))

debugging needed here... On my computer, the last statement yields

On my computer, the last statement yields:

  (13)  [r([1], ([1], [1])),r(([1], [1]), [1])]

Very likely, the bug is due to the broken aldor interface. Ralf is working hard on that.