% scope.pl a program for quantifier retrieval

scope(Mx, [], Mx).

scope(Oldmx, StoredNPS, Scopedmx):-
   remove(stored(NPmx, Var), StoredNPS, NewStore),
   apply_np(NPmx, Var, Oldmx, Newmx),
   scope(Newmx, NewStore, Scopedmx).
   
apply_np(NPmx, Var, Oldmx, Newmx):-
   beta_reduce(NPmx*(Var^Oldmx), Newmx).
      
remove(X, [X|Xs], Xs).
remove(X, [Y|Ys], [Y|Zs]):-
   remove(X, Ys, Zs).