src/HOL/Tools/Nitpick/nitpick_preproc.ML
changeset 35075 6fd1052fe463
parent 35067 96136eb6218f
child 35076 592edca1dfb3
equal deleted inserted replaced
35074:c1dac8ace020 35075:6fd1052fe463
   941   in
   941   in
   942     Logic.list_implies (eqs |> filter_out (op =) |> distinct (op =)
   942     Logic.list_implies (eqs |> filter_out (op =) |> distinct (op =)
   943                             |> map Logic.mk_equals,
   943                             |> map Logic.mk_equals,
   944                         Logic.mk_equals (list_comb (Const x1, bounds1 @ args1),
   944                         Logic.mk_equals (list_comb (Const x1, bounds1 @ args1),
   945                                          list_comb (Const x2, bounds2 @ args2)))
   945                                          list_comb (Const x2, bounds2 @ args2)))
   946     |> Refute.close_form (* TODO: needed? *)
   946     |> close_form (* TODO: needed? *)
   947   end
   947   end
   948 
   948 
   949 (* hol_context -> styp list -> term list *)
   949 (* hol_context -> styp list -> term list *)
   950 fun special_congruence_axioms (hol_ctxt as {special_funs, ...}) xs =
   950 fun special_congruence_axioms (hol_ctxt as {special_funs, ...}) xs =
   951   let
   951   let
  1389                                   skolemize, uncurry, ...}) t =
  1389                                   skolemize, uncurry, ...}) t =
  1390   let
  1390   let
  1391     val skolem_depth = if skolemize then 4 else ~1
  1391     val skolem_depth = if skolemize then 4 else ~1
  1392     val (((def_ts, nondef_ts), (got_all_mono_user_axioms, no_poly_user_axioms)),
  1392     val (((def_ts, nondef_ts), (got_all_mono_user_axioms, no_poly_user_axioms)),
  1393          core_t) = t |> unfold_defs_in_term hol_ctxt
  1393          core_t) = t |> unfold_defs_in_term hol_ctxt
  1394                      |> Refute.close_form
  1394                      |> close_form
  1395                      |> skolemize_term_and_more hol_ctxt skolem_depth
  1395                      |> skolemize_term_and_more hol_ctxt skolem_depth
  1396                      |> specialize_consts_in_term hol_ctxt 0
  1396                      |> specialize_consts_in_term hol_ctxt 0
  1397                      |> `(axioms_for_term hol_ctxt)
  1397                      |> `(axioms_for_term hol_ctxt)
  1398     val binarize =
  1398     val binarize =
  1399       case binary_ints of
  1399       case binary_ints of
  1418       #> destroy_universal_equalities
  1418       #> destroy_universal_equalities
  1419       #> destroy_existential_equalities thy
  1419       #> destroy_existential_equalities thy
  1420       #> simplify_constrs_and_sels thy
  1420       #> simplify_constrs_and_sels thy
  1421       #> distribute_quantifiers
  1421       #> distribute_quantifiers
  1422       #> push_quantifiers_inward thy
  1422       #> push_quantifiers_inward thy
  1423       #> not core ? Refute.close_form
  1423       #> close_form
  1424       #> Term.map_abs_vars shortest_name
  1424       #> Term.map_abs_vars shortest_name
  1425   in
  1425   in
  1426     (((map (do_rest true false) def_ts, map (do_rest false false) nondef_ts),
  1426     (((map (do_rest true false) def_ts, map (do_rest false false) nondef_ts),
  1427       (got_all_mono_user_axioms, no_poly_user_axioms)),
  1427       (got_all_mono_user_axioms, no_poly_user_axioms)),
  1428      do_rest false true core_t)
  1428      do_rest false true core_t)