plusungood@gmail.com
Infos about root systems
Why does this not break horribly?
>> R := rootSystem(["A",3])
>> alpha := R::weightLattice::simpleRoots
>> alpha[0]
0
MuPAD Pro 4.0.2 on Mac OS 10.4.11 has only /usr/bin and /bin in path.
shell::system seems to return an empty string ...
------------------------------------------------------------------------------
Add a warning in testargs() when a domain entry evaluates to toBeDefined
Add documentation for divided differences
- algebraMorphism(proc(i) option remember ...)
- dom::moduleMorphism::dual(f)
- dom::moduleMorphism(f, Remember)
(which could remember directly on the internal rank)
- Id'ee generale: plus de Math'ematiques dans les morphismes
- BasisChangeBasis -> poubelle
- declareRepresentationChange() (no onBasis)
- Category plugins for Dom::TensorProductOfFreeModule:
Cat::TensorProductOf(...)
- overloading: a domain could take the control of the conversions,
while remaining compatible with the
- testtype(domain, Dom::FreeModule)
- Type::Function(signature)
- Dom::ObjectWrapper
------------------------------------------------------------------------------
>> domain SymmetricAlgebraWithRootLattice3
>> inherits Dom::SymmetricAlgebra(R::rootLattice);
>> category Cat::GradedAlgebraWithBasis(Dom::Integer),
>> Cat::RootSystemRootLatticeRealization;
>>
>>
>> rootSystem := R;
>> simpleRoots := dom::basis::list(3);
>>
>> end_domain:
>> W := Dom::WeylGroup(SymmetricAlgebraWithRootLattice3):
>> W::count()
------------------------------------------------------------------------------
For a Cat::ModuleWithBasis:
dom::moduleMorphism := Hom(dom, *, Cat::ModuleWithBasis)
which is a domain, with methods:
- new (constructor, from basis)
- _inverse
- dual
- imageSet
- source
- kernel
- fiber
- matrix
------------------------------------------------------------------------------
More precise error message for
T:=combinat::treesGeneric([NodeLabel=Epsilon(combinat::trees::dummyLabel)],
Labelled, CompleteBinary):
T::list()
MaxLength=infinity pour les longueurs de Multiset & friends
Expression factorisée en produit de cyclotomiques -> q-entiers
For which GradedAlgebraWithBasis do we want to print a term
3 * oneBasis as 3 and not 3 oneBasis?
Données:
A: GradedModuleWithBasis (ou plus général: composantes homogènes, troncation)
SA: complété de A
x: produit filtré linéaire à gauche dans A et donc dans SA
F: série F = \sum_n f_n dans SA (typiquement donnée sous la forme
d'une fonction n->f_n)
Renvoyer une série G = \sum_n g_n de SA, sous la forme d'une fonction
n->g_n qui calcule l'inverse.
Même chose quand le produit est donné par une formule de coproduit.
$Id: TODO 6464 2007-06-16 18:40:56Z nthiery $
==============================================================================
TODO
==============================================================================
I) Libraries to create and features to add
II) Documentation
III) Specifications issues
IV) Integration of muEC
V) Bugs to fix
VI) Cleanup
VII) Distribution/autoconf/automake
==============================================================================
I) Libraries to create and features to add
==========================================
get rid of Dom::AlgebraWithBasis_Table
Use noDebug in reasonnable places
Add libraries for:
- enumerations
- tabloids
- set partitions:
move permutations::fromSetPartition there ?
Add the following types:
Type::Option (to document)
Type::OptionsTable (to document)
Type::Polynomial (basic implementation)
Type::PolynomialDomain (basic implementation)
Type::MemberOf(x)
Add the following functions:
polylib::variables (to document)
polylib::constructor (to document)
polylib::basis (can be a type or a domain)
polylib::terms
polylib::monomials (see sortMonomials) (to document)
polylib::support (to document); add conversion of expressions to polynoms
polylib::lsupport
polylib::nthsupport
polylib::mapterms
Move "alphabet to order" out of the words library to the root of
Combinat, a misc subpackage or an alphabet package (to be discussed).
Permutations:
- descentPolynomial or descentsPolynomial or descentMonomial ?
- minimal change ordering / hamiltonian path trough the permutoedron
(Trotter Johnson)
- typeDuplicateFree ?
- subpackage fromCycleType, with count = n!/z_\lambda (taille d'une classe de conjugaison)
replaces partitions::conjugacyClassSize ?
- Discuss cycleTypes
Word:
- shuffle product of several words
Partitions:
- rename centralizerSize ?
- toExp and fromExp is redundant with words::evaluation
fromExp might be called fromEvaluation
Now, is evaluation a good name, compared to, say, content ?
Weighted integer vectors:
- Add a generator
- Add generic constraints ? this should not arm much with the
backtrack algorithm.
- Make a link to combinat::decomposableObjects([T=Multiset(.....)]);
IntegerListsLexTools:
- Add last/previous
- Extend to work with n in a range
- Extend to work with non-constant slopes
- Check this reference: "Omega: written in Mathematica by Axel Riese,
is an implementation of MacMahon's Partition Analysis for the
computation of generating functions for the integer solutions to
systems of linear equations and inequalities."
- Check this reference:
% Jean B. Lasserre
% La valeur optimale des programmes entiers
% Calcul de la valeur de la solution optimale d'un programme linéaire
% en entiers w.r.t. en rationnels
Dyck words:
- add generator using IntegerListsLexBuiding
- rank / unrank
Partitions:
rank / unrank
Composition:
descents / fromDescents is ambiguous with descents/fromDescents
of combinat::words. Rename it to set/fromSet
Integer Matrices:
Fast count by exploring the tree / or computation in symmetric functions
Provide standard options MinPart and MaxPart
Make sure that there is no backtrack with MinPart and MaxPart
fromStandardPermutation instead of fromStandard ?
Subsets:
lexicographic generator
graycode generator / ranking / unranking
k-subsets:
lexrank/unrank, colexrank/unrank, minimal change ordering
random generation in linear time (Floyd's algorithm)
Deduce from it a sampleFromUnrank in Cat::CombinatorialClass
sample(k, )
returns a sample of k distinct objects of size
Set partitions:
<-> RGF, RGF generator, RGF rank/unrank,
Linear Extensions:
count (cf. Pouzet?), random
Shouldn't we use < when all the vertex are in Dom::Real ?
Implement as a dynamic module (especially for count)
Tableaux:
There should be some kind of link so that the user can guess
that counting semi standard tableaux can be done with kostka.
Make kostka work also for semi-standard tableaux.
Allow for tableaux of shape such as [0], or [3,2,0,0] ?
Yes... See combinat::catalan.
Type Checking: the shape of a tableau MUST be a partition.
type and testtype are not coherent!
content, evaluation
vertical alignement of skew tableaux and ribbons
Standardization of isAStandard
Trees: see http://mupad-combinat.sf.net/Wiki/Trees
output of the empty tree?
Decomposable Objects:
BUGS:
- The hack to avoid deep recursion is not perfect. The first time,
Calling count(1\0000, B) will force the computation of all the
intermediate values, even in cases where this is not useful.
TODO:
- Map is a more explicit name than Alias
- When count is not available, but generator is, use
countFromGenerator.
- Sandrine: give directly the description as a graph (or
automaton), use the intersection of automatons, and do the
decomposable stuff afterward (but how to deal with loops of
length in a range?)
- Put in the documentation:
Trick to generate efficiently all objets of A of size <= n:
Alias(Prod(A,Domain(Dom::Natural)), op, 1)
Extension needed to use the groebner basis stuff.
or just:
Alias(Prod(A, Sequence(Z), op, 1))
- Bolzman method? Useful for Sandrine?
- modify addProduction / ... to specify a prefix for the
generated non terminals, in order to have more meaningfull names
Partial support in genident. Do the full stuff with Florent.
- Define a politic for warnings / userinfo / errors
- Rename operators to use names that reflect their combinatorial meaning
Color/AddMark/Mark/EraseMark/DeleteMark/UnMark for Int Theta MultX DivX
PopMin PopMax
Diagonal/Repetition/ instead of Delta
Backward compatibility (including with Maple) is unimportant as
none of them is documented
Use DivX / MultX ? Or call them as integration/derivation on exp gen functions ?
or shift on coefficients?
Better use names which describe their combinatorial meaning,
to be coherent with Union, Prod, Set, MultiSet. AddLabel/RemoveLabel?
Mark/Unmark? MarkFirst / MarkLast / UnmarkFirst?
- provide minSize / maxSize for combinatorial classes
- Maybe, upon request provide minCard / maxCard for set
- Most likely set the default minLength for Cycle to 1
Beware of backward compatibility
Maybe, upon request, provide a way to set the default (but beware
not to break usage of Cycles at over places in the code).
- Order for unrank and generator for labelled structures:
- choosing first the objects and then the labelling is faster
by a constant time factor (which depends on the
specification: think of permutations defined as sequences).
- Do we need to have unrank and generator be coherent?
- Due to the Alias feature, the reverse option is more efficient for generator
- Use RD_INF instead of infinity for valuations ? The overhead does
probably not justify this.
- Use polynomials instead of tables as storage for the generating
functions?
- Extract a library for generating functions (cf. combinat::countingFunctions)
- Reinsert the lazy product
- Check that the holonomic product is not relevant for the labelled case,
and use instead counting functions of the unlabelled case * n!
- The Alias feature and the generation are two orthogonal
processes. It may be useful to allow to change the Aliases at
run time, that is, make a table: (NonTerminal = AliasProcedure)
which is called systematically. Note: this can be currently
already done with parameterized Alias procedure. Drawback of the
current method: it is not possible to add a new alias (Florent).
- Use exponential generating functions for counting?
Advantages:
- less binomial coefficients
- use holonomic products for the labelled case as well
Drawbacks:
- more multiplications by n! in unrank/random/
- computations with rational numbers for non
context-free specifications
Altogether: probably to be done at some point
Are standard tableaux decomposable? (probably not)
Accept empty cycles? (probably not by default)
How to deal with Set(A) when A has empty objects?
probably give an error.
Analysis of complexity & Benchmark of our implementation
Unranking of subsets of a given cardinality without computing
billions of binomial coefficients
- Generator for labelled case: Done
Problem: due to the maintainance of the labels, the worst case
complexity of each iteration is n^2.
Possible solution: instead of passing down lists of labels,
maintain separately one list of labels (corresponding to the
labels of the generated object, read in infix order), and just
pass pointers to the first label, and the number of
labels. Also, maintain, for each node for which the last
splitting of the labels has not been reached, a permutation
(stored as a table(15=10,10=15)) that allows to restore the list
of labels to its state as it was just after the computation of
the current splitting at this node level.
- constant time generator (not ammortized!) for the k-subsets of {1..n}
Not possible with lexicographic ordering. Maybe with a Gray code?
- Subst: Example of "useful" grammar where Subst is used recursively.
- Unlabelled case
Conrado:
count for Power/Multi set(A, constraints) given countA(n) (~done)
count for Cycle(A, constraints) given countA(n)
count for Lyndon(A, constraints) given countA(n)
(probably using a generic algorithm that takes u(n) as in Delta)
(or continue to use Int Theta Delta)
(beware: Cycle and Lyndon do not use the same formula as Power/Multiset)
- generator for unlabelled Sets / Cycles / Lyndon
Done, up to missing optimization when count is not available
- unrank for unlabelled Powerset / Multiset
- Define a combinatorial class for classes with a single element
to implement atoms/epsilons:
combinat::singleton(label, size, weight, ...)
- Rewrite Predefined in terms of Domain
Needs for Sandrine-Dominique Gouraud:
- Big grammars, but not so big n
- random
- count ?
- module dynamique ?
ordre de grandeur 850 chemins de taille 255; grammaire de taille 65
numbers with 20 decimals; computations in integers with gmp should be fine
- repeatedSquaring labelled cycles via sequences
- generatorFromRank
- generatorFromRank(r, n, k):
build a generator that starts at given rank
- Implement Multiset/... in makeUnrankFunctions, unlabelled case (Xavier)
- Suggestions: use PSet / MSet as shortcuts for Powerset Multiset
- Extend decomposable objects to indexes in a combinatorial class
with product (or dual coproduct) / counting over a general algebra:
- disable valuation / degree stuff ?
- generator for the coproduct
"unrank" for the coproduct (look at the labelled case)
- Use any combinatorial class with coproduct as grading
Dom::PermutationGroup:
- generators ?
Domains:
IndexedMultiplicativeBasis: domain of indexed elements s[...],
such that s[1,2]*s[4,5]=s[1,2,4,5] ?
AlgebraWithBasis:
- conversion from a table ?
- normalised representations (ie: canonical representation)
SymmetricWeylAlgebra:
Yang Baxter graph:
- See lib/EXPERIMENTAL/YangBaxterGraph.mu
Symmetric functions:
- See top of the source file lib/EXAMPLES/SymmetricFunctions.mu
Schur/Schubert and variations:
- examples::Schubert (n=infinity)
- G := YangBaxterPolys([T1,...,Tn-1], Affine=W, Seed=..., Vector=[v1...vn]);
Instanciations:
- Jack
- MacDonald
G::fromReducedWord([...]);
G::checkRelations
Action from position \mu following 1 in the graph: T1 + k_\mu([v1..vn])
Categories to create/modify:
- Cat::Bialgebra ?
- Cat::BialgebraWithBasis
- Cat::Coalgebra
- Cat::CoalgebraWithBasis
- Cat::Algebra ?
- Cat::GradedAlgebra (with truncate, homogeneousComponents, ...)
- Cat::FiniteCollection and Cat::HomogeneousFiniteCollection could inherit
from Cat::CombinatorialClass
FreeModule:
- extend moduleMorphism / algebraMorphism to fetch the ImageSet
from the function passed as argument
- Fix everywhere makeLinear / makeBilinear into moduleMorphism multiModuleMorphism
(see moduleMorphism.patch)
Names for:
- straighten / straightenBasis; any need for straighten ?
If yes, it should probably be defined in the category.
- basisType
- exprTerm, exprMonomial, exprBasis ?
- printTerm, printMonomial, printBasis ?
- multcoeffsLeft
- operators::_plus / operators::plus ?
- operators::_mult / operators::mult ?
- mapCoeffs / mapCoeffsNocheck ?
Add division by scalars
Should we separate coeff(x,t) and coeffs(x) for efficiency ?
Allow for Semi rings or coefficient domains with even less structure
Allow to disable zero checks
Allow for non commutative ring in Cat::Module
- Should we continue to implement generate/generate1 ? generate is not
really meaningfull when the internal data structure is not a sorted list.
- Rename generate to fromList ?
- Rename generate1 to monomial ?
- Should degree / degreevec be in Cat::FreeModule ?
Should they try to call BasisType::degree, or degree ?
Don't need to use lazy_and in those procedures
- some general mechanism to compute in a quotient modulo an ideal ?
The current Weyl algebra over Dom::ExpressionField() also declares
a conversion from Dom::ExpressionField(). This gives a conflict:
W(x1)*x1 is currently resolved as multcoeffs(W(x1),x1) because
it requires no conversions, where as W(x1)*W(x1) requires one.
- Cat::Module: should it enforce that:
- the left and right multiplication coincide ?
- the ring is commutative ?
alternatively, we could add an axiom that states this property,
and is set by default to yes when the ring is commutative.
- Use capitals for local variables and parameters of domains
Conversions:
- What conversions should we provide for facade domains that represent
a subset of its representation domain ?
- Should we allow two successive explicit conversions ?
e.g.: DOM_LIST -> combinat::partitions -> Free_Module(R, combinat::partitions) ?
Should combinat::compositions::finers inherit from combinat::compositions?
In general, should a subset of a set inherit from it's superset ?
How should be defined tensor() and tensor(a) ?
operators::overloaded:
- Should the overloaded functions like tensor, _mult, ... be defined in
the library operators ?
- Use a funcenv in operators::tensor for the pretty printing of
unevaluated tensor products
- New flag Promotion for declareConversion.
Use advanced costs in the graph (via a domain), in order to take into
account more things, like whether a promotion did occur.
Allow for policies in overloaded operators like:
- forbidding simultaneous promotions of all of the arguments
- forbidding promotions on a specific argument
combinat::subClass:
- should it always be a facade domain?
Linbox:
- Learn how to write C++ executables
- Make a C++ executable that reads matrices "on the fly" for wiedemann
- Cleanup SparseMatrix_Linbox
- Check the "string memory leak" problem
Link with kbmag2?
KBMAG stands for Knuth-Bendix on Monoids and Automatic Groups.
http://www.maths.warwick.ac.uk/~dfh/download/kbmag2/
Weighted automatons:
- compute the generating series, or make a link with decomposableObjects
to do it (benchmark!)
- constructor from a Graph?
==============================================================================
I bis) Test suite
=================
- Systematically do the prog::check after the testexit() in the test files
- Systematically include timing information
==============================================================================
I ter) Benchmarks
=================
We start to have little benchmarks all other the place. Maybe we should
decide to put them in a standard place, like:
lib/COMBINAT/TEST/permutations.benchmark
==============================================================================
II) Documentation
=================
- In the tutorials, put pointers to the most important categories
(Cat::ModuleWithBasis, ...).
- In the doc Cat::ModuleWithBasis, put a link to Dom::FreeModule for how
to manipulate free module elements.
- In the doc of Dom::FreeModule, use Dom::FreeModule([a,b,c]) as basic
example, and fix R, C to C, R.
- Add missing in all titles
- Cf. Papers/README
- Find a short mantra for the documentation of nops, op, ...
tableaux, skewTableaux, trees & friends, ribbons ribbonsTableaux
- Explanations about typed combinatorial objects:
- Preface & design notes (Nicolas)
- Live demonstration tour / tutorial:
Link automatons <-> decomposable object via an appropriate language
generic trees + large random labelled tree
- Systematic ispell (Teresa)
- Documentation examples:
TODO: combinat (skewTableaux, matrices), index (demonstration, exercises)
- Proofreading:
- combinat::ribbonsTableaux: (Nicolas + Francois)
- combinat::countingFunctions
- combinat::decomposableObjects: (Francois)
Mark Unmark (Nicolas)
- combinat::genericTrees, Cat::TreesClass
- combinat::necklaces, combinat::lyndonWords
- combinat::independentSetsOfVectorSpaces
- Cat::DecomposableClass
- Cat::ModuleWithSeveralBasis
- Doc writing + status update:
- copying of generators: Florent
- integerVectorsOfLength
- AlgebraWithBasis
- Dom::SparseMatrixLinBox (beta)
- examples::SymmetricFunctions: status, usage of lrcalc/symmetrica (Nicolas)
- prog::bless (virer la doc lorsque mupad300 sera sorti)
lister les nouveaux packages (Teresa)
isA, type, ... done Florent + vérifier les packages
finiteClass (alpha)
getOptions (internal)
GLIP (internal)
imageClass (alpha)
integerVectorsModPermutationGroup (alpha)
MachineIntegerListsLex (internal+François)
nbspcols
rankers (FH) ? s'il y a le temps
subClass (alpha) mention dans l'intro de combinat
tools (internal)
Domains:
- Semirings (Eric)
- WeightedAutomatons (Eric)
Categories:
- Don't use rotating for the platform table in the .mdvi version
- Put highlighted links to the different documents at the toplevel index
- Fix all the broken html links (in particular in reference like combinat::words::evaluation
- Write a report on what has been imported from ACE / muEC.
- Add the examples of Florent:
combinat::permutations::generators([(i$compo[i])$ i=1..nops(compo)]);
permet de lister tous les mots d'une évaluation donnée ce qui fait que
combinat::generators::map
(
combinat::permutations::generator([(i$compo[i])$ i=1..nops(compo)]),
combinat::permutations::standard
);
liste le shuffle de (Id_i1, Id_i2, ... Id_ik)
- Fix the inputs as suggested in doc/dvi/checkinput.log
- Improve the documentation of integerListsLex*
- Add an index
- Add more pictures to the documentation of partitions and tableaux,
using tableaux.sty, or some similar LaTeX package. Or use ASCII
drawings.
- Write tutorials.
- Provide missing style files ?
hyperref.sty, booktabs.sty, beton.sty ?
eec/*.tfm ? /usr/share/texmf/tex/latex/koma-script ?
- With certain latex distributions, one get errors such as:
! TeX capacity exceeded, sorry [pool size=92864].
Now, we provide a directory local texmf.cnf file, with pool size=150000.
That should take care of all tetex based distributions.
- Splitting of long documentations (like permutations) by theme:
Option I: Use sections similar to Mathematical methods
Option II: use the same style as export/unexport which allow
for documenting several related functions in the same page.
We currently use option II, but Christopher as advocated
recently (september 2004?) to use option I, now that the
help pages allow for creating new section types
- Improve interface concistency checks
- Don't test interfaces of parametrized domains (how to?)
- Fix the others! (generators, ...)
==============================================================================
III) Specifications issues
==========================
- nonCrossingPartitions:
- Type: (sorted?) list of lists or set of lists ?
(see mail discussions with Mathieu Dutour)
Should be coherent with setPartition...
move to setPartition::nonCrossing.
Choose proper names for:
- combinat::*::less / before ?
- combinat::*::convertTo
- generators::repeater => generators::loop ?
- combinat::words::evaluation*
- tableau hyper standard / normalise ?
- tabloide / tableau ?
- combinat::tableaux::toPartition / shape
- cartesian product or Cartesian product ?
- toWord / word ?
- insertLetter / insertWord
Choose proper names and protect options
- combinat::words::alphabetType ou typeAlphabet
The following compat BUG with MuPAD 2.5.3:
- problems with arithmetic (lodo), generate::TeX with
Dom::DistributedPolynomial.
- partialSpecialization and kernel simplifications.
- FreeModules and strprint
==============================================================================
IV) Integration of muEC
=======================
- COMP, PART, ... are now subpackages of muEC to avoid polluting the
global namespace.
- Integration of the documentation: PART (with bug fixes), TYP, COMP
(with unfixed bugs), SP, SG (with bug fixes, and unfixed bugs), SFA
(with unfixed bugs), SYMF (with bug fixes, with unfixed bugs)
- /MUEC/sources/modules/sources/SYM/def.h:56:9
gcc-2.96 complains: "not" cannot be used as a macro name in C++
This can be simply fixed by removing the #define
- Added hold's everywhere on the indexed objects m, p, s, h, X, XX, ...
to make the SYMF, SFA, and SP libraries less vulnerable to name
clashes with global variables.
- SYMF::Plete*:
Rewrote the option testing to avoid the use of an uninitialized variable.
Demander a Vincent Prosper:
- les fichiers de tests
- comment il s'y prenait pour g'en'erer la documentation
- de quelle version de Symmetrica il est parti
- differences entre *.h dans Symmetrica-module et Symmetrica
Things that could be reused in combinat:
- SG -> combinat::permutations
- PART -> combinat::partitions
- COMP -> combinat::compositions (DONE)
Update the source code for Symmetrica from:
http://www.mathe2.uni-bayreuth.de/axel/symneuholen_engl.html
Things to be cleaned in mu-EC:
- Replace all _seqgen and _seqin by $:
- Done for SFA/SfAExpn.mu. I hope I did not break anything.
- Done at a few other places as well
- Some functions declared in MuEC seems not to be implemented:
- muEC::TYP::IsFs
- muEC::SP::ToXX_heart
- muEC::SYMF::Plethh
- muEC::SYMF::Muir1
Calling them now raises a "not implemented" error (see lib/MUEC/*.mu)
- muEC::SP::Pe2x_vect uses l[-1] to access the last element of
a list. I'd be surprised if this works.
- Update the banner
- Fix bugs revealed by the documentation
==============================================================================
VI) Cleanup
===========
- standardize bla_bli blaBli bla_Bli bla::bli
==============================================================================
VII) Distribution/autoconf/automake
===================================
- Change the Wiki engine, possibly to mediawiki
- Move the wiki/ subdirectory to something like wiki-text, to avoid
a name conflict with Wiki under windows / darwin
- The rpm file list does not include the directories; so those are
not deleted appropriately when the rpm is removed.
- Fix non portable use of echo -e '...\n...' in the makefile
see info autoconf, Limitations of shell builtins
- Rule to run the MuPAD-dev tests:
(for file in **/*.tst; do echo $file; echo quit | mupad -S -P pe < $file; done) >! checklog 2>&1
- Emit a warning if the MuPAD version is inappropriate for
documentation tests
- Get MuPAD_VERSION dynamically?
- Check for g++ in configure
- make update-mupad-cvs-package (and probably the others as well)
does not remove files that have been deleted.
- Fix the CVS repository in the distribution so that it allows for
anonymous update
- Prepare the survey on sourceforge
- Add MuPAD to the programming langages on sourceforge
- Check standard headers for all files + license header ?
- use AC_ARG_WITH instead of AC_ARG_ENABLE for glip ?
- installation of stuff in the MuPAD package does not respect =inst
should it ?
- Should MUPAD and other variables be declared as precious variables
with AC_ARG_VAR ? This would in particular add documentation to
./configure --help
cf. info autoconf, Setting Output Variables
- Use AC_SUBST_FILE to include the makefile fragments in config/*.am ?
- Cleanup compilation of dynamic modules:
- .mdh's and .mdg's should be copied into linux/modules
- Add stuff to CLEANFILES automatically
- fix BUILT_SOURCE and mmg ?
- Disable the call to AM_PROG_MUPAD_MMG when dynamic modules are disabled
- add mupad.m4 and such to $(datadir)/aclocal (see info autoconf)
- Test suite:
- make distcheck does not take into account the result of the test suite
- use autotest in GLIP as exercise, and generalize to MuPAD-Combinat
if apropriate
- Avoid running tests relying on dynamic modules when those are disabled.
Done for IPC.
- are html files cleaned up properly in doc/html ?
- --enable-pdf-documentation sets enable-dvi-documentation, but does
not run the corresponding tests like checking for latex
- Remove the following directories from the CVS server:
MAPITL/TEST (after cleanup)
GLIP/*.test
MuPAD-Combinat/test (after cleanup -> tests and removal of subdirs)
doc/ascii/COMBINAT/
- Make sure the installation procedure work with non-GNU make:
Maybe use old-fashionned suffix rules .cc.mcc: ...
- Add make doc-dvi / doc-pdf ? Check in the autobook if there
are standard dependencies for the doc.
- Cf. info autoconf, Changed Makefiles:
Add `@CFLAGS@', `@CPPFLAGS@', and `@LDFLAGS@' in your `Makefile.in'
files, so they can take advantage of the values of those variables
in the environment when `configure' is run. Doing this isn't
necessary, but it's a convenience for users.
Also add `@configure_input@' in a comment to each input file for
`AC_OUTPUT', so that the output files will contain a comment
saying they were produced by `configure'. Automatically selecting
the right comment syntax for all the kinds of files that people
call `AC_OUTPUT' on became too much work.
Use the following macro for MuPAD version testing
dnl AC_TEST_VERSION(AVAILABLE-VERSION, NEEDED-VERSION [, ACTION-IF-OKAY [, ACTION-IF-NOT-OKAY]])
dnl written 15 December 1999 by Ben Gertzfield
dnl This code is released under the GNU GPL, version 2 or later.
AC_DEFUN(AC_TEST_VERSION, [
AC_PROG_AWK
changequote(<<, >>)dnl so [] don't get destroyed as quotes
ac_got_version=<<`$AWK 'BEGIN { \
first_ver_len = split(ARGV[1], first_ver, "\."); \
second_ver_len = split(ARGV[2], second_ver, "\."); \
\
if (first_ver_len > second_ver_len) { \
greater_len = first_ver_len; \
for (i = second_ver_len + 1; i < first_ver_len + 1; i++) { \
second_ver[i] = 0; \
} \
} else { \
greater_len = second_ver_len; \
if (second_ver_len > first_ver_len) { \
for (i = first_ver_len + 1; i < second_ver_len + 1; i++) { \
first_ver[i] = 0; \
} \
} \
} \
\
for (i = 1; i < greater_len + 1; i++) { \
if (second_ver[i] > first_ver[i]) { \
print "failure"; \
exit; \
} \
} \
print "success"; }' $1 $2`>>
changequote([, ])dnl now [] are quotes once again
if test $ac_got_version = "success"; then
ifelse([$3], , :, $3)
else
ifelse([$4], , :, $4)
fi
])
- Automatize building of package on the sf compile farm
ppc-osx2, ...
- Windows installation:
NSI: use MUPADdir as default installation directory, unless one can
get it by looking in the Windows registers.
MuPAD-Combinat-1.3.2.exe using MUPAD_PACKAGE_VERSION and PKG_STATUS