(fun hlet(pair : int -> int -> (int -> int -> int) -> int) : int is
    (fun hlet(fst : int -> int -> int) : int is
        (fun hlet(snd : int -> int -> int) : int is
			   (pair (pair 10 20 fst) (pair 1 2 snd) fst) -
				  (pair  5  3 snd))
        (fun snd ( x1 : int ) : int -> int is
			        fun snd ( x2 : int ) : int is
					      x2))
    (fun fst ( x1 : int ) : int -> int is
			    fun fst ( x2 : int ) : int is
					  x1))
(fun pair ( x1 : int ) : int ->(int -> int -> int) -> int is
         fun pair ( x2 : int ) : (int -> int -> int) -> int is
	 fun pair ( which : int -> int -> int ) : int is
					  which x1 x2);
