Next: , Previous: Variable names, Up: Top


16 Changes

Version 1.7.0 (December 28, 2007)

Updated manual with some information about how to use the Principle Writer.

Version 1.6.53 (December 27, 2007)

Updated manual with the latest grammars.

Version 1.6.52 (December 21, 2007)

More fixes, most importantly, fixed the CSP and FlatZinc output again. Until I have time for more documentation, for Flatzinc to work, you need to install Gecode, and then the FlatZinc-reader (it's a separate program), and then call it like this on the FlatZinc output file test.fzn

     fz -mode stat -solutions 0 test.fzn

Here, -solutions 0 means “find all solutions”. Call fz --help for the options of fz.

This is it for now, my last day at university has ended. End of this year (after Xmas), I will make an official last uni-release (1.7.0 or whatever). After that, I hope Jorge and Denys will step in again to continue development, with me helping in my spare time (or in the time I have when traveling to/from my new workplace SAP).

With the PW even in this shape, the XDK should actually become very useful at least for teaching dependency grammars, but also for developing/prototyping new kinds of dependency grammars.

Also, it is a challenging topic more in the realms of constraint programming to continue working on the optimizer of the principle compiler. Jorge has already done a lot of work, which he should really bring in a form to publish, but there is ample space for more optimizations.

Version 1.6.51 (December 21, 2007)

Lots of small fixes everywhere :)

Version 1.6.50 (December 20, 2007)

First version with 1) lots of unnecessary stuff removed (support for deep guards, support for Gdbm, node/edge constraints, constraints type/lattice etc.) and 2) lots of new stuff, mostly done by Jorge: Principle Writer optimizations, memoization, lazy variables, dynamic profiling, type inference etc. To be documented soon.

Version 1.6.43 (September 20, 2007)

Removed support for let expressions again, kept only the old PW code not yet touched by Jorge. Jorge has implemented a new, much cooler version of PW which I'll integrate as soon as I can... stay tuned. It's really great stuff.

You can now use the usual valency notation using wild cards also for tuples (PW valency principle). That is, no need to write [a "?"] anymore, just write a? as before.

New grammar (regdgPW.ul) and principles to model regular dependency grammars (Kuhlmann/Moehl ACL 2007). Being able to model regular dependency grammars means that we can prove that XDG is at least as expressive as LCFRS!

Added fix to GraphPWConstraints, was incomplete if confronted with cyclic graphs.

Version 1.6.42 (July 23, 2007)

Added support for let expressions done by Jorge. Thanks again!

Added new node record feature pos, and removed the pos feature from all order principle model record definitions. That means that now all dimensions share the same positions for their nodes.

Great simplification: the solver can now be explicitly instructed to “parse”, i.e., to equate the position with the index, or “generate”, i.e., leave the pos feature untouched and distribute over it. The switch is in the Search pulldown menu (or the --mode/-m commandline switch).

This change bereaves the XDK somewhat of its flexibility, but makes it much simpler as well. And, most important, it fits better with the latest formalizations of XDG.

As a consequence of this simplification, I could remove the Parse and SameOrder principles.

Added hand-optimized versions of some of the PW principles suffixed PW1.oz in Solver/Principles/Lib. Now we need a compositional way of obtaining these optimizations...

Version 1.6.41 (July 20, 2007)

Added a transparent fix of FS.reified.include to Share.oz. FS.reified.include is broken in Mozart 1.3.2 (see Mozart users list), as Jorge has found out by deep private investigation. Thanks a lot! The fix however makes the XDK slower, I hope there will be a fix to Mozart someday.

First version of dissPW.ul works with only PW principles, same number of solutions (except for one sentence), and almost the same propagation, but much slower as the principles are not yet optimized.

Version 1.6.40 (July 19, 2007)

Continued writing PW principles for dissPW.ul. Now finished, almost works properly :-)

Version 1.6.39 (July 18, 2007)

Important bugfixes to xdk.oz (Inspect Lexical Entries) and Compiler/Lattices/Set.oz (EncodeProc1 only worked properly for intersective sets).

New principles for new grammar dissPW.ul (dissertation grammar with PW principles).

Added set generator expressions and unequality to PW language, added set equality to Solver/Principles/Lib/PW.oz.

Version 1.6.38 (July 17, 2007)

Integrated IsIn optimization code into the Solver/Principles/Lib/PW.oz, thereby simplified the optimizer a lot. Same efficiency!

Version 1.6.37 (July 16, 2007)

Added new optimizations for negations/conjunctions/disjunctions/equivalences.

Added PrincipleWriter directory containg the work-in-progress principle compiler.

Version 1.6.36 (July 13, 2007)

Slight addition to the grammar record specification: now includes feature as, a list of all words in the lexicon of the grammar.

Added slight optimization to PW: now, all lattices used for encoding are created only once at the beginning of the constraint functor. As a result, all automatically generated functors with suffix PW1 are now as fast (even a bit faster) as their quasi-automatically generated functors with suffix PW.

Removed all grammars and principles with suffix PW1, and replaced the principles with automatically generated ones using the latest PW.

Version 1.6.35 (July 12, 2007)

Modularized PW. Now we have an executable pw.exe in the PrincipleWriter subdirectory, which is the first live running version of PW! It still misses type inference and type checking, but it does already do some optimizations. To compile a principle and add it to the principle library, type:

     pw.exe -p Examples/valencyPW.ul

To omit the optimizations, add --nooptimize.

Version 1.6.34 (July 11, 2007)

Added further optimizations to PW and indentation a la the emacs mode for Oz. Ready to be modularized tomorrow.

Fixed a bug in pwtest1.oz found by Jorge Marques Pelizzoni.

Version 1.6.33 (July 9, 2007)

Now the PW works for the first time and generates non-optimized principles. Used it to generate all PW1-suffixed principles, and, voila, seems to work with the example grammars.

Lots of stuff still to do:

Version 1.6.32 (July 5, 2007)

New PW grammars nut1PW.ul and nut1PW1.ul, the latter again unoptimized, imaginary PW output.

New PW principles principle.agrPW, principle.agreementPW, principle.dagPW, principle.linkingEndPW and principle.linkingMotherPW, and unoptimized versions with suffix 1.

Version 1.6.31 (July 3, 2007)

Changed lexicalized order principle such that ^ is an edge label again, but there cannot be any edges labeled ^. Also changed all grammars using the principle accordingly.

