equal
deleted
inserted
replaced
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; |