285 let val goal = List.nth(cprems_of st, i-1) |
285 let val goal = List.nth(cprems_of st, i-1) |
286 in |
286 in |
287 case Logic.strip_assums_concl (term_of goal) of |
287 case Logic.strip_assums_concl (term_of goal) of |
288 _ $ (Const ("Finite_Set.finite", _) $ (Const ("Nominal.supp", T) $ x)) => |
288 _ $ (Const ("Finite_Set.finite", _) $ (Const ("Nominal.supp", T) $ x)) => |
289 let |
289 let |
290 val cert = Thm.cterm_of (sign_of_thm st); |
290 val cert = Thm.cterm_of (Thm.theory_of_thm st); |
291 val ps = Logic.strip_params (term_of goal); |
291 val ps = Logic.strip_params (term_of goal); |
292 val Ts = rev (map snd ps); |
292 val Ts = rev (map snd ps); |
293 val vs = collect_vars 0 x []; |
293 val vs = collect_vars 0 x []; |
294 val s = Library.foldr (fn (v, s) => |
294 val s = Library.foldr (fn (v, s) => |
295 HOLogic.pair_const (fastype_of1 (Ts, v)) (fastype_of1 (Ts, s)) $ v $ s) |
295 HOLogic.pair_const (fastype_of1 (Ts, v)) (fastype_of1 (Ts, s)) $ v $ s) |
325 val ss2 = ss addsimps [supp_prod,supp_unit,finite_Un,finite_emptyI,conj_absorb]@fin_supp |
325 val ss2 = ss addsimps [supp_prod,supp_unit,finite_Un,finite_emptyI,conj_absorb]@fin_supp |
326 in |
326 in |
327 case Logic.strip_assums_concl (term_of goal) of |
327 case Logic.strip_assums_concl (term_of goal) of |
328 _ $ (Const ("Nominal.fresh", Type ("fun", [T, _])) $ _ $ t) => |
328 _ $ (Const ("Nominal.fresh", Type ("fun", [T, _])) $ _ $ t) => |
329 let |
329 let |
330 val cert = Thm.cterm_of (sign_of_thm st); |
330 val cert = Thm.cterm_of (Thm.theory_of_thm st); |
331 val ps = Logic.strip_params (term_of goal); |
331 val ps = Logic.strip_params (term_of goal); |
332 val Ts = rev (map snd ps); |
332 val Ts = rev (map snd ps); |
333 val vs = collect_vars 0 t []; |
333 val vs = collect_vars 0 t []; |
334 val s = Library.foldr (fn (v, s) => |
334 val s = Library.foldr (fn (v, s) => |
335 HOLogic.pair_const (fastype_of1 (Ts, v)) (fastype_of1 (Ts, s)) $ v $ s) |
335 HOLogic.pair_const (fastype_of1 (Ts, v)) (fastype_of1 (Ts, s)) $ v $ s) |