((fn fullAdder.
  (fn x.
  (fn y.
    (fn lowBitCarry.
    (fn middleBitCarry.
    (fn highBitCarry.
      (((highBitCarry).1, (middleBitCarry).1), (lowBitCarry).1))
    (fullAdder ((x).1).1 ((y).1).1 (middleBitCarry).2))
    (fullAdder ((x).1).2 ((y).1).2 (lowBitCarry).2))
    (fullAdder ((x).2) ((y).2) false))))
 (fn x. (fn y. (fn z.
	((if x then (if y then z else (if z then false else true))
              else (if y then (if z then false else true) else z)),
	(if x then (if y then true else z) else (if y then z else false)))
   ))))
((false,true),true)
((false,true),false)
