src/HOL/Tools/Predicate_Compile/pred_compile_data.ML
changeset 32669 462b1dd67a58
parent 32668 b2de45007537
child 32672 90f3ce5d27ae
equal deleted inserted replaced
32668:b2de45007537 32669:462b1dd67a58
   106         val (xTs, nctxt') = declare_names x Ts nctxt
   106         val (xTs, nctxt') = declare_names x Ts nctxt
   107         val paths = HOLogic.flat_tupleT_paths T
   107         val paths = HOLogic.flat_tupleT_paths T
   108       in ((Free (x, T), HOLogic.mk_ptuple paths T (map Free xTs)), nctxt') end
   108       in ((Free (x, T), HOLogic.mk_ptuple paths T (map Free xTs)), nctxt') end
   109     val (rewr, _) = fold_map mk_tuple_rewrites frees nctxt 
   109     val (rewr, _) = fold_map mk_tuple_rewrites frees nctxt 
   110     val t' = Pattern.rewrite_term thy rewr [] t
   110     val t' = Pattern.rewrite_term thy rewr [] t
   111     val tac = SkipProof.cheat_tac thy
   111     val tac = setmp quick_and_dirty true (SkipProof.cheat_tac thy)
   112     val th'' = Goal.prove ctxt (Term.add_free_names t' []) [] t' (fn {...} => tac)
   112     val th'' = Goal.prove ctxt (Term.add_free_names t' []) [] t' (fn {...} => tac)
   113     val th''' = LocalDefs.unfold ctxt [@{thm split_conv}] th''
   113     val th''' = LocalDefs.unfold ctxt [@{thm split_conv}] th''
   114   in
   114   in
   115     th'''
   115     th'''
   116   end;
   116   end;