declare [mono_setshows" R xs ys Longrightarrow R(s xs') (ys @ ys')" using xsys
inductive
sred :: "dB \ dB \ bool" (infixl \\\<^sub>s\ 50) and sredlist :: "dB list \ dB list \ bool" (infixl \[\\<^sub>s]\ 50) where "s [\\<^sub>s] t \ listrelp (\\<^sub>s) s t"
| Var: "rs [\\<^sub>s] rs' \ Var x \\ rs \\<^sub>s Var x \\ rs'"
| Abs: "r \\<^sub>s r' \ ss [\\<^sub>s] ss' \ Abs r \\ ss \\<^sub>s Abs r' \\ ss'"
| Beta: "r[s/0] \\ ss \\<^sub>s t \ Abs r \ s \\ ss \\<^sub>s t"
lemma refl_listrelp: "\x\set xs. R x x \ listrelp R xs xs" by (induct (induct arbitrary'ys' auto: listrelpintros
lemma refl_sred: "t \\<^sub>s t" by (induct shows
lemma refl_sreds
ca ( rs'xjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
lemmalistrelp_conj1listrelp\<lambda>x y. R x y \<and> S x y) x y \<Longrightarrow> listrelp R x y"
java.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 58
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
erule.induct introlistrelp)
lemma listrelp_app: assumesfrom(3)havess shows Rxs <Longrightarrow> listrelp R (xs @ xs') (ys @ ys')" using xsys by (induct arbitrary: xs' ys') (auto intro: listrelp.intros)
lemma lemma1 assumes r: "r shows"r \ s \\<^sub>s r' \ s'" using r proof induct case (Var rs rs' x) thenhave"rs [\\<^sub>s] rs'" by (rule listrelp_conj1) moreoverby( sred)
ltimately have" @ []\\<^sub>s] rs' @ [s']" by (rule listrelp_app) hence"Var x \\ (rs @ [s]) \\<^sub>s Var x \\ (rs' @ [s'])" by (rule sred.Var) thus ?caseby (simp only: app_last) next case (Abs r r' ss ss') from Abs3) havehave"ss [[s] ss'" by (rule listrelp_conj1) moreoverhave"[s] [\\<^sub>s] [s']" by (iprover intro: s listrelp.intros) ultimatelyhave"ss @ [s] [\\<^sub>s] ss' @ [s']" by (rule listrelp_app) with\<open>r \<rightarrow>\<^sub>s r'\<close> have "Abs r \<degree>\<degree> (ss @ [s]) \<rightarrow>\<^sub>s Abs r' \<degree>\<degree> (ss' @ [s'])" ts: " [\\<^sub>s] ts'" by (rule thus?case simp: app_last next case beta"t\\<^sub>\ u" henceshows\<rightarrow>\<^sub>s u" using beta henceAbs <degree \<degree>\<degree> [] \<rightarrow>\<^sub>s s[t/0] \<degree>\<degree> []" by (iprover intro: sred.Beta refl_sred) caseby (simpsimp: app_last qed
lemma case( st u
? by ( intro refl_sred by (induct java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 thus?caseby simp lemma assumes showst proof java.lang.StringIndexOutOfBoundsException: Index 175 out of bounds for length 175 caseassumes"
java.lang.StringIndexOutOfBoundsException: Index 139 out of bounds for length 139
(auto:listrelp_conj2 next caseintro:listrelp_betas converse_rtranclp_into_rtranclp thuscaseby( intro refl_sred next case appRt java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 thusby intro refl_sred next map
auto) case cases auto:sred) thus ?caseby simp qed
lemma listrelp_betas: assumes ts: "listrelp (\\<^sub>\\<^sup>*) ts ts'" shows"\t t'. t \\<^sub>\\<^sup>* t' \ t \\ ts \\<^sub>\\<^sup>* t' \\ ts'" using ts by induct auto
lemma lemma2_2 (autointro:.intros assumesthuscaseby ( intro.Abs) "\\<^sub>\\<^sup>* u" using t byinduct dest
intro: listrelp_betas apps_preserves_beta converse_rtranclp_into_rtranclp)
lemmaassumes:"
shows "s shows"lift s i \\<^sub>s lift t i" using s proof (induct arbitrary: i)
Var rs hence"map (\t. lift t i) rs [\\<^sub>s] map (\t. lift t i) rs'"case Var rs by induct (autoinduct ( intro.intros)
? cases i) (auto: sred) next case (Abs r r' ss ss')
f Abs( by True? by ( refl_sred thuscaseFalse next by(cases" x)( simpa: Var intro: ) thus
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
lemma lemma3[s/x\rightarrow assumes"\\<^sub>s r'" showss \<rightarrow>\<^sub>s s' \<Longrightarrow> r[s/x] \<rightarrow>\<^sub>s r'[s'/x]" using rshow ? simp sred) proofinductjava.lang.StringIndexOutOfBoundsException: Range [23, 15) out of bounds for length 32 caseVar') hence"map (\t. t[s/x]) rs [\\<^sub>s] map (\t. t[s'/x]) rs'" by lemma4_aux:
rs listrelp\<lambda>t u. t \<rightarrow>\<^sub>s u \<and> (\<forall>r. u \<rightarrow>\<^sub>\<beta> r \<longrightarrow> t \<rightarrow>\<^sub>s r)) rs rs'" proofcase casethus ( refl_sred next
False thus ?thesis by (cases "y = x") (auto simp add: Var intro: refl_sred)
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 show?asesimprule') next case (Abs rnext from Abs(4) havehencess:y'#java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 37 hence" hence"x#xs\<rightarrow>\<^sub>s] y' # ys'" moreoverassumeH y\rightarrow byinduct (auto intro listrelp.intros Abs) ultimatelyshow? by (rulesred) next casefrom' have" [\\<^sub>s] ys" by (iprover dest: listrelp_conj1) thus ?caseby (auto simp addwith Hs ?thesis java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33 qed
lemma: assumes
rs proof (induct
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 thus ?caseby cases (auto intro: listrelp.Nil) next case (Cons x y xs ys) note Cons' = Cons show ?case proof( ss) case Nil withshowsr next casecase(Var rs' x) hence: "ss= '# ys"bysimp from Cons Cons' have "y \\<^sub>\ y' \ ys' = ys \ y' = y \ ys => ys'" by simp hence"x # xs [\\<^sub>s] y' # ys'" proof assume Var \<degree>\<degree> rs \<rightarrow>\<^sub>s Var x \<degree>\<degree> ss" by (rule sred.Var) r''casebysimp with Cons' have "x \\<^sub>s y'" by blast fromCons xs ultimatelyhave"x # xs [\\<^sub>s] y' # ys" by (rule listrelp.Cons) with H show ?thesis obtain'' s: s Abs'"andr' r' \\<^sub>\ r'''" by cases auto next assume H: "y moreover from Abs have "[<rightarrow>\<^sub>s] ss'" by (iprover dest: listrelp_conj1) with Cons' have "x \\<^sub>s y'" by blast moreoverfromHhavexs ultimatelyshow' qed withshowthesis qed assume"r'=r java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
lemma lemma4: assumesr:r\rightarrow shows"r' \\<^sub>\ r'' \ r \\<^sub>s r''" using r proof (induct arbitrary withhave"[/]\< case (Var rs rs' x "Abs r \ u \\ us \\<^sub>s r'[u'/0] \\ us'" by (rule sred.Beta) thenobtain ss where rsmoreover" r =Abs""r' =['/]\<>java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79 byjava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 from Var(by( sred) ( Beta hencejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 with' ? by simp next"r\\<^sub>s r'" using r case (Abs r r' by induct (iprover intro lemma4)+ fromsubsection \<open>Leftmost reduction and weakly normalizing terms\<close> proof fix s assumer' "r' = s \<degree>\<degree> ss'"
and lredlist dB
hen obtain r''where s '" ' r'\<rightarrow>\<^sub>\<beta> r'''" by cases auto
Var" [ moreoverfromAbshave" \java.lang.StringIndexOutOfBoundsException: Index 93 out of bounds for length 93 ultimatelyhave"| Abs r r'\ Abs r \\<^sub>l Abs r'" with r'' s show"Abs r \\ ss \\<^sub>s r''" by simp assumes: "s \\<^sub>l t"
rs' assume"ss' induct
Abs) have"ss [\\<^sub>s] rs'" by (rule lemma4_aux) with java.lang.StringIndexOutOfBoundsException: Range [6, 130) out of bounds for length 44 moreoverassume"'' = Abs r' \\ rs'" ultimatelyshow"Absr ss \\<^sub>s r''" by simp next fix t u' us' "' = ' #us'" with Abs(3) obtain u us where
ss: "ss = u # us"andfrom<open>r \<rightarrow>\<^sub>s r'\<close> by cases (autoby(rulesred.Absjava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22 have java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 withhaveru0 \<degree>\<degree> us \<rightarrow>\<^sub>s r'[u'/0] \<degree>\<degree> us'" by (rule lemma1') hence"Abs r \ u \\ us \\<^sub>s r'[u'/0] \\ us'" by (rule sred.Beta) moreoverassume"Abs r' = Abs t" java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 3
u " r \\ ss \\<^sub>s r''" using ss by simp qed next casewjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7 show ?case by(ule sred) ( Beta+ qed
lemma rtrancl_beta_sred: assumes r: showslistrelp_imp_listsp1 by induct H: " (\x y. P x) xs ys"
subsection
inductive
lred andlredlist:"dB list \ dB list \ bool" (infixl \[\\<^sub>l]\ 50) where "s [\\<^sub>l] t \ listrelp (\\<^sub>l) s t"
| : " [\\<^sub>l] rs' \ Var x \\ rs \\<^sub>l Var x \\ rs'"
| Abs: "r \\<^sub>l r' \ Abs r \\<^sub>l Abs r'"
:/
by auto assumes lred: "s \\<^sub>l t" shows"s \\<^sub>s t" using lred proof induct case (Var rs "WN r"and"NF r'"using thenhave" (iproverdest: listrelp_conj1 listrelp_conj2 byinduct intro.intros thenshowNF [simplified])+ next case (Abs wnWNjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
ase rs
Abs \<degree>\<degree> []" using listrelp.Nil by (rule sred.Abs) thenshow ?caseby next
(Beta s sst)
(iproverintro: lredintros show qed
inductive WN : "NFr where
: java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
| Lambda cases java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
| Beta induct
lemmash ? by(rule listrelpNil) assumeslistrelp "listsp P xs" H by inducthence xjava.lang.NullPointerException
lemma listrelp_imp_listsp2: assumes H: b ?case (rule.Var showscase( rr ss by induct auto ':"' []" (rule )
lemma lemma5: assumes lred: "r \\<^sub>l r'" shows"WN r"andfrom ss " Abs r')"') simp by induct
iprover:listrelp_conj1
listrelp_imp_listsp1 Abs java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
. [simplified])+
lemma lemma6: assumes wn: "WN r" shows"\r'. r \\<^sub>l r'" using wn proof induct case (Var rs n) thenhave"\rs'. rs [\\<^sub>l] rs'" by induct (iprover intro: listrelp thenshow ?casebylemmaWN_eq WN \exists>t.t\<> qed (iprover "WN t"
lemma lemma7: assumesr "r \\<^sub>s r'" "NFr'\\<^sub>l r'" using r proof induct case (Varthen F:" t by rulelemma5 from\< by cases simp_all withthenhave"\\<^sub>\\<^sup>* t'" by (rule lemma2_2)
duct case Nil show ?caseby (rule listrelp.Nil) next case (Cons x y xs ys) hence" t' havehave t\\<^sub>s t'" by (rule rtrancl_beta_sred) thus ? by(rulelistrelp) qed thus next case (Abs r r' ss ss') from\<open>NF (Abs r' \<degree>\<degree> ss')\<close> have ss': "ss' = []" by (rule Abs_NF) from Abs(3) have ss: "ss = []"using ss' by cases simp_all from ss' Abs have "NF (Abs r')" by simp hence"NF r'"by cases simp_all with Abs have"r \\<^sub>l r'" by simp hence"Abs r \\<^sub>l Abs r'" by (rule lred.Abs) with ss ss' show ?case by simp next case (Beta r s ss t) hence"r[s/0] \\ ss \\<^sub>l t" by simp thus ?caseby (rule lred.Beta) qed
lemma WN_eq: "WN t = (\t'. t \\<^sub>\\<^sup>* t' \ NF t')" proof assume"WN t" thenhave"\t'. t \\<^sub>l t'" by (rule lemma6) thenobtain t' where t': "t \\<^sub>l t'" .. thenhave NF: "NF t'"by (rule lemma5) from t' have "t \\<^sub>s t'" by (rule lred_imp_sred) thenhave"t \\<^sub>\\<^sup>* t'" by (rule lemma2_2) with NF show"\t'. t \\<^sub>\\<^sup>* t' \ NF t'" by iprover next assume"\t'. t \\<^sub>\\<^sup>* t' \ NF t'" thenobtain t' where t': "t \\<^sub>\\<^sup>* t'" and NF: "NF t'" by iprover from t' have "t \\<^sub>s t'" by (rule rtrancl_beta_sred) thenhave"t \\<^sub>l t'" using NF by (rule lemma7) thenshow"WN t"by (rule lemma5) qed
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.