src/HOL/Nominal/nominal_permeq.ML
changeset 22578 b0eb5652f210
parent 22565 2a1eef99bb6a
child 22595 293934e41dfd
equal deleted inserted replaced
22577:1a08fce38565 22578:b0eb5652f210
   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)