Removed type union/disjunction (not needed anymore).

Worked a lot on the new PW principles to make them as efficient as the original ones.

Duplicated the PW principles: now, there is always one version which is optimized as far as possible (e.g. principle.orderPW), and one which is not optimized, marked by a suffixed 1 (e.g. principle.orderPW1). Accordingly, the grammars ANBNPW.ul and EQABPW.ul use the optimized, and ANBNPW1.ul and EQABPW1.ul the unoptimized principles.

Version 1.6.30 (June 8, 2007)

Improvements to and optimizations of the new PW principles.

Version 1.6.31 (June 5, 2007)

New principles principle.orderPW and principle.projectivityPW, and new grammar ANBNPW.ul, again to support the ongoing “PrincipleWriter” work.

Version 1.6.29 (June 4, 2007)

New principles principle.graphPW, principle.treePW and principle.valencyPW and new grammar EQABPW.ul to support the ongoing work on the principle compiler “PrincipleWriter”. The principles are basically what should be obtained from the compiler when it works.

Version 1.6.28 (May 4, 2007)

Solving statistics now supports a timeout, i.e., solving is interrupted after a fixed amount of time. The default is 3600 (1 hour). Notice that the timeout is checked only at choice points/solutions/failures in the search tree, i.e., it may take longer than the timeout to reach the first fixpoint and thus it may take longer to solve in overall despite the timeout.

Changed defaults for solving statistics in xdk.exe and xdks.exe again: the maximum number of solutions is 9999 again, as is the maximum number of failures.

Version 1.6.27 (April 27, 2007)

New tool for extracting example sentence files from Penn Treebank *.pos files (tagged). The tool is called ptbextraxt.exe and lets you also specify the minimum and maximum length of the sentences to be extracted. The vocabulary of the sentences is adapted to the XTAG grammar found in the current lem distribution (0.14.0).

Made fixed recomputation with recomputation distance 5 the default for xdk.exe, for Explorer, IOzSeF and Oracle search. This has the effect that exploring even large search spaces will not immediately lead to a rather unresponsible system.

Added new option for solving statistics (xdk.exe and xdks.exe) to specify the maximum number of failures. Using this and the possibility to specify the maximum number of solutions helps to terminate the search for solutions before it goes on forever.

Consistently made executables lower case (except for the included SXDG directory). Hence, ManualOracleServer.exe is now called manualoracleserver.exe, and XTAGServer.exe xtagserver.exe.

Many other small improvements.

Version 1.6.26 (April 23, 2007)

Now CSPs can be printed into files whose filename can be conveniently chosen. No more printing out to stdout.

