1:- module(clex_iface,
    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:- multifile(noun_pl/3).   47:- multifile(iv_infpl/2).   48:- multifile(noun_sg/3).   49:- multifile(mn_pl/2).   50:- multifile(dv_finsg/3).   51:- multifile(dv_pp/3).   52:- multifile(adj_itr_sup/2).   53:- multifile(prep/2).   54:- multifile(noun_mass/3).   55:- multifile(iv_finsg/2).   56:- multifile(adj_itr/2).   57:- multifile(tv_infpl/2).   58:- multifile(pndef_pl/3).   59:- multifile(adv_sup/2).   60:- multifile(adj_tr_comp/3).   61:- multifile(adj_itr_comp/2).   62:- multifile(tv_finsg/2).   63:- multifile(pndef_sg/3).   64:- multifile(adj_tr_sup/3).   65:- multifile(pn_sg/3).   66:- multifile(mn_sg/2).   67:- multifile(dv_infpl/3).   68:- multifile(adv/2).   69:- multifile(tv_pp/2).   70:- multifile(pn_pl/3).   71:- multifile(adv_comp/2).   72:- multifile(adj_tr/3).   73
   74:- dynamic(noun_pl/3).   75:- dynamic(iv_infpl/2).   76:- dynamic(noun_sg/3).   77:- dynamic(mn_pl/2).   78:- dynamic(dv_finsg/3).   79:- dynamic(dv_pp/3).   80:- dynamic(adj_itr_sup/2).   81:- dynamic(prep/2).   82:- dynamic(noun_mass/3).   83:- dynamic(iv_finsg/2).   84:- dynamic(adj_itr/2).   85:- dynamic(tv_infpl/2).   86:- dynamic(pndef_pl/3).   87:- dynamic(adv_sup/2).   88:- dynamic(adj_tr_comp/3).   89:- dynamic(adj_itr_comp/2).   90:- dynamic(tv_finsg/2).   91:- dynamic(pndef_sg/3).   92:- dynamic(adj_tr_sup/3).   93:- dynamic(pn_sg/3).   94:- dynamic(mn_sg/2).   95:- dynamic(dv_infpl/3).   96:- dynamic(adv/2).   97:- dynamic(tv_pp/2).   98:- dynamic(pn_pl/3).   99:- dynamic(adv_comp/2).  100:- dynamic(adj_tr/3).  101
  102
  103when_chat80(_):- fail.
  104
  105:- reexport(talk_db_iface).  106
  107
  108%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 ;

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