let apply_predicate env def labels args =
    apply_hints env def labels ;
    let definition = get_definition compile_predicate def in
    let params = List.map (term env) args in
    let implicits = List.map (apply_closure env labels) definition.d_closure in
    F.p_call definition.d_callname (params @ implicits)