% -*-trale-prolog-*-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%   $RCSfile: constraints.pl,i $
%%  $Revision: 1.0 $
%%      $Date: 2011/05/21 $
%%     Author: Hiroki Koga (hkoga@cc.saga-u.ac.jp) $
%%   Reference: Stefan Mueller's gramar implementations $
%%    Purpose: Grant-in-aid research No. 21520410 by JSPS $
%%      the tense expletive $
%%   Language: Trale $
%      System: TRALE 2.7.5 (release ) under Sicstus 3.10.1 $
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% surface constraint: the tense expletive selects the shorter stems.


%% surface constraint: v-t >= 2 moras *nu  nuru


%% surface constraint: vwl_adjstd [...C] + same tense morpheme tab-uru



:- multifile if/2.


% *****************************
%   list manipulation utilities
% *****************************


% append(+,+,-)
% This append assumes that the first or the third argument
% are known to be non_empty or empty lists. 
%

fun append(+,+,-).
append(X,Y,Z) if 
   when( (X=(e_list;ne_list);
          Z=(e_list;ne_list)) 
       , undelayed_append(X,Y,Z)
       ).

undelayed_append([],L,L) if true.
undelayed_append([H|T1],L,[H|T2]) if append(T1,L,T2).
