equal
deleted
inserted
replaced
300 val s = fold_rev (fn v => fn s => |
300 val s = fold_rev (fn v => fn s => |
301 HOLogic.pair_const (fastype_of1 (Ts, v)) (fastype_of1 (Ts, s)) $ v $ s) |
301 HOLogic.pair_const (fastype_of1 (Ts, v)) (fastype_of1 (Ts, s)) $ v $ s) |
302 vs HOLogic.unit; |
302 vs HOLogic.unit; |
303 val s' = list_abs (ps, |
303 val s' = list_abs (ps, |
304 Const ("Nominal.supp", fastype_of1 (Ts, s) --> |
304 Const ("Nominal.supp", fastype_of1 (Ts, s) --> |
305 snd (split_last (binder_types T)) --> HOLogic.boolT) $ s); |
305 List.last (binder_types T) --> HOLogic.boolT) $ s); |
306 val supports_rule' = Thm.lift_rule goal supports_rule; |
306 val supports_rule' = Thm.lift_rule goal supports_rule; |
307 val _ $ (_ $ S $ _) = |
307 val _ $ (_ $ S $ _) = |
308 Logic.strip_assums_concl (hd (prems_of supports_rule')); |
308 Logic.strip_assums_concl (hd (prems_of supports_rule')); |
309 val supports_rule'' = Drule.cterm_instantiate |
309 val supports_rule'' = Drule.cterm_instantiate |
310 [(cert (head_of S), cert s')] supports_rule' |
310 [(cert (head_of S), cert s')] supports_rule' |