(* 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‹Inductive characterization of terminating lambda terms›
theory InductTermi imports ListBeta begin
subsection‹Terminating lambda terms›
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‹Every term in ‹IT›terminates›
lemma double_induction_lemma [rule_format]: "termip beta s ==> ∀t. termip beta t --> (∀r ss. t = r[s/0] 🍋🍋 ss --> termip beta (Abs r 🍋 s 🍋🍋 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 und die Messung sind noch experimentell.