equal
deleted
inserted
replaced
1494 | is_conj @{const induct_true} = true |
1494 | is_conj @{const induct_true} = true |
1495 | is_conj @{const induct_false} = true |
1495 | is_conj @{const induct_false} = true |
1496 | is_conj _ = false |
1496 | is_conj _ = false |
1497 in if is_conj P then SOME @{thm induct_conj_curry} else NONE end |
1497 in if is_conj P then SOME @{thm induct_conj_curry} else NONE end |
1498 | _ => NONE))] |
1498 | _ => NONE))] |
1499 |> Simplifier.set_mksimps (fn ss => Simpdata.mksimps Simpdata.mksimps_pairs ss #> |
1499 |> Simplifier.set_mksimps (fn ctxt => |
1500 map (rewrite_rule (map Thm.symmetric @{thms induct_rulify_fallback}))))) |
1500 Simpdata.mksimps Simpdata.mksimps_pairs ctxt #> |
|
1501 map (rewrite_rule ctxt (map Thm.symmetric @{thms induct_rulify_fallback}))))) |
1501 *} |
1502 *} |
1502 |
1503 |
1503 text {* Pre-simplification of induction and cases rules *} |
1504 text {* Pre-simplification of induction and cases rules *} |
1504 |
1505 |
1505 lemma [induct_simp]: "(!!x. induct_equal x t ==> PROP P x) == PROP P t" |
1506 lemma [induct_simp]: "(!!x. induct_equal x t ==> PROP P x) == PROP P t" |