equal
deleted
inserted
replaced
242 in |
242 in |
243 (Logic.list_all (params', prem), (rev vs, subst_bounds (vs, prem))) |
243 (Logic.list_all (params', prem), (rev vs, subst_bounds (vs, prem))) |
244 end) prems); |
244 end) prems); |
245 |
245 |
246 val ind_vars = |
246 val ind_vars = |
247 (Datatype_Prop.indexify_names (replicate (length atomTs) "pi") ~~ |
247 (Old_Datatype_Prop.indexify_names (replicate (length atomTs) "pi") ~~ |
248 map NominalAtoms.mk_permT atomTs) @ [("z", fsT)]; |
248 map NominalAtoms.mk_permT atomTs) @ [("z", fsT)]; |
249 val ind_Ts = rev (map snd ind_vars); |
249 val ind_Ts = rev (map snd ind_vars); |
250 |
250 |
251 val concl = HOLogic.mk_Trueprop (foldr1 HOLogic.mk_conj |
251 val concl = HOLogic.mk_Trueprop (foldr1 HOLogic.mk_conj |
252 (map (fn (prem, (p, ts)) => HOLogic.mk_imp (prem, |
252 (map (fn (prem, (p, ts)) => HOLogic.mk_imp (prem, |
643 | SOME (th, _) => Seq.single th |
643 | SOME (th, _) => Seq.single th |
644 end; |
644 end; |
645 val thss = map (fn atom => |
645 val thss = map (fn atom => |
646 let val pi' = Free (pi, NominalAtoms.mk_permT (Type (atom, []))) |
646 let val pi' = Free (pi, NominalAtoms.mk_permT (Type (atom, []))) |
647 in map (fn th => zero_var_indexes (th RS mp)) |
647 in map (fn th => zero_var_indexes (th RS mp)) |
648 (Datatype_Aux.split_conj_thm (Goal.prove ctxt' [] [] |
648 (Old_Datatype_Aux.split_conj_thm (Goal.prove ctxt' [] [] |
649 (HOLogic.mk_Trueprop (foldr1 HOLogic.mk_conj (map (fn p => |
649 (HOLogic.mk_Trueprop (foldr1 HOLogic.mk_conj (map (fn p => |
650 let |
650 let |
651 val (h, ts) = strip_comb p; |
651 val (h, ts) = strip_comb p; |
652 val (ts1, ts2) = chop k ts |
652 val (ts1, ts2) = chop k ts |
653 in |
653 in |