let compile p = pred (ref Smap.empty) Vmap.empty p