equal
deleted
inserted
replaced
851 fun hyp_subst_tac' i thm = if i <= Thm.nprems_of thm andalso |
851 fun hyp_subst_tac' i thm = if i <= Thm.nprems_of thm andalso |
852 Term.exists_Const (fn ("op =", Type (_, [T, _])) => T <> Type ("bool", []) | _ => false) |
852 Term.exists_Const (fn ("op =", Type (_, [T, _])) => T <> Type ("bool", []) | _ => false) |
853 (nth (Thm.prems_of thm) (i - 1)) then Hypsubst.hyp_subst_tac i thm else no_tac thm; |
853 (nth (Thm.prems_of thm) (i - 1)) then Hypsubst.hyp_subst_tac i thm else no_tac thm; |
854 in |
854 in |
855 Hypsubst.hypsubst_setup |
855 Hypsubst.hypsubst_setup |
856 #> ContextRules.addSWrapper (fn tac => hyp_subst_tac' ORELSE' tac) |
856 #> Context_Rules.addSWrapper (fn tac => hyp_subst_tac' ORELSE' tac) |
857 end |
857 end |
858 *} |
858 *} |
859 |
859 |
860 declare iffI [intro!] |
860 declare iffI [intro!] |
861 and notI [intro!] |
861 and notI [intro!] |