list_mk_anylet : (term * term) list list * term -> term
let a1 = b1 and ... an = bn in ... in let u1 = v1 and ... and uk = vk in body
list_mk_anylet 
  ([[(``x:'a``, ``P:'a``)], 
    [(``(y:'a, z:ind)``, ``M:'a#ind``)],
    [(``f (x:'a):bool``, ``N:bool``), 
     (``g:bool->'a``,    ``K (v:'a):bool->'a``)]], ``g (f (x:'a):bool):'a``);
> val it = `let x = P in 
            let (y,z) = M in 
            let f x = N 
            and g = K v 
            in g (f x)`