/*************************************************************************

         name: drs2fol.pl
      version: Oct 15, 2003
  description: DRS to FOL translation
      authors: Johan Bos
 
*************************************************************************/

:- module(drs2fol,[drs2fol/2]).

:- ensure_loaded(comsemOperators).


/*========================================================================
   Translate DRSs
========================================================================*/

drs2fol(drs([],[Cond]),Formula):-
   cond2fol(Cond,Formula).

drs2fol(drs([],[Cond1,Cond2|Conds]),Formula1 & Formula2):-
   cond2fol(Cond1,Formula1),
   drs2fol(drs([],[Cond2|Conds]),Formula2).

drs2fol(drs([X|Referents],Conds),exists(X,Formula)):-
   drs2fol(drs(Referents,Conds),Formula).


/*========================================================================
   Translate DRS-Conditions
========================================================================*/

cond2fol(~ Drs, ~ Formula):-
   drs2fol(Drs,Formula).

cond2fol(Drs1 v Drs2, Formula1 v Formula2):-
   drs2fol(Drs1,Formula1),
   drs2fol(Drs2,Formula2).

cond2fol(drs([],Conds) > Drs2, Formula1 > Formula2):-
   drs2fol(drs([],Conds),Formula1),
   drs2fol(Drs2,Formula2).

cond2fol(drs([X|Referents],Conds) > Drs2, forall(X,Formula)):-
   cond2fol(drs(Referents,Conds) > Drs2,Formula).

cond2fol(Condition,Formula):-
   \+ Condition = (~_),
   \+ Condition = (_ v _),
   \+ Condition = (_ > _),
   Formula=Condition.
