%%% Mini-ML Natural Semantics
%%% Version restricted to pure lambda-calculus
%%% Author: Frank Pfenning, based on [Michaylov & Pfenning 92]

feval : env -> exp' -> val -> type.  %name feval D.
%mode feval +N +F -W.

% Variables
fev_1 : feval (N , W) 1 W.
fev_^ : feval (N , W') (F ^) W
	   <- feval N F W.

% Functions
fev_lam : feval N (lam' F) (clo N (lam' F)).
fev_app : feval N (app' F1 F2) W
	   <- feval N F1 (clo N' (lam' F1'))
	   <- feval N F2 W2
	   <- feval (N' , W2) F1' W.
