equal
deleted
inserted
replaced
615 val xs = rename_params (Logic.strip_params A); |
615 val xs = rename_params (Logic.strip_params A); |
616 val xs' = |
616 val xs' = |
617 (case filter (fn x' => x' = x) xs of |
617 (case filter (fn x' => x' = x) xs of |
618 [] => xs | [_] => xs | _ => index 1 xs); |
618 [] => xs | [_] => xs | _ => index 1 xs); |
619 in Logic.list_rename_params xs' A end; |
619 in Logic.list_rename_params xs' A end; |
620 fun rename_prop p = |
620 fun rename_prop prop = |
621 let val (As, C) = Logic.strip_horn p |
621 let val (As, C) = Logic.strip_horn prop |
622 in Logic.list_implies (map rename_asm As, C) end; |
622 in Logic.list_implies (map rename_asm As, C) end; |
623 val cp' = cterm_fun rename_prop (Thm.cprop_of thm); |
623 val thm' = Thm.renamed_prop (rename_prop (Thm.prop_of thm)) thm; |
624 val thm' = Thm.equal_elim (Thm.reflexive cp') thm; |
|
625 in [Rule_Cases.save thm thm'] end |
624 in [Rule_Cases.save thm thm'] end |
626 | special_rename_params _ _ ths = ths; |
625 | special_rename_params _ _ ths = ths; |
627 |
626 |
628 |
627 |
629 (* arbitrary_tac *) |
628 (* arbitrary_tac *) |