Added experimental functionality to print out CSPs using FlatZinc syntax. This is a new standard syntax for constraint solvers, developed by the G12 project at several universities in Australia (see http://www.g12.cs.mu.oz.au/Summary.html). In particular, the Gecode constraint library will soon support FlatZinc officially, which means that this gets the XDK one step closer to integration with Gecode.

Printing out CSPs now also works with the standalone solver xdks.exe.

New file suffixes: csp for printed out CSPs, fzn for printed out CSPs using FlatZinc syntax, and sol for solutions obtained from the program explore.exe in CSPOutput.

Many small bugfixes and enhancements.

Version 1.6.25 (April 11, 2007)

Slight fix to XTAG grammar generation to adapt to the new output functors (which display the words of word features of all dimensions, not just lex): the word feature on the lp dimension is now called word1.

Version 1.6.24 (April 10, 2007)

Made it much easier for users from the outside to use the oracle functionality of the XDK:

Now, the example oracle can be used already after simply installing the two IOzSeF packages.

Included a license at last - CeCILL v2 (GNU-GPL-compatible).

Cleaned up a bit:

Version 1.6.23 (February 23, 2007)

Removed the code supporting the second node-word mapping (lex.entry.word1) since it was too hacky IMHO.

Now, following a discussion with Vineet Chaitanya, the output functors (Tcl/Tk and Latex), and the GenerateOrderings code support the possibility of additional node-word mappings on any other dimension. An example is given in the grammar Grammars/MWE.ul, where the syntactic dimensions (id and lp) have a word feature different from that on the semantic dimension (pa). Now if the grammar shall be used for parsing, the input word feature (lex.entry.word) is unified with the syntactic word and the parsing principle is switched on. If the grammar shall be used for generation, the input word feature is unified with the semantic word, and the parse principle switched off. This is implemented in the example grammar Grammars/MWEgen.ul.

Added three work-in-progress example grammars: Grammars/MTS10.ul, a grammar where two context-free grammars are combined to model scrambling, and Grammars/FG_TAGDC.ul and Grammars/FG_TAGDCgen.ul, where a TAG grammar and a grammar for dominance constraints (modeled as in the dissertation) are combined.

Version 1.6.22 (February 19, 2007)

Wrote a new principle XTAGLinking which combines the now removed principle.linkingEnd1 and SameEdges.

Added code to Solver/Principles/Lib/Helpers.oz that generates the records encoding the dominance/precedence relations on Gorn addresses on-the-fly for the XTAG1 and XTAGRedundant principles.

These two steps greatly simplify the writing of TAG grammars, as can be observed e.g. in the grammar ww.

Further improved the GenerateOrderings dialog.

The GenerateOrderings function and all DAG output functors now recognize whether a grammar as the feature lex.entry.word1, which is a feature additional to lex.entry.word, modeling a second “node-word mapping”. This is convenient for generation, as e.g. in the grammar MWEgen, where the lex.entry.word1 feature denotes the generated word for the node.

Version 1.6.21 (February 18, 2007)

Improved the GenerateOrderings functionality of the GUI. Now, several dimensions can be selected where the parse principle shall be switched off. The selection is now much more comfortable using checkbuttons instead of a text field.

Version 1.6.20 (February 17, 2007)

Updated the CSD1 principle to more closely reflect the diss, and to be more configurable.

Removed the principle.projectivity1 principle and put its functionality into Projectivity. Now, if a principle which introduces a yield feature is used, then the yield set must be convex, otherwise, the principle constrains the eqdown set to be convex.

Removed the Projective argument variable from the Order and Order1 principles (and their variant OrderConstraints and Order1Constraints). Please note: if you made use of this argument variable to make your analyses projective, please change your grammars to use the additional Projectivity principle instead! I already changed this for the example grammars of course.

Version 1.6.19 (February 16, 2007)

Optimized XTAG principles.

Added XTAGDist constraint functor for distributing the positions when the solver is used as a realizer for TAG grammars.

Updated the main page of the manual, highlighting the compiler and solver chapters.

Fixed severe bug in principle.linkingAboveStart.

Fixed bug in the UL grammar file parser — could not handle missing brackets at the end of the file.

Version 1.6.18 (February 14, 2007)

Made the XTAG principles reversible.

Version 1.6.17 (February 13, 2007)

Finished updating the functor profiles for all constraint functors. Now the profiler gives precisely the right number of propagators and variables, which can be tested by using the solve.exe executable from the CSPOutput directory.

Also added a new chapter to the documentation which explains the profiling functionality.

Version 1.6.16 (February 9, 2007)

Removed memory consumption measurements from solving statistics again (too imprecise).

Removed copies of the NewTkDAG and Select directories from CSPOutput. That is, CSPOutput is not stand-alone anymore, but must be distributed with the entire XDK. Which isn't so much of a problem, compared with the overhead of having to deal with copies of especially the selection constraint.

Changed all hard-wired references to the /tmp/ directory. Would not work on Windows, and this was the reason why the XTAG code would not work on Windows. Now it does — temporary files are now either written to /tmp/, or, if that is not available, to /C/Windows/Temp, or to /C/Temp.

Added new Windows binaries of the slighly optimized Select.fs and Select.union constraints.

Updated constraint functor profiles using the propagator output. Not all done yet though.

Version 1.6.15 (February 7, 2007)

Added slight optimizations to Select.fs and Select.union. Not included in the Windows binary yet.

Version 1.6.14 (February 2, 2007)

Improved LOP grammar (Grammars/LOP.ul) and principle (Solver/Principles/Lib/LOP.oz).

Version 1.6.13 (February 1, 2007)

Plugged in a reimplementation of the tagger_filter.pl tree filter from the lem parser distribution. Uses the mxpost POS tagger by Adwait Ratnaparkhi, which does not seem to be publicly available anymore though. Works perfectly, same number of solutions as the original lem parser. To use it, given that mxpost is properly installed in the directory pointed to by the MXPOST environment variable, call the XTAGServer as shown below:

     XTAGServer.exe -f tagger

Plugged in the supertagger available on the XTAG webpage. Can be selected as a tree filter as shown below:

     XTAGServer.exe -f supertagger

Where the environment variable COREF must point to the currently used data directory within the supertagger directory (as stated in the README there), e.g. to the 200K.data directory.

Added a function in xdk.exe to compare the solutions from the lem parser, using the tagger filter, and the XDK, using the reimplementation of the filter.

Fixed bug in LemComparer.oz (would not properly handle the distinguishing suffixes introduced in the previous version of the XDK).

Fixed XTAGRoot constraint.

Cleaned up Extras menu of the GUI.

Version 1.6.12 (January 30, 2007)

Fixed small small bugs in xdk.exe.

Improved filter reimplementation. Now gets precisely the same solutions as the lem parser when using pruning and filtering. Plugging in a tagger/supertagger comes next.

Prepared plugging in of a tagger/supertagger to the XTAG grammar generator. Most notably, introduced a way to distinguish multiple occurrences of the same word by adding suffixes separated from the word by a hash, e.g. “a man who sleeps sleeps#1”. Not thoroughly tested though.

Version 1.6.11 (January 25, 2007)

Added implementation of syn lookup pruning from the lem parser, obtainable via the --prune option of the the XTAGServer. Put on by default.

Version 1.6.10 (January 23, 2007)

Added reimplementation of the simple_filter.pl tree filter from the lem parser distribution to the XTAG grammar server code. Can be invoked by launching the XTAGServer using the -f simple option:

     XTAGServer.exe -f simple

Adapted the GUI to include two different versions of Compare lem solutions... (Extras menu): one without filtering (useful if you called the XTAGServer with -f none), and one with filtering (if you called it with -f simple).

Added file 4712.ulsocket for convenience (for easier access to the XTAG grammar generator, given that it is started on port 4712).

Added debug output to solving statistics, showing the number of failures and solutions (succeeded).

Version 1.6.9 (January 19, 2007)

Renamed example file pri.oz to pri_EQAB.oz.

Added example file pri_EQAB_lex.oz, the valency-lexicalized version of pri_EQAB.oz.

Version 1.6.8 (January 18, 2007)

Added missing nodeset files for diss and LOP grammars.

Changed Denys' location to Orleans at last :)

Version 1.6.7 (January 16, 2007)

stderr printouts of xdkc.exe and xdks.exe now use System.showError instead of System.printError for better readability.

Changed memory consumption measurement to use the gc.active property.

Added scripts optiOff and optiOn to toggle the native IsIn optimization.

Version 1.6.6 (January 15, 2007)

Small improvement to principle.lop.

Changed some defaults for solving statistics in xdk.exe and xdks.exe profiling is now turned off per default, the maximum number of solutions 1000 (instead of 9999), and the recomputation distance 5 (1).

Added memory consumption to solving statistics, based on the 'memory.heap' property of Mozart/Oz. Also adapted the DTD Extras/statistics.dtd.

Version 1.6.5 (January 12, 2007)

CSPOutput: renamed solve.exe to explore.exe and added a new program solve.exe which does not call the explorer but uses a handmade search engine to obtain solving statistics.

Improved principle.lop for the new LOP grammar (Grammars/LOP.ul).

Version 1.6.4 (January 10, 2007)

LOP grammar and principle added.

Version 1.6.3 (January 8, 2007)

Added information about the principles and constraint functors belonging to the propagators in the propagators output.

Added Helpers.isIn optimization to Order2Conditions, big speed-up for grammars using the lexicalized order principle (e.g. Grammars/diss.ul).

Version 1.6.2 (January 5, 2007)

Removed constraints that partitioned the sets of daughters and mothers sorted by label (daughtersL and mothersL) from the GraphMakeNodes and GraphMakeNodes1 constraint functors. This wrongly disallowed that nodes had multiple outgoing edges to the same daughter node (of course with different edge labels).

Added these partitioning constraints to the TreeConditions constraint functor, and, optionally (DisjointDaughters argument variable) to the Dag constraint functor.

Changed default for the Connected argument of the Dag constraint functor to false.

Adapted all grammars affected by these changes (i.e., those using the Dag principle).

Fixed bug in LinkingAboveBelow1or2StartDG constraint functor.

Added constraint to GraphConditions and GraphConditions1 constraint functors for better propagation on cyclic graphs (the down and eqdown sets were not properly constrained whenever a node only had itself as its daughter).

Added example file pri.oz which is a first example of principle compilation.

Version 1.6.1 (January 2, 2007)

Added AddHandlers procedure for the executable in the CSPOutput directory - they were not able to find the selection constraint when compiled from the toplevel XDK directory.

Bumped copyrights to 2007.

Version 1.6.0 (December 22, 2006)

Much much much faster CSP output thanks to an idea by Stefan Thater.

Introduced new directory CSPOutput for functors and programs working with CSP output. Includes the programs solve.exe for solving CSP outputs, and view.exe to view the solutions of CSP outputs (saved from the Explorer in solve.exe).

The directory is stand-alone, e.g. it can be tar-gzipped and then be used on a machine without the XDK installed. This is another landmark in our transition to Gecode.

Merry Christmas BTW!

Version 1.5.8 (December 18, 2006)

Fixed bug just introduced into the IsIn optimization — it would suspend when printing out propagators.

Changed Solver/Principles/Lib/Share.oz such that it now filters out non-fd/fs variables (e.g. lex.entry.word).

Version 1.5.7 (December 14, 2006)

Found out why the parser had become slower - it was the IsIn optimization in Solver/Principles/Lib/Helpers.oz which I had changed to the worse. Fixed.

Removed native treeness constraint from principle.tree (functor TreeConditions.oz. Added a new principle principle.tree1 (with new functor TreeConditions1.oz) which still includes the native treeness constraint in case a grammar still needs it.

Version 1.5.6 (December 13, 2006)

Removed remaining deep guards from principle.coindex and principle.pl.

Made printing propagators more efficient using a trick involving the counter for finite domain variables available in the Properties module of Mozart/Oz.

New script doublefdfs to check whether print propagators output is buggy, introducing the same variable numbers for both finite set and finite domain variables.

New Oz test code testpropagatoroutput.oz to test the print propagators output against Mozart/Oz itself.

Continued updating the manual, grammars and principles to reflect the state-of-the-art of the system, many many small fixes and improvements.

Version 1.5.5 (December 5, 2006)

Added logo to GUI (Project -> About).

Updated the grammars to only use principles not using deep guards, except DiplomDG.ul and dissDG.ul. This also meant that the grammars using edge constraints had to be reformulated without. As a result, no grammar uses edge constraints any more. Since I could also remove all node constraints from the grammars, further versions of the XDK could drop the expression of node and edge constraints altogether, since their benefit is not high enough (I think) to warrant the complications they introduce to the system.

Removed grammar seg.ul.

Added diss to list of references in this manual.

Version 1.5.4 (December 1, 2006)

Suffixed all constraint functors, principle definition functors and grammars using edge constraints with DG for “deep guards”, and removed the NDG suffix from those not using deep guards. As a result, if the user e.g. uses the principle.graph principle, (s)he gets the more efficient implementation without deep guards. Not quite done yet - the grammars and the manual still need to be updated.

Thanks to my wife Simone, the XDK has a logo now:

pix/xdk.jpg

The logo expresses the extensibility of XDG, and the building of grammars like with lego blocks, by stacking the three acronym letters on each other. This is also a hint to the multiple levels/dimensions that XDG grammars can have. Well, that's what I interpret :-)

Version 1.5.3 (November 28, 2006)

Added hooks for the FD, FS and Select functors. Now, by choosing the print option in the GUI, all the propagators which are normally posted can now be printed out to stdout (and not posted). This is the first step in the transition to the new Gecode constraint engine, which Guido Tack and me are now undertaking. The very idea to simply flatly print out the propagators is due to Gert Smolka.

Transformed principle constraints such that all infixed FD constraints, e.g. =: or =<: are now prefixed, using the appropriate prefixed equivalents.

Fixed a bug in Extras/SolvingStatistics.oz which would raise an unhandled error whenever a word in the input was not in the lexicon of the grammar.

Removed grammar Grammars/TAG-wwRwwR.ul.

Fixed small bugs in some of the grammars/examples files.

Version 1.5.2 (October 25, 2006)

Changed defaults for the order principles: now, the argument variables Projective and Yields have default false instead of true. Makes the principles more intuitive to use (I had wondered why the hell switching off the projectivity principle would not give me the overgeneration I expected in Grammars/ANBN.ul).

Version 1.5.1 (September 14, 2006)

Updated the manual to reflect all the new stuff in the XDK, especially the new principles.

Lots of fixes around the socket functionality of xdk.exe and xdks.exe, and in particular solving statistics. Solving statistics would not work at all with grammars coming from a socket etc.

Most important news: now, the XDK supports the English TAG grammar developed in the XTAG project (http://www.cis.upenn.edu/~xtag/). This is the first real large-scale grammar for the XDK, which will allow us to improve the system, see where its bottlenecks are etc. The XTAG grammar generator module of the XDK is described in XTAG.

The generated grammars make use of three new principles:

And the new output output.xTAGDerivation (XTAGDerivation) to display XTAG derivation trees using the tree viewer from the XTAG project lem parser.

The function “Compare lem solutions” in xdk.exe compares the derivation trees obtained from the encoded XDG grammar with the derivation trees obtained from the lem parser.

Version 1.5.0 (September 1, 2006)

Added support for the XTAG grammar. Soon to be documented :)

Version 1.4.11 (August 18, 2006)

Added Selection constraint to the XDK package since the Select package would not individually compile under Mozart 1.3.2 anymore :( Makes the installation of the XDK simpler anyway :)

Version 1.4.10 (July 27, 2006)

Fixed principle.linkingEndNDG and changed the constraint in principle.linkingEnd accordingly.

Version 1.4.9 (July 26, 2006)

Added principle principle.sameEdges.

Renamed principle.sameorder to principle.sameOrder (used only in Grammars/diss.ul, Grammars/dissNDG.ul and Grammars/igk.ul).

Added new output functor output.pretty1 for better comparison of solutions.

Version 1.4.8 (July 18, 2006)

Recompiled binaries using the new Mozart 1.3.2.

Changed Diplom grammar (Grammars/Diplom.ul) such that it does not use the deprecated principle.nodeconstraints and principle.edgeconstraints principles anymore but instead principle.agr, principle.agreement, principle.government and the new principle.agreementSubset principles.

Added new versions of all principles using edge constraints with the crucial difference that they do not use deep guards. The new versions are suffixed with NDG ("no deep guards"). Here are the principles:

Added new grammars using the new principle versions:

Version 1.4.7 (May 9, 2006)

Fixed install scripts, removed grammar Grammars/MOZ04.ul.

Added new version of xdag.sty improved by Robert Grabowski.

Version 1.4.6 (April 20, 2006)

Added third dimension variable to multidimensional principles which can be parametrized lexically to more closely reflect the principle definitions in the thesis.

Version 1.4.5 (April 19, 2006)

Updated Grammars/SAT.ul to properly reflect the grammar in the complexity chapter of the thesis.

Added grammar files to online versions of the manual.

Added principle constraint functors to online versions of the manual.

Changed name (to maintain consistency with the diss): mapping/map types are now called vectors. That is, in UL, map(T1 T2) becomes vec(T1 T2), in IL, type.map becomes type.vec, and in XML, typeMap becomes typeVec.

Renamed disjunctive domains to unions. In IL, type.disj becomes type.union, and in XML, typeDisj becomes typeUnion.

Version 1.4.4 (April 5, 2006)

Added first support for partial specification of the solutions before parsing. Each input string can now be extended with file names which contain partial descriptions of sets of nodes, which will be type checked and then used as additional information in the solver. For example, using the grammar Grammars/diss.ul, parsing the sentence:

     mary_L+H*_LH% sees the man with a telescope_H*_LL% . Grammars/diss.nodeset.xml

leads to the addition of the additional information in Grammars/diss.nodeset.xml

This functionality supports all file types (except precompiled grammars) also available for writing grammars, i.e., UL (suffix ul), XML (xml) or IL (ilp for pickles or ozf for functors exporting set). XML sockets are also supported (xmlsocket).

Improved Grammars/diss.ul on the id dimension (no distinction between padv and padj), new names for prepositions.

Version 1.4.3 (April 3, 2006)

Updated manual to reflect the latest changes, removed some obsolete grammars and principles, added the recent papers etc.

Version 1.4.2 (March 31, 2006)

Improved Decode output functor to show only the dimension on which it is used.

New output functors AllDags1, AllDags2, AllDags3 and AllDags4: show all dags of the multigraph, also those without edges. This is especially useful if interface dimensions (such as idlp etc.) are defined and you would like to see the node record of a node for this dimension.

Similarly, added new output functors AllLatexs1, AllLatexs2, AllLatexs3 and AllLatexs4.

New principles principle.linkingAboveBelow1or2Start, principle.lockingDaughters.

Lots of changes in diss1.ul. Still improved syntax-semantics interface.

Added progress "report" for grammar compilation (too useful to be just debugging output).

Version 1.4.1 (March 18, 2006)

New grammar diss1.ul using the new lexicalized order principle principle.order3 instead of the old one. Surprisingly good propagation (better than the old non-lexicalized one!).

New principle principle.projectivity1 enforcing convex yield sets instead of eqdown sets as principle.projectivity.

Removed Projectivity argument variable and projectivity constraint from principle.order3 (use principle.projectivity1 instead please) to bring the principle more in line with the formalization in the thesis.

Improved principles and outputs menus in GUI xdk.exe: now they are ordered by dimension.

Improved latex output functors: now, the index/position of each node is also displayed alongside the word.

Important! Changed the type of the constraint functors, replacing the two arguments DVA2DIDA and ArgRecProc with the argument Principle standing for the instance of the principle in whose context the constraint functor is called. The advantage is that more of the information attached to the principle instance is then available to the constraint functors, including the type of its arguments. The (cosmetic) drawback is that the two functions DVA2DIDA and ArgRecProc must now be dereferenced from Principle first.

Adapted all principles in the principle library to these new conventions.

Adapted the manual to reflect the conventions Writing new principles.

Added new principle principle.partialAgreement to handle partial agreement in a generalized way. This principle is used in the new thesis grammar diss1.ul to establish partial agreement of relative pronouns with their modified nouns (with respect to gender).

Enhanced xdag.sty with new command penode for parametrized nodes with an extra node label, which can be freely positioned (done together with Robert Grabowski).

Enhanced xdag.sty for better support for "ghosting" nodes and edges instead of just omitting them.

Changed Dag and Latex output functors to "ghost" nodes and edges instead of just omitting them.

Version 1.4.0 (March 2, 2006)

Added disjunctive domain types as syntactic sugar for combining domain types. Useful for the new lexicalized order principle principle.order3, which is formulated on top of a strict total order on the set of edge labels plus the special label "^". can be now written down as:

       deftype "syn.label" {root subj part obj vinf adv}
       deftype "syn.label1" "syn.label" | {"^"}
       defentrytype {...
                     order: set(tuple("syn.label1" "syn.label1"))
                     ...}

Adapted the thesis grammars nut.ul, nut1.ul, ANBN.ul, ANBNCN.ul, CSD.ul, SCR.ul and SAT.ul to reflect this new syntactic sugar.

Adapted the manual (descriptions of UL, XML and IL syntax) to reflect the new syntactic sugar.

Improvements to the scripts code2pic, ozcolor, ulcolor and xmlcolor.

Improved the principles principle.order3, principle.order3Constraints and principle.order3Dist.

Fixed the principle BarriersAttrib (used wrong syntax for type variables).

Made the domain types “position insensitive” by sorting the atoms lexically (using Mozart's Value.'<') of a domain 1) before type checking (TypeCollector.oz), and 2) when creating lattice functor ADTs (Domain.oz).

Added 100 to the priority of all principles to stay in accord with the formalization given in the thesis. Now, constraints with priority higher than 100 are started first, then come the edge constraints with priority 100, and then the remaining constraints with priority less than 100 (currently, only distribution).

Version 1.3.24 (February 24, 2006)

New output functor output.decode for displaying solutions in the Intermediate Language. This was already possible using the Inspect action from the Explorer, but its output could not be redirected e.g. into the Oz Browser for copy and paste.

Improved generation of orderings, now an arbitrary ordered dimension can be selected (was restricted to lp).

Various improvements to the scripts code2pic, ozcolor, ulcolor and xmlcolor.

Version 1.3.23 (February 21, 2006)

Added new principle principle.order3, which implements the order principle in the thesis. Used in the diss grammars nut.ul, nut1.ul, EQAB.ul, ANBN.ul, ANBNCN.ul, CSD.ul, SCR.ul and SAT.ul.

Merged scripts oz2eps, oz2pdf, oz2jpg, oz2epsn, oz2pdfn, oz2jpgn, ul2eps, ul2pdf, ul2jpg, ul2epsn, ul2pdfn, ul2jpgn into one script code2pic.

Added support for XML source code highlighting (xmlcolor). Merged that into code2pic as well.

Version 1.3.22 (February 7, 2006)

Manual: Improved section UL syntax (e.g. didn't list the new abbreviations for type reference and class reference).

Improved type checker: didn't check for ambiguous set generator expressions due to doubly occurring constants in the corresponding domains.

Improved xdag.sty: added commands pnode (parametrized node) and rednode (red node). The latter draws the node in red, and the former has an additional argument for pstricks parameters, e.g. to magically remove nodes from sight using the parameter linecolor=white.

Cleaned up the Grammars directory. Need to update the manual to reflect this still.

Added new scripts oz2eps, oz2pdf, oz2jpg, oz2epsn, oz2pdfn, oz2jpgn, ul2eps, ul2pdf, ul2jpg, ul2epsn, ul2pdfn, ul2jpgn for source code highlighting in LaTeX (for the thesis).

Version 1.3.21 (Feburary 3, 2006)

Improved the new example grammars to match better with the thesis, e.g., using the new principle principle.order2 instead of the old one (principle.order). It is less efficient, but has better support for lexicalization.

Added new script ozcolor to do Oz-source code coloring.

Fixed a small bug in the GUI ("Solve Examples").

Bumped copyrights to 2006.

Version 1.3.20 (January 6, 2006)

Added stuff written to support the thesis: new grammars csd.ul (cross-serial dependencies) scr.ul (scrambling), new principle principle.csd.

Version 1.3.19 (December 23, 2005)

better support for graphs with cycles: principles fixed (principle.graph, principle.order), dag output functor improved (though by far not perfect yet).

Version 1.3.18 (December 16, 2005)

Experimental version for Bertrand :)

Version 1.3.17 (September 30, 2005)

Renamed principle.poetry to principle.coindex, and poetry.ul to coindex.ul.

Completely rewrote Grammars/pl.ul and principle.pl (former version would not take care of coreferent variables).

Version 1.3.16 (September 12, 2005)

More improvements to NewTkDag.oz.

Changed the underlying finite domain for the type bool (Bool), which used to encode true as 1 and false as 2. Now encodes false as 1 and true as 2, so that subtracting one gives the right truth value for reified constraints in Mozart (0 for false and 1 for true). Adapted the constraints in the principle library to reflect this:

Added new grammar Grammars/pl.ul and new principle principle.pl. This is a grammar for propositional logic, where you can enter propositional formulae as sentences, and the XDK enumerates the solutions.

Version 1.3.15 (September 12, 2005)

Added new NewTkDag.oz functor for Tcl/Tk dag output which tries to move around edge labels if they overlap. Still experimental, please write email if it does not do the right thing for you!

Version 1.3.14 (September 6, 2005)

Added revised grammar Grammars/MOZ04.ul again, since the grammar in the corresponding paper does not work with the new XDK anymore.

Fixed biiig bug in profiler: the profiler multiplied the lexical entry variables and propagators introduced per node with the number of entries for that node, which was wrong and resulted in way too many variables and propagators counted...

Added combined count of finite domain and finite set variables to profiler (called fdfs). Also adapted the DTD Extras/statistics.dtd to reflect this.

Version 1.3.13 (August 23, 2005)

Fixed Compiler/Lattices/Tuple.oz: function as2I would return an integer one short. This had repurcussions in Compiler/Lattices/Set.oz, and in Solver/Principles/Order2Conditions.oz.

Added new principles principle.barriers.attrib and principle.barriers.labels contributed by Denys Duchier.

Added new experimental principle principle.poetry which realizes our first ideas on how to handle FB-LTAG features, and an accompanying example grammar Grammars/poetry.ul.

Version 1.3.12 (June 30, 2005)

Added new principle principle.government2 which allows to govern a feature of the daughter of the daughter of a node (e.g. the verb can now govern the noun under the preposition depending on the verb...).

Version 1.3.11 (June 15, 2005)

Fixed bug in the Dag functor diff functionality.

More enhancements to the diss.ul grammar.

Added output functor output.clls1 which just prints out the CLLS constraint obtained from e.g. diss.ul without drawing it using daVinci.

Version 1.3.10 (May 23, 2005)

Augmented diss.ul grammar with personal pronouns, perfect constructions and additional lexical entries.

Version 1.3.9 (May 20, 2005)

Added code to enable the use of disjunction for features (e.g. important for valencies).

Version 1.3.8 (May 13, 2005)

Dynamic grammar loading via sockets works now :)

You can now run a server which awaits client connections from the XDK. To make the XDK establish a client connection, attempt to load grammars with suffix xmlsocket, e.g. 4712.xmlsocket. This makes the XDK try to establish a connection with a grammar server on port 4712. For each parse, the XDK client now sends a message containing the sentence to be parsed (as a string) to the server, and expects the server to return a grammar for this sentence, which is then used for parsing.

Bumped copyrights to 2005.

Version 1.3.7 (May 11, 2005)

Added experimental support for dynamic grammar loading via sockets, to be finished in 1.4.0.

Changed example grammars such that the outputs are used and chosen on the lex dimension instead of the multi dimension.

Changed Dag(s) and Latex(s) output functors: conj and pred edges (emanating from the root) are not left out anymore.

Version 1.3.6 (April 27, 2005)

Fixed Order and Order1 principles to support lexicalization (even though this is not recommended...).

Added more information to the debugging section.

Version 1.3.5 (April 11, 2005)

In debugging mode, the grammar file compiler now prints out the names of the unused lexical classes.

Improved xdag2eps, xdag2pdf and xdag2jpg to cope with input files in other directories than the current one.

Further improvements to the dissertation grammar.

Version 1.3.4 (April 9, 2005)

Added new syntactic sugar for generating order relations. In the UL, you can write e.g. <a b c> for the order relation {[a b] [a c] [b c]}. This only works if the type of the expression is a set of pairs of the same type.

New experimental principles Order2 (constraint functor Order2Conditions), Order2Constraints and Order2Dist.

Improved the XML language to deal with variable features, cf. the example grammar Grammars/Acl01.xml. Important: if you use parametrized lexical classes, please change your XML output and use varFeature instead of feature when instantiating the parameters of a lexical class.

Lots of improvements to the dissertation grammar.

Version 1.3.3 (April 7, 2005)

Many more improvements to grammar Grammars/diss.ul.

New principle LinkingDaughter1Above2. Kind of like parametrized climbing.

Made new principle Locking more general.

Updated diffnotime to also exclude the date when comparing.

Added “proportional” Dag output: now each node has its own width, as opposed to the maximum width. Improves usability a lot.

Version 1.3.2 (April 6, 2005)

New principle Locking.

Heavily improved grammar Grammars/diss.ul, now using the new locking principle for a much cleaner syntax-semantics interface (idpa).

Renamed principle.linkingSubgraphs to principle.subgraphs.

Renamed principle.graphExceptDist to principle.graphConstraints, principle.graph1ExceptDist to principle.graph1Constraints, principle.graphOnlyDist to principle.graphDist, principle.graph1OnlyDist to to principle.graph1Dist, principle.orderExceptDist to principle.orderConstraints, principle.order1ExceptDist to principle.order1Constraints, principle.orderOnlyDist to principle.orderDist, and principle.order1OnlyDist to principle.order1Dist.

Version 1.3.2 (April 6, 2005)

Updated description of the LaTeX output.

Removed Grammars/scatter.ul and Grammars/scatter_wwRwwR.ul, Gapfilling and OrderGap principles again.

Added new grammar Grammars/diss.ul, combining Grammars/Chorus.ul (syntax-semantics interface) and Grammars/igk.ul (information structure) which I have been written for my dissertation.

Updated the Dag output functors to check whether node labels have changed from one analysis to another. Very useful if you just cannot see a difference between two analyses (now you can).

New principle Linking2BelowStart.

Version 1.3.1 (March 30, 2005)

Fixed a bug in the Tcl/Tk dag output which would cause the Explorer to hang, at least under Win XP.

Version 1.3.0 (March 28, 2005)

Significant improvement to the type checker: removed the “any” type, and introduced type variables for principle arguments: each principle can introduce a set of type variables for its arguments, and these can be instantiated by either feature paths or type annotations.

Numerous other bugfixes.

Version 1.2.4 (March 21, 2005)

Small changes to the solving statistics.

Bugfix for passives in Chorus.ul.

Version 1.2.3 (March 20, 2005)

Fixed a nasty bug causing the grammar file compiler to hang in case a graph principle was used on a dimension with an empty set of edge labels.

Version 1.2.2 (March 18, 2005)

Removed xdkcount.exe again and folded its functionality into the solving statistics. This also yielded additions in Extras/statistics.dtd.

Changed default for adding profiling information to solving statistics (now on), applies to xdk.exe and xdks.exe.

Version 1.2.1 (March 16, 2005)

Small changes in the XML output for solving statistics (tag solution renamed to string).

Fixed bug in scripts/addprinciple, scripts/mvprinciple and scripts/rmprinciple (occurred when changing the toplevel makefile.oz), and added some nice output to the scripts telling the user what they are doing.

Ported relative clause principle (for Grammars/Diplom.ul) from old TDG parser.

Optimized propagation of the Dag/Tree functors.

Added propagators introduced by the Edge.oz edge constraint functor to the profiling.

Added solving statistics tool xdkcount.exe.

Version 1.2.0 (March 14, 2005)

Added profiling support for counting the additional variables introduced by the constraint functors, and the propagators they introduce. This involved the following changes:

Notice: the grammar format for compiled grammars changes with this version, so please recompile your grammars if you have any. Sorry for any inconveniences caused.

Version 1.1.4 (March 9, 2005)

Removed hardcoded multi dimension (and mapping from dimension variable Multi to multi).

Added mapping from dimension variable This to the dimension id of the currently defined dimension.

Version 1.1.3

Added perl-scripts for adding/removing/renaming principles and accompanying constraints: scripts/addprinciple, scripts/rmprinciple and scripts/mvprinciple. Should ease the tedious addition/removal/renaming of principles.

Updated parameter names for the linking principles according to the current thesis version.

Renamed principle.linkingBelow12StartEnd principle to principle.linking12BelowStartEnd.

Added principle.linkingBelow1Start1End2 principle, and grammar Grammars/ESSLLI04_idlppasc.ul (without deep syntax, instead slightly more complicated linking via the above new principle).

Version 1.1.2

Fixed small bug in xdk.oz which hit when you switched off a dimension, called Generate Orderings, and then selected "Outputs" for one of the analyses.

Version 1.1.1

Added script scripts/xdag2jpg to convert LaTeX-output dependency graphs into JPG. This is very useful for those notorious applications which do not support EPS/JPG image import, most notably, Microsoft Office (Word, PowerPoint) and OpenOffice.

Version 1.1.0

Totally re-organized the linking/dominance principles according to their formalizations in my thesis, making it a lot more systematic than before. Now, it should be much clearer which principle does what, and when to use which and so on.

The re-organization has led to the following changes:

Please also notice, that the features of the principles are different, as are their defaults. Please check the principles list (Principles list) to adapt your grammars, and do not hesitate to ask me if any problems occur. Sorry in advance for any inconveniences this may cause.

This renovation affected the principle library of course, the grammars (I adapted all grammars in Grammars/ to reflect the changes), Ondrej's PDT grammar generation code (I have adapted that as well) and the manual. VAST changes to do, but hopefully not very difficult to adapt to for you users.

The debug output at grammar compilation stage (Compiler/Encoder.oz) is now more informative: it prints out the number of actual lexical entries stored in the compiled out grammar.

Version 1.0.6

Heavily improved the type system according to what I write in my upcoming thesis:

The result is a cleaner and leaner type checker. This also fixed some bugs in the type system which were due to the slightly faulty design. E.g. it was impossible to write down sets of integers so far. And it was possible to write down valency sets which were no sets.

I guess I could have introduced some new bugs though, since I undertook quite a lot of changes. Please test your stuff and report any new errors, or even unusable error messages etc.

Version 1.0.5

Removed the non-monotonic behavior of the greatest lower bound (glb) operations of strings and lists. Now, all glb operations are commutative again.

The result of the prior change is that lists cannot be concatenated anymore. Since nobody has actually ever used this functionality, this should not come as a big loss.

Strings on the other hand still can: I introduced an explicit concatenation operator (@ in the UL, <concat> in the XML language). An example of how to use this can be found in Grammars/igk.ul.

These changes make the XDK cleaner, and more similar to the actual formalization which I am currently working out for my thesis.

Version 1.0.4

Added new experimental TAG-encoding grammars Grammars/scatter.ul and Grammars/scatter_wwRwwR.ul.

Added new experimental principles Gapfilling and OrderGap to accompany the two grammars above.

Added window resizing functionality to the ManualOracle-code, and fixed a bug there.

Version 1.0.3

Slightly optimized the propagation behavior of the Order and Climbing principles.

The Climbing principle is now parametrizable. Attention if you use the climbing principle on dimensions which are not trees: you must now explicitly set the parameter MotherCards to false in this case to turn off an optimization restricted to trees.

Version 1.0.2

Added automatic resizing of Dag output windows to fit on the screen, e.g. to make MacOS X users' life easier 8-) This was also pointed out by Mark, thanks again!

Added version information to the About window in the xdk-executable.

Version 1.0.1

Set/DomainTupleSet could not encode sets but only set generators. Fixed. Pointed out by Mark Pedersen, thanks!

Re-added duchier-select.pkg and the native functor object files (*.o) to the Windows binary distribution in order to be able to compile it using ozmake.

Version 1.0.0

It's done!

Version 0.9.16

Changed shortcut for --port (in xdg and Oracles/ManualOracle/Server.exe) from -t to -p.

Made profiling optional for parse statistics.

Added commandline option --(no)profile (-f) to toggle profiling in the xdk and xdks programs.

Added menu checkbutton Profile to the xdk program.

Made gprofile and sprofile elements optional in Extras/statistics.dtd.

Renamed sentence element to solution again.

Version 0.9.15

Added new profiling functionality: the counting of fd/fs variables introduced. This involved changes in the lattice functor implementation in Compiler/Lattices (added a new function Count to each lattice).

This is also used in the new solving statistics output, and thus, I changed the DTD (Extras/statistics.dtd):

Further improvements in the manual (types, lattices, lattice functors).

Version 0.9.14

Updated the parts of the manual pertaining to 1) the grammars, 2) the outputs, and 3) the principles. Especially the latter is now much better and contains much more comprehensible explanations of the principles and their behaviors.

