src/HOL/Tools/Predicate_Compile/predicate_compile_core.ML
changeset 56239 17df7145a871
parent 55757 9fc71814b8c1
child 58823 513268cb2178
equal deleted inserted replaced
56237:69a9dfe71aed 56239:17df7145a871
  1144           (Predicate_Comp_Funs.mk_Enum (HOLogic.tupled_lambda (HOLogic.mk_tuple outargs)
  1144           (Predicate_Comp_Funs.mk_Enum (HOLogic.tupled_lambda (HOLogic.mk_tuple outargs)
  1145             (list_comb (Const (name, T), args))))
  1145             (list_comb (Const (name, T), args))))
  1146         val lhs = Const (mode_cname, funT)
  1146         val lhs = Const (mode_cname, funT)
  1147         val def = Logic.mk_equals (lhs, predterm)
  1147         val def = Logic.mk_equals (lhs, predterm)
  1148         val ([definition], thy') = thy |>
  1148         val ([definition], thy') = thy |>
  1149           Sign.add_consts_i [(Binding.name mode_cbasename, funT, NoSyn)] |>
  1149           Sign.add_consts [(Binding.name mode_cbasename, funT, NoSyn)] |>
  1150           Global_Theory.add_defs false [((Binding.name (Thm.def_name mode_cbasename), def), [])]
  1150           Global_Theory.add_defs false [((Binding.name (Thm.def_name mode_cbasename), def), [])]
  1151         val ctxt' = Proof_Context.init_global thy'
  1151         val ctxt' = Proof_Context.init_global thy'
  1152         val rules as ((intro, elim), _) =
  1152         val rules as ((intro, elim), _) =
  1153           create_intro_elim_rule ctxt' mode definition mode_cname funT (Const (name, T))
  1153           create_intro_elim_rule ctxt' mode definition mode_cname funT (Const (name, T))
  1154         in
  1154         in
  1169       let
  1169       let
  1170         val function_name_prefix = Comp_Mod.function_name_prefix comp_modifiers
  1170         val function_name_prefix = Comp_Mod.function_name_prefix comp_modifiers
  1171         val mode_cname = create_constname_of_mode options thy function_name_prefix name T mode
  1171         val mode_cname = create_constname_of_mode options thy function_name_prefix name T mode
  1172         val funT = Comp_Mod.funT_of comp_modifiers mode T
  1172         val funT = Comp_Mod.funT_of comp_modifiers mode T
  1173       in
  1173       in
  1174         thy |> Sign.add_consts_i [(Binding.name (Long_Name.base_name mode_cname), funT, NoSyn)]
  1174         thy |> Sign.add_consts [(Binding.name (Long_Name.base_name mode_cname), funT, NoSyn)]
  1175         |> set_function_name (Comp_Mod.compilation comp_modifiers) name mode mode_cname
  1175         |> set_function_name (Comp_Mod.compilation comp_modifiers) name mode mode_cname
  1176       end;
  1176       end;
  1177   in
  1177   in
  1178     thy
  1178     thy
  1179     |> defined_function_of (Comp_Mod.compilation comp_modifiers) name
  1179     |> defined_function_of (Comp_Mod.compilation comp_modifiers) name