let compile_user_axiom_labels name (labels,predicate) =
    let d_name = "Hyp_" ^ name in
    let context = push_context "axiom-labels" in
    try
      let here =
        match labels with
          | LogicLabel (None, l)::_ -> l
          | _ -> Wp_parameters.fatal "No logic label for Axiom '%s'" name
      in
      let env = axiom_env here in
      let body = prop env predicate in
      let signature = collect_signature [] (pred_filter body) env in
      let formals = flatten_formals signature in
      let property = L.forall formals (flush_context "axiom-labels" context body)
      in {
        a_name = name ;
        a_defname = d_name ;
        a_memory = signature ;
        a_property = property ;
      }
    with err ->
      kill_context "axiom-labels" context ;
      raise err