Version 0.9.13

Added principle.sameorder to equate the positions on ordered dimensions.

Added boolean parameter Yields to the order principles (true by default). If true, the yields of a node are ordered, if false, the daughters.

Version 0.9.12

Renamed XDK executables for consistency: xdg -> xdk, xdgc -> xdkc, xdgs -> xdks and xdgconv -> xdkconv.

Version 0.9.11

Added check for undefined values in lexical entries (throws an exception if so). Quite optimized so—only those features which can be undefined at all.

Added same check for undefined values also for principle arguments (except for constraint arguments which are not checked, too much effort for too little gain, IMHO).

Version 0.9.10

Made the order of the dimensions more consistent (always alphabetically ordered now), e.g. in the GUI menus and in the Dags output functors.

Increased the associativity strength of the conjunction (&) and disjunction (|) operators in the UL to make for less bracketing.

Changed the behavior of the List and String types. Their top value is now resp. the empty list and the empty string (instead of, as before, being undefined), and their greatest lower bound is now the concatenation of resp. the two lists and strings under consideration (instead of, as before, bottom if the two were different and none of them was the top value). I.e. now you can even do some simple morphology in the XDG lexicon.

The Dag and Latex output functor families behave more consistently.

Latex functor now escapes LaTeX special characters properly ($, &, %, #, _, {, }, ~, ^, \).

New Latex, Latex1, Latex2, Latex3 output functors for individual dimensions (corresponding to Dag, Dag1, ...).

New Latexs, Latexs1, Latexs2, Latexs3 output functors for multiple dimensions (corresponding to Latex, Latex1, ...).

Improved xdag2eps, xdag2pdf.

Added ulcolor script (uses LaTeX color package to do UL code highlighting).

Added big new German grammar done by Regine Bader, Christine Foeldesi, Ulrich Pfeiffer and Jochen Steigner (building on my Diplom grammar).

Added Benoit Crabbe's first version of his French grammar (Benoit.ul).

Added the first attempt to handle Information Structure (igk.ul) done at the IGK annual meeting in Edinburgh (Ciprian Gerstenberger, Oana Postolache, Stefan Thater and Maarika Traat).

Put all scripts in a separate directory (scripts).

And many many more improvements.

Version 0.9.8

Introduced the multi dimension for collecting multi-dimensional principles, corresponding lexical attributes, and outputs, in addition to the lex dimension. Added ESSLLI 2004 example grammars, removed COLING04 and DG04 grammars, updated Chorus grammar.

Added French example grammar by Benoit Crabbe.

New principles: CoLinking, CoLinking1 and ContraLinking

Lots of additional fixes and stuff.

Version 0.9.7

Renamed latex2eps to xdag2eps, and also latex2pdf to xdag2pdf.

Much improved type checking (and error output) for type annotations and feature paths (esp. useful for principle type checking).

Version 0.9.6

Introduced the type 'type.any'. This can be used to bypass the type checker, and is useful e.g. for the principles surrounding the notion of agreement (principle.agr, principle.agreement, principle.government). Here, 'type.any' is used for principle arguments which are not known a priori. Notice that this type cannot be used for values, only for feature paths (i.e. value descriptions).

Version 0.9.5

Due to popular request, type references (ref) and class references (useclass) can now be invoked just by the identifier, i.e. you can omit the respective keywords.

Examples: ref("id.attrs") can be written tersely as "id.attrs". Similarly, useclass "noncan" {Word: "koennen"} can be written tersely as "noncan" {Word: "koennen"}.

You can use the shell script ulterse to convert an “old style” UL grammar file into a “new style”, terser one, e.g. ./ulterse Acl01.ul converts Acl01.ul.