(* Title: HOL/Proofs/Lambda/InductTermi.thy Author: Tobias Nipkow Copyright 1998 TU Muenchen
Inductive characterization of terminating lambda terms. Goes back to Raamsdonk & Severi. On normalization. CWI TR CS-R9545, 1995. Also rediscovered by Matthes and Joachimski.
*)
section \<open>Inductive characterization of terminating lambda terms\<close>
inductive IT :: "dB => bool" where
Var [intro]: "listsp IT rs ==> IT (Var n \\ rs)"
| Lambda [intro]: "IT r ==> IT (Abs r)"
| Beta [intro]: "IT ((r[s/0]) \\ ss) ==> IT s ==> IT ((Abs r \ s) \\ ss)"
subsection \<open>Every term in \<open>IT\<close> terminates\<close>
lemma double_induction_lemma [rule_format]: "termip beta s ==> \t. termip beta t -->
(\<forall>r ss. t = r[s/0] \<degree>\<degree> ss --> termip beta (Abs r \<degree> s \<degree>\<degree> ss))" apply (erule accp_induct) apply (rule allI) apply (rule impI) apply (erule thin_rl) apply (erule accp_induct) apply clarify apply (rule accp.accI) apply (safe elim!: apps_betasE) apply (blast intro: subst_preserves_beta apps_preserves_beta) apply (blast intro: apps_preserves_beta2 subst_preserves_beta2 rtranclp_converseI
dest: accp_downwards) (* FIXME: acc_downwards can be replaced by acc(R ^* ) = acc(r) *) apply (blast dest: apps_preserves_betas) done
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.