(* Title: HOL/Examples/Induction_Schema.thy
Author: Alexander Krauss, TU Muenchen
*)
section \<open>Examples of automatically derived induction rules\<close>
theory Induction_Schema
imports Main
begin
subsection \<open>Some simple induction principles on nat\<close>
lemma nat_standard_induct: (* cf. Nat.thy *)
"\P 0; \n. P n \ P (Suc n)\ \ P x"
by induction_schema (pat_completeness, lexicographic_order)
lemma nat_induct2:
"\ P 0; P (Suc 0); \k. P k ==> P (Suc k) ==> P (Suc (Suc k)) \
\<Longrightarrow> P n"
by induction_schema (pat_completeness, lexicographic_order)
lemma minus_one_induct:
"\\n::nat. (n \ 0 \ P (n - 1)) \ P n\ \ P x"
by induction_schema (pat_completeness, lexicographic_order)
theorem diff_induct: (* cf. Nat.thy *)
"(!!x. P x 0) ==> (!!y. P 0 (Suc y)) ==>
(!!x y. P x y ==> P (Suc x) (Suc y)) ==> P m n"
by induction_schema (pat_completeness, lexicographic_order)
lemma list_induct2': (* cf. List.thy *)
"\ P [] [];
\<And>x xs. P (x#xs) [];
\<And>y ys. P [] (y#ys);
\<And>x xs y ys. P xs ys \<Longrightarrow> P (x#xs) (y#ys) \<rbrakk>
\<Longrightarrow> P xs ys"
by induction_schema (pat_completeness, lexicographic_order)
theorem even_odd_induct:
assumes "R 0"
assumes "Q 0"
assumes "\n. Q n \ R (Suc n)"
assumes "\n. R n \ Q (Suc n)"
shows "R n" "Q n"
using assms
by induction_schema (pat_completeness+, lexicographic_order)
end
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet)
¤
|
Haftungshinweis
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.
|