proper fresh name generation
authorblanchet
Mon, 03 Feb 2014 19:32:02 +0100
changeset 566366f77310a0907
parent 56635 42cf5802d36a
child 56637 b18f65f77fcd
proper fresh name generation
src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML
src/HOL/Tools/Sledgehammer/sledgehammer_isar_preplay.ML
     1.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Mon Feb 03 08:23:21 2014 +0100
     1.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Mon Feb 03 19:32:02 2014 +0100
     1.3 @@ -137,9 +137,7 @@
     1.4          val metislike_methods = insert (op =) (Metis_Method alt_metis_args) metislike_methods0
     1.5  
     1.6          fun massage_meths (meths as meth :: _) =
     1.7 -          if not try0_isar then [meth]
     1.8 -          else if smt then SMT_Method :: meths
     1.9 -          else meths
    1.10 +          if not try0_isar then [meth] else if smt then SMT_Method :: meths else meths
    1.11  
    1.12          val (params, _, concl_t) = strip_subgoal goal subgoal ctxt
    1.13          val fixes = map (fn (s, T) => (Binding.name s, SOME T, NoSyn)) params
     2.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_isar_preplay.ML	Mon Feb 03 08:23:21 2014 +0100
     2.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_isar_preplay.ML	Mon Feb 03 19:32:02 2014 +0100
     2.3 @@ -110,10 +110,10 @@
     2.4          (* proof obligation: !!thesis. (!!x. A x ==> thesis) ==> thesis
     2.5             (cf. "~~/src/Pure/Isar/obtain.ML") *)
     2.6          let
     2.7 -          (* FIXME: generate fresh name *)
     2.8 -          val thesis = Free ("thesis_preplay", HOLogic.boolT)
     2.9 +          val frees = map Free xs
    2.10 +          val thesis =
    2.11 +            Free (singleton (Variable.variant_frees ctxt frees) ("thesis", HOLogic.boolT))
    2.12            val thesis_prop = HOLogic.mk_Trueprop thesis
    2.13 -          val frees = map Free xs
    2.14  
    2.15            (* !!x1..xn. t ==> thesis (xs = [x1, .., xn]) *)
    2.16            val inner_prop = fold_rev Logic.all frees (Logic.mk_implies (t, thesis_prop))