src/Pure/Isar/obtain.ML
changeset 60390 c8384ff11711
parent 60389 ea3a699964aa
child 60391 04f92c13ff7e
equal deleted inserted replaced
60389:ea3a699964aa 60390:c8384ff11711
   130     val params = map Free (xs' ~~ Ts);
   130     val params = map Free (xs' ~~ Ts);
   131     val cparams = map (Thm.cterm_of params_ctxt) params;
   131     val cparams = map (Thm.cterm_of params_ctxt) params;
   132     val _ = Variable.warn_extra_tfrees fix_ctxt params_ctxt;
   132     val _ = Variable.warn_extra_tfrees fix_ctxt params_ctxt;
   133 
   133 
   134     (*abstracted term bindings*)
   134     (*abstracted term bindings*)
   135     fun abs_params t =
   135     val abs_term = Term.close_schematic_term o fold_rev Term.lambda_name (xs ~~ params);
   136       let
   136     val binds' = map (apsnd abs_term) binds;
   137         val ps =
       
   138           (xs ~~ params) |> map_filter (fn (x, p) =>
       
   139             if exists_subterm (fn u => u aconv p) t then SOME (x, p) else NONE);
       
   140       in fold_rev Term.lambda_name ps t end;
       
   141     val binds' = map (apsnd (Term.close_schematic_term o abs_params)) binds;
       
   142 
   137 
   143     (*obtain statements*)
   138     (*obtain statements*)
   144     val thesisN = singleton (Name.variant_list xs) Auto_Bind.thesisN;
   139     val thesisN = singleton (Name.variant_list xs) Auto_Bind.thesisN;
   145     val (thesis_var, thesis) = #1 (bind_judgment fix_ctxt thesisN);
   140     val (thesis_var, thesis) = #1 (bind_judgment fix_ctxt thesisN);
   146 
   141