# HG changeset patch # User Cezary Kaliszyk # Date 1256118653 -7200 # Node ID 59bba5cfa24879408a30d1893adab274b7a04ec0 # Parent efb427ae04c99226599f4872cd5c06a2b0435f12 cterm_instantiate also fails for some strange reason... diff -r efb427ae04c9 -r 59bba5cfa248 QuotMain.thy --- a/QuotMain.thy Wed Oct 21 10:55:32 2009 +0200 +++ b/QuotMain.thy Wed Oct 21 11:50:53 2009 +0200 @@ -1350,14 +1350,27 @@ ML_prf {* val goal = hd (prems_of (Isar.goal ())); val goalc = Logic.strip_assums_concl goal - val ps = rev (Logic.strip_params goal); - val (_, gc') = Thm.dest_comb (cterm_of @{theory} (Term.subst_bounds ((map Free ps), goalc))); + val ps = rev (map Free (Logic.strip_params goal)); + val (_, gc') = Thm.dest_comb (cterm_of @{theory} (Term.subst_bounds (ps, goalc))); val (_, tc') = Thm.dest_comb (cterm_of @{theory} (concl_of @{thm "APPLY_RSP_II" })) *} - +ML_prf fold ML_prf {* val m = Thm.match (tc', gc') + val l = map (fst) (snd m); + val f_inst = map (term_of o snd) (snd m); + val f_abs = map (fold lambda ps) f_inst *} +ML_prf {* val f_abs_c = map (cterm_of @{theory}) f_abs *} +ML_prf {* val insts = l ~~ f_abs_c *} +ML_prf {* val t = Thm.lift_rule (hd (cprems_of (Isar.goal ()))) @{thm "APPLY_RSP_II" } *} +ML_prf {* Toplevel.program (fn () => cterm_instantiate insts t) *} + +ML_prf {* Toplevel.program (fn () => Drule.instantiate' [] [SOME f_abs_c, SOME f_abs_c] t) *} + + + +. (* FAILS: t2 = Drule.instantiate m @{thm "APPLY_RSP_II" }; rtac t2 1 *) (* Works but why does it take a string? *) ML_prf {*