src/HOL/Tools/Quickcheck/exhaustive_generators.ML
changeset 48273 65233084e9d7
parent 48178 0192811f0a96
child 48414 43875bab3a4c
equal deleted inserted replaced
48272:db75b4005d9a 48273:65233084e9d7
   330                   (map (fn t => ("x", fastype_of t)) args))
   330                   (map (fn t => ("x", fastype_of t)) args))
   331                 val varnames = map (fst o dest_Free) vars
   331                 val varnames = map (fst o dest_Free) vars
   332                 val dummy_var = Free (singleton
   332                 val dummy_var = Free (singleton
   333                   (Variable.variant_frees ctxt (concl :: assms @ vars)) ("dummy", T))
   333                   (Variable.variant_frees ctxt (concl :: assms @ vars)) ("dummy", T))
   334                 val new_assms = map HOLogic.mk_eq (vars ~~ args)
   334                 val new_assms = map HOLogic.mk_eq (vars ~~ args)
   335                 val cont_t = mk_smart_test_term' concl (union (op =) varnames bound_vars)
   335                 val bound_vars' = union (op =) (vars_of lhs) (union (op =) varnames bound_vars)
   336                   (new_assms @ assms) genuine
   336                 val cont_t = mk_smart_test_term' concl bound_vars' (new_assms @ assms) genuine
   337               in
   337               in
   338                 (vars_of lhs, Datatype_Case.make_case ctxt Datatype_Case.Quiet [] lhs
   338                 (vars_of lhs, Datatype_Case.make_case ctxt Datatype_Case.Quiet [] lhs
   339                   [(list_comb (constr, vars), cont_t), (dummy_var, none_t)])
   339                   [(list_comb (constr, vars), cont_t), (dummy_var, none_t)])
   340               end
   340               end
   341             else c (assm, assms)
   341             else c (assm, assms)