1:- module(clex,
    2 [
    3 clex_verb/4,
    4   tv_pp/2,
    5   tv_infpl/2,
    6   tv_finsg/2,
    7   iv_infpl/2,
    8   iv_finsg/2,
    9   dv_pp/3,
   10   dv_infpl/3,
   11   dv_finsg/3,
   12
   13   % for now we use prep/2 from different (possibly more complete) lexicon
   14    prep/2,
   15
   16 clex_adv/3,
   17    adv_sup/2,
   18    adv_comp/2,
   19    adv/2,
   20
   21 clex_adj_prep/4,
   22    adj_tr_sup/3,
   23    adj_tr_comp/3,
   24    adj_tr/3,
   25
   26 clex_adj/3,
   27    adj_itr_sup/2,
   28    adj_itr_comp/2,
   29    adj_itr/2,
   30
   31 clex_noun/5,
   32     noun_sg/3,
   33     noun_pl/3,
   34     noun_mass/3,
   35
   36 % for now we use these from different (possibly more complete) lexicon
   37   mn_sg/2,
   38   mn_pl/2,
   39
   40   pndef_sg/3,
   41   pndef_pl/3,
   42   pn_sg/3,
   43   pn_pl/3
   44   ]).   45
   46
   47:- multifile(noun_pl/3).   48:- multifile(iv_infpl/2).   49:- multifile(noun_sg/3).   50:- multifile(mn_pl/2).   51:- multifile(dv_finsg/3).   52:- multifile(dv_pp/3).   53:- multifile(adj_itr_sup/2).   54:- multifile(prep/2).   55:- multifile(noun_mass/3).   56:- multifile(iv_finsg/2).   57:- multifile(adj_itr/2).   58:- multifile(tv_infpl/2).   59:- multifile(pndef_pl/3).   60:- multifile(adv_sup/2).   61:- multifile(adj_tr_comp/3).   62:- multifile(adj_itr_comp/2).   63:- multifile(tv_finsg/2).   64:- multifile(pndef_sg/3).   65:- multifile(adj_tr_sup/3).   66:- multifile(pn_sg/3).   67:- multifile(mn_sg/2).   68:- multifile(dv_infpl/3).   69:- multifile(adv/2).   70:- multifile(tv_pp/2).   71:- multifile(pn_pl/3).   72:- multifile(adv_comp/2).   73:- multifile(adj_tr/3).   74
   75:- dynamic(noun_pl/3).   76:- dynamic(iv_infpl/2).   77:- dynamic(noun_sg/3).   78:- dynamic(mn_pl/2).   79:- dynamic(dv_finsg/3).   80:- dynamic(dv_pp/3).   81:- dynamic(adj_itr_sup/2).   82:- dynamic(prep/2).   83:- dynamic(noun_mass/3).   84:- dynamic(iv_finsg/2).   85:- dynamic(adj_itr/2).   86:- dynamic(tv_infpl/2).   87:- dynamic(pndef_pl/3).   88:- dynamic(adv_sup/2).   89:- dynamic(adj_tr_comp/3).   90:- dynamic(adj_itr_comp/2).   91:- dynamic(tv_finsg/2).   92:- dynamic(pndef_sg/3).   93:- dynamic(adj_tr_sup/3).   94:- dynamic(pn_sg/3).   95:- dynamic(mn_sg/2).   96:- dynamic(dv_infpl/3).   97:- dynamic(adv/2).   98:- dynamic(tv_pp/2).   99:- dynamic(pn_pl/3).  100:- dynamic(adv_comp/2).  101:- dynamic(adj_tr/3).  102
  103
  104when_chat80(_):- fail.
  105
  106%when_chat80(G):- call(chat80:G).
 clex_verb(?Atom, ?Verb, ?ITD, ?Info)
?- clex_verb(jumped, Verb, ITD, Info). Verb = jump, ITD = tv, Info = pp .

?- clex_verb(jump, Verb, ITD, Info). Verb = jump, ITD = iv, Info = infpl ; Verb = jump, ITD = tv, Info = infpl ;

  123clex_verb(Formed, Verb, iv, finsg):- iv_finsg(Formed, Verb).
  124clex_verb(Formed, Verb, tv, finsg):- tv_finsg(Formed, Verb).
  125clex_verb(Formed, Verb, dv(Prep), finsg):- dv_finsg(Formed, Verb, Prep).
  126%clex_verb(Formed, Verb, iv, pp):- iv_pp(Formed, Verb). % iz none .. what about "jump to" ?
  127clex_verb(Formed, Verb, tv, pp):- tv_pp(Formed, Verb).
  128clex_verb(Formed, Verb, dv(Prep), pp):- dv_pp(Formed, Verb, Prep).
  129clex_verb(Formed, Verb, iv, infpl):- iv_infpl(Formed, Verb).
  130clex_verb(Formed, Verb, tv, infpl):- tv_infpl(Formed, Verb).
  131clex_verb(Formed, Verb, dv(Prep), infpl):- dv_infpl(Formed, Verb, Prep).
  132
  133both_of(RootNoun, Noun, NounI):- var(RootNoun), nonvar(NounI), !, (Noun=NounI;RootNoun=NounI).
  134both_of(_, Noun, Noun).
  135both_of(RootNoun, Noun, NounI):- RootNoun\=Noun, Noun=NounI.
  136
  137clex_mass_noun(NounI, RootNoun, Type):- both_of(RootNoun, Noun, NounI), noun_mass(Noun, RootNoun, Type), both_of(RootNoun, Noun, NounI).
  138
  139clex_noun(Noun, RootNoun, Type, _SG_OR_PL, mass):- clex_mass_noun(Noun, RootNoun, Type).
  140clex_noun(Noun, RootNoun, Type, SG, count):- clex_noun0(Noun, RootNoun, Type, SG), \+ clex_mass_noun(Noun, _, _).
  141clex_noun(Noun, RootNoun, unkown, SG, count):- clex_noun1(Noun, RootNoun, SG), \+ clex_noun0(Noun, RootNoun, _, SG), \+ clex_mass_noun(Noun, _, _).
  142   clex_noun0(Noun, RootNoun, Type, sg):- noun_sg(Noun, RootNoun, Type).
  143   clex_noun0(Noun, RootNoun, Type, pl):- noun_pl(Noun, RootNoun, Type).
  144   clex_noun1(Noun, RootNoun, pl):- when_chat80(noun_plu_db(Noun, RootNoun)).
  145   clex_noun1(RootNoun, RootNoun, sg):- when_chat80(noun_sin_db(RootNoun)).
  146
  147clex_adj_prep(Biggest, Big, Prep, Type):- adj_prep0(Biggest, Big, Prep, Type).
  148clex_adj_prep(Biggest, Big, Prep, unknown):- adj_tr(Biggest, Big, Prep), \+ adj_prep0(Biggest, _, Prep, _).
  149      adj_prep0(Bigger, Big, Prep, comparitve):- adj_tr_comp(Bigger, Big, Prep).
  150      adj_prep0(Biggest, Big, Prep, superlative):- adj_tr_sup(Biggest, Big, Prep).
  151
  152clex_adj(Biggest, Big, Type):- adj_itr0(Biggest, Big, Type).
  153clex_adj(Biggest, Big, unknown):- adj_itr(Biggest, Big), \+ adj_itr0(Biggest, _, _).
  154         adj_itr0(Bigger, Big, comparitve):- adj_itr_comp(Bigger, Big).
  155         adj_itr0(Biggest, Big, superlative):- adj_itr_sup(Biggest, Big).
  156
  157clex_adv(Biggest, Big, Type):- adv_itr0(Biggest, Big, Type).
  158clex_adv(Biggest, Big, unknown):- adv(Biggest, Big), \+ adv_itr0(Biggest, _, _).
  159            adv_itr0(Bigger, Big, comparitve):- adv_comp(Bigger, Big).
  160            adv_itr0(Biggest, Big, superlative):- adv_sup(Biggest, Big).
  161
  162%:- style_check(-discontiguous).
  163%:- include(library('nldata/clex_lexicon_user1.pl.dat')).
  164:- absolute_file_name('clex_lexicon_user1.nldata',
  165        File, [access(read)]),
  166   open(File, read, In),
  167   set_stream(In, encoding(iso_latin_1)),
  168   repeat,
  169   read(In, P),
  170   % DMiles: i am putting them in backwards (cuz, the hypens- confuse me if they pop out first in the debugger)
  171   asserta(P),
  172   P==end_of_file, !.  173
  174% apply_fixes:- clex_verb(Formed, Verb, dv(Prep), PP)