Installing ALE ============== ALE has been tarred and compressed to cut down on mail traffic. To extract the ALE system, create a directory called 'ALE'. Put the mailed file with header 'alesystem' in a file called 'alesystem' in directory ALE and cd to the ALE directory. Then execute the following commands: % uncompress *.Z % tar xvf *.tar The following files will then be installed in the ALE directory: ale.pl cg.pl syllab.pl baby.pl hpsg.pl guide.tex The primary system resides in the file ale.pl, the two grammars in cg.pl and syllab.pl, a sample constraint puzzle in baby.pl, and an HPSG grammar (complete through the first five chapters of Pollard & Sag, 1994). The user's guide is in guide.tex. After checking the contents of these files to make sure they were created properly, it is safe to remove the file 'system.tar' and the file 'tempfile'. Printing the User's Guide ========================= The user's guide should be processed through LaTeX twice to generate a table of contents and process cross-references: % latex guide.tex; latex guide.tex The .dvi file in guide.dvi should be ready for viewing on screen and/or printing. Reporting Bugs / Mailing List ============================= Please report all bugs (and any other comments) to: Bob Carpenter carp@lcl.cmu.edu Gerald Penn penn@lcl.cmu.edu If there is enough interest, I'll set up a mailing list. Quintus Patches =============== It turns out that ALE doesn't run directly in Quintus. But John Griffith and Thilo Goetz of the Seminar fuer Sprachwissenschaft at the Universitaet Tuebingen ported it with three changes. Their e-mail is: {griffith,tg}@earley.sns.neuphilologie.uni-tuebingen.de Changes ------- (These changes were used successfully with Quintus 3.1.1) 1. The first problem had to do with the precedence of operators, I think. We had to enclose the postfix instances of 'if_h' in parentheses or quintus thought that the following ':-' was part of the argument. It was interpreting the 'if_h' as the infix version. I don't understand why this didn't work in quintus and did work in sicstus since they both have the same precedences for ':-'. I guess that sicstus is a little smarter in this respect. The same problem occurred with the calls to 'multi_hash()' where the arity of the second argument was separated by a '/'. I just put the predicate name in parentheses and it seemed to work fine. 2. The second problem was that quintus (at least 3.1.1) wants the arity of a predicate in 'abolish()' to be a separate argument separated by a comma and not a '/'. 3. The last problem was that quintus has 'append()' as a builtin predicate and doesn't allow it to be redefined, so I simply commented it out. Here's the diff: (ale.pl.orig is the original version) harris:/programs/ALE 13>diff ale.pl.orig ale.pl 116c116 < sub_type(Type,Type) if_h :- --- > (sub_type(Type,Type) if_h) :- 118c118 < sub_type(Type,TypeSub) if_h :- --- > (sub_type(Type,TypeSub) if_h) :- 130c130 < unify_type(Type1,Type2,TypeLUB) if_h :- --- > (unify_type(Type1,Type2,TypeLUB) if_h) :- 217c217 < approp(Feat,Type,ValRestr) if_h :- --- > (approp(Feat,Type,ValRestr) if_h) :- 901c901 < lex(Word,Tag,SVs) if_h :- --- > (lex(Word,Tag,SVs) if_h) :- 1081,1082c1081,1082 < abolish(empty/1), abolish(rule/2), abolish(lex_rule/2), abolish(lex_rule/6), < abolish('--->'/2), abolish(sub/2), abolish(if/2), abolish(macro/2), --- > abolish(empty,1), abolish(rule,2), abolish(lex_rule,2), abolish(lex_rule,6), > abolish('--->',2), abolish(sub,2), abolish(if,2), abolish(macro,2), 1093c1093 < abolish(sub/2), --- > abolish(sub,2), 1103c1103 < abolish(sub/2), --- > abolish(sub,2), 1190,1191c1190,1191 < abolish(empty/1), abolish(rule/2), abolish(lex_rule/2), < abolish(lex_rule/6), abolish('--->'/2), --- > abolish(empty,1), abolish(rule,2), abolish(lex_rule,2), > abolish(lex_rule,6), abolish('--->',2), 1202c1202 < abolish(lex_rule/2), abolish(lex_rule/6), --- > abolish(lex_rule,2), abolish(lex_rule,6), 1210,1211c1210,1211 < abolish(lex_rule/6) < ; multi_hash(0,lex_rule/6) --- > abolish(lex_rule,6) > ; multi_hash(0,(lex_rule)/6) 1215c1215 < abolish('--->'/2), --- > abolish('--->',2), 1227c1227 < abolish(empty/2), --- > abolish(empty,2), 1235c1235 < abolish(rule/2), --- > abolish(rule,2), 1246c1246 < multi_hash(0,rule/4) --- > multi_hash(0,(rule)/4) 1250c1250 < abolish(if/2), --- > abolish(if,2), 1938,1940c1938,1940 < append([],L,L). < append([H1|T1],L2,[H1|T3]):- < append(T1,L2,T3). --- > %append([],L,L). > %append([H1|T1],L2,[H1|T3]):- > % append(T1,L2,T3).