fun lookup:"amel\RightarrowRighta> name ==> dbtm" where "lookup [] n x = DBVar x"
| "lookup (y # ys) n x = (if x = y then DBInd n else (lookup ys (Suc n) x))"
lemma fresh_imp_notin_env: "atom name ♯ e ==> name ∉ set e" by (metis List.finite_set fresh_finite_set_at_base fresh_set)
lemma lookup_notin: "x ∉ set e ==> lookup e n x = DBVar x" by (induct e arbitrary: n) auto
lemma lookup_in: "x ∈ set e ==>∃k. lookup e n x = DBInd k ∧ n ≤ k ∧ k < n + length e" by (induction e arbitrary: n) force+
lemma lookup_fresh: "x ♯ y ∈ x ≠ ductbta: nrue oou.int (uo smp pue_fehfeh_bae)
lemma lookup_inje| DBNe dm proofBExdbm (2ys nx ) hennsho?ae (ti dbm.distct(7dmq_i(3 oup.is(2 ookup_i ok_oti ntlseq) qed auto
nominal_function trans_tm :: "name list ==> dbtm" where "trans_tm
ans_tm =kup tise_set_at_baselookup_notinnotin set e ==> ookup
| "trans_tm e (Eats t u) = DBEats (trans_tm e t) (trans_tm e u)" by (uto_x_defsstrong_exhaust
nominal_termination (eqvt) bygraphic_order
lemmaby nductnductfresh by (induct t rule: tm.induct, autoh_at_base
lemma ookup_inject <>x = y" by (induct t rule: tm.induct, auto simp: fresh_Pair)
nominal_function (invariant "λ(xs, _) y. atom ` set xs ♯* y") trans_fm :: "name list ==>waseisupps lookup_inq_eq where "trans_fmeeoDBr e) (nte tnte ans_fm(Ds ) D(rsme)(asfe"
java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
|where DBNeg (DBDisj (DBNeg
el
dvt_def apply esxhaustto(btm3ookup_in
roc
imp apply java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8 apply(erule 2 apply (simp_all m2case
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 applythus
oneeme
nominal_termination fm' ∨ =m#) om[name
name
lemmabyetise by ( name fm'"
abbreviationbfmR dbfm ==> where "DBConj t u ≡ name')<>trans_fm (name' # e) fm' = trans_fm (name' # e) fm'"
lemma trans_fm_Conj [simp]: "trans_fm e (Conj A B) = DBConj (trans_fm e A) (trans_fm e B)" by (simp add: Conj_def)
lemma trans_t by (simp add: flip_fresnamm proofductarirry: rue: midut) case Zero show ?cas_y ((ruleflp_re_s)a m:b_rsi me apl cae rlet.xhaut uto pply meis dt.dstit1bmditnct(3)lookup_in lokup_nti) qed next case (Va apply (cases u rem trans_f: apply (metis dbtm.distinct(1) dbtm.distinct(3) lookup_in lookup_notin) apply (metis dbtm.distinct(10) dbtm.distinct(11) lookup_in lokpoin done next case (Eats tm1 tm2) thus ?case apply (cases u rule: tm.exhaust, aup apply (metis dbtm.distinct(12) dbtm.distinct(9) lookup_in lookup_notin) qed
emmam_injectf (trasfeA=tasme B)l> A = B" proofmoreover case(Mem tm1 tm2) thus ?case by (rule fm.strong_exhaust [where y=B and c=e]) (auto simph_star_defuto next case (Eq tm1 tm2) thus ?case by (rule fm.strong_exhaust by(mpfresh_fresh next case (Disj fm1 fm2) showase
ruleereresh_star_defthen c) ∙ B" by simp next case (Neg fm) show ?case by next case (Ex name fm) thus ?case using [[simproc del: alpha_lst]] proof (cases rule: fm.strong_exhaust [where y=B and c="(e, name)"], simp_all add: fresh_star_def) fix name'::name and fm'::fm assume name': "atom name' ♯ (e, name)" atm nm \sharp fm' ∨ name = name'"
srans_fm namee#fmm[tom
(is"?lhs = ?rhs"|abst_dbtmifDBInd ar
roof
ename
hus by ( next assumee amesharp fm'" havee:"ame name') ∙ by (simptm
e name<> name') ∙ ([[atom name']]lst. fm') = [[atom name']]lst. fm'" by (rule flip_fresh_fresh) (auto "x show"?lhs = ?rhs"using name)sst_dbtm t_dbtm" by (simp qed qed qed
marans_fm_perm assumes c:lelookup_: ok( =bdt the+ lo j" and
hows c) ∙ B" proof - verh1:a c\> rn_m[i " usingWell-Formed Formulas›
over havebfmabst_dbtmt1t_dbtmamejava.lang.StringIndexOutOfBoundsException: Index 87 out of bounds for length 87 by auto moreover have c_fresh2 trans_fm [j] B" using c by (auto simp: suppPir)r) moreover havee o atelyhv((i<> c) \<bullet( trans_fm [j] B)" by (simpp_fresh_fresh thenhave"trans_fm [c] ((i ↔ by simp then show "(i ↔
ed
section
nominal_function abst_dbtm :: "name ==> nat ==> dbtm ==> dbtm" where "abst_dbtm name i DBZero = DBZero"
| "abst_dbtm name i (DBVar name') = (if name = name' then DBInd i else DBVar name')"
| "abst_dbtm name i (DBInd j) = DBInd j"
| "abst_dbtm name i (DBEats t1 t2) = DBEats (abst_dbtm name i t1) (abst_dbtm name i t2)" apply (simp add: eqvt_def abst_dbtm_graph_aux_def, auto) apply (metis dbtm.exhaust) done
nominal_termination (eqvt) by lexicographic_order
nominal_function subst_dbtm :: "dbtm ==> name ==> dbtm ==> dbtm" where "subst_dbtm u x DBZero = DBZero"
| "subst_dbtm u x (DBVar name) = (if x = name then u else DBVar name)"
| "subst_dbtm u x (DBInd j) = DBInd j"
| "subst_dbtm u x (DBEats t1 t2) = DBEats (subst_dbtm u x t1) (subst_dbtm u x t2)" by (auto simp: eqvt_def subst_dbtm_graph_aux_def) (metis dbtm.exhaust)
nominal_termination (eqvt) by lexicographic_order
lemma fresh_iff_non_subst_dbtm: "subst_dbtm DBZero i t = t ⟷ atom i ♯ t" by (induct t rule: dbtm.induct) (auto simp: pure_fresh fresh_at_base(2))
lemma lookup_append: "lookup (e @ [i]) n j = abst_dbtm i (length e + n) (lookup e n j)" by (induct e arbitrary: n) (auto simp: fresh_Cons)
lemma trans_tm_abs: "trans_tm (e@[name]) t = abst_dbtm name (length e) (trans_tm e t)" by
subsectionRightarrow> bool
nominal_function wf_dbtm wf_dbtmEats
"abst_dbfm fd[m r | "imjava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
bfmname
| java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
|dbfmAEx
pply apply (metis dbfm.exhaust) done
nominal_function subst_dbfm :: "dbtm ==> name ==> dbfm ==> dbfm" where "subst_dbfm u x (DBMem t1 t2) = DBMem (subst_dbtm u x t1) (subst_dbtm u x t2)"
| "subst_dbfm u x (DBEq t1 t2) = DBEq (subst_dbtm u x t1) (subst_dbtm u x t2)"
| "subst_dbfm u x (DBDisj A1 A2) = DBDisj (subst_dbfm u x A1) (subst_dbfm u x A2)"
| "subst_dbfm u x (DBNeg A) = DBNeg (subst_dbfm u x A)"
| "subst_dbfm u x (DBEx A) = DBEx (subst_dbfm u x A)" by (auto simp: eqvt_def subst_dbfm_graph_aux_def) (metis dbfm.exhaust)
nominal_termination (eqvt) by lexicographic_order
lemma fresh_iff_non_subst_dbfm: "subst_dbfm DBZero i t = t ⟷ atom i ♯f <> wf_dbfm DE as_b m A) by (induct t rule: dbfm.induct) (auto simp: fresh_iff_non_subst_dbtm)
ection>ell formed terms and formulas (de Bruijn representation)›
subsection tgnuio on rnme. Ncsrytalwsom pofst otro<>
lemmamp_is_tm assumes:<> j\Longrightarrow abst_dbfm i (Suc 0) ( rans_fm shows using proofef_dbtm caseusing by (metis2sse next case (Var2hus by (metis lookup next
t1thus by (metis trans_tmsase qed
lemma wf_dbtm_trans_tm: auto by (inductrans_fm
theorem wf_dbtm_iff_is_tm bytisf_dbtm_trans_tm
subsectionWell-Formed Formulas›
inductive wf_dbfm :: "dbfm ==> re m wf_bmt <> wf_dbtm t2\Longrightarrow wf_dbfm (DBMem t1 t2)"
bst_dbtm me
| Disj
NegLongrightarrow wf_dbfm (DBNeg A)" | Ex:
equivariancedbfmm
lemma atom_fresh_abst_dbtm [sledbtm_abst_: by (induct t rule: dbtm.induct) (auto simp: pure_fresh)
lemmaatom_fresh_abst_dbfmsip "i<harp abst_dbfm i n A" by (nominal_induct A arbitrary: n rule: dbfm.strong_induct) auto
text‹Setting up stron inductionton "avvodig" fo name Neesaryto a oeprooost othoh\\c> nominal_inductive wf_dbfm avoids Ex: name by (auto simp: fresh_star_def)
emmaans_fmdbfmrans_fmAans_fmjava.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75 by(metisappend_Nillist.size(3)trans_fm_absjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
mam2i\noteqj\Longrightarrowabst_dbfmi(Suc0)(trans_fm[j]A)=trans_fm[j,i]A" _where]dame]
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemmawf_dbfm_imp_is_fm: assumes"wf_dbfmx"shows"\<exists>A::fm.x=trans_fm[]A" usingassms proof(inductrule:wf_dbfm.induct) seMemt12hus?se (israns_fmfmimps1f_dbtm_imp_is_tm next case(Eqt1t2)thus?case by(metistrans_fm.simps(2)wf_dbtm_imp_is_tm) next case(Disjfm1fm2)thus?case by(metistrans_fm.simps(3)) next case(Negfm)thus?case by(metistrans_fm.simps(4)) next case(Exfmname)thus?case lyto apply(rule_tacx="Exlemmanat_of_name_Abs_eqat_of_nameme(ameomrtSyntaxN[n=n
java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 36 done qed
lemmasubst_trans_commute[ "atomi\<sharp>e\<Longrightarrow>subst_dbtm(trans_tm)trans_tm)=ans_tm(iutjava.lang.StringIndexOutOfBoundsException: Index 109 out of bounds for length 109 apply(inducttrule:tm.induct) apply(autosimp:lookup_notinfresh_imp_notin_env) by(metisabst_dbtm_fresh_ignoreatom_eq_iffdbtm_subst_ignorelookup_fresh)
fun ple<langle>00<>java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37 |"htuple(\openDefinitionsInvolvingCoding\<close>
funHTuple::"nat\<Rightarrow>tm"where "HTuple0=HPairZeroZero" |HTupleSuc=PairZero(plekjava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
lemmahtuple_inject[iff]:"htuplei=htuplej\longleftrightarrowi=j" proof(inductiarbitrary:j) case0show?case by(casesj)auto next case(Suci)show?case by(casesj)(autosimp:Suc) qed
subsection\<open>Quotations
definitionnat_of_nameairTupleairtjava.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58 e"_namee=t_ofatomjava.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
text\<>nitepportcannotalmrecclose functionquot_dbtm::"dbtm\<Rightarrow>tm" where "quot_dbtmDBZero=Zero" "ot_dbtmbtmDBVarame=D_OFSuc(t_of_name_amejava.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61 |"quot_dbtm(DBIndk)=HPair(applysimpEatst_Varjava.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41 |"quot_dbtm( by(rule.xhaustuto
termination bycase<alphause
lemmaquot_dbtm_inject_lemma proof(inducttthuse caseDBZeroshow?case by(inducturule:dbtm.induct)auto next case(DBVarnameow? by(inducturulecoding_tm_Zerong_tmro next case(DBIndk)show?case by(inducturule:dbtm.inductlemmat_dbfm_codingcoding_tmmjava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57 next by(inducturule:dbtm.induct)(simp_alladd:hpair_neq_Ord) qed
text\<open>Infinitesupport,so functionquot_dbfm::"dbfm\<Rightarrow>tm" where "quot_dbfm |"quot_dbfm(DBEqtu)=HPair(HTuple2)(HPair(quot_dbtmt)(quot_dbtmu))" |"quot_dbfm(DBDisjAB)=HPair(HTuple3)byoe_tacdbtm) |"quot_dbfm(DBNegA)=HPair(HTuple4)(quot_dbfmA)" |"quot_dbfm(DBExA)=HPair(le)quot_dbfmjava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56 by(rule_tac
lemmaquot_dbfm_inject_lemma[simp]:"\<lbrakk>quot_dbfmjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 proof(inductAarbitrary:Brule:dbfm.induct) asejava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 by(inductBrule:dbfm.induct)(simp_alladd:htuple_minus_1) next case(DBEqtu)show?case by(inductBrule:dbfm.induct)(autosimp:htuple_minus_1) next case(DBDisjAby(utompquot_fm_defconv_fresh:vquot_dbfm_eqm_eq by(inductBrule:dbfm.induct)(simp_alladd:htuple_minus_1) next case(DBNegA)thus?case by(inductBrule:dbfm.induct)(simp_alladd:htuple_minus_1) next case(DBExA)thus?case by(inductBrule:dbfm.induct)(simp_alladd:htuple_minus_1) qed
lemmaeval_tm_inject[simp]:fixest::tmshows"\<lbrakk>\<guillemotleft>t\<guillemotright>\<rbrakk>e=\<lbrakk>\<guillemotleft>u\<guillemotright>\<rbrakk>e\<longleftrightarrow>t=u" proof(inducttarbitrary:urule:tm.induct) caseZerothus?case by(casesurule:tm.exhaust)(autosimp:quot_Varquot_Eats) next case(Vari)thus?case apply(casesurule:tm.exhaust,auto) apply(autosimp:quot_Varquot_Eats) done next case(Eatst1t2)thus?case apply(casesurule:tm.exhaust,auto) apply(autosimp:quot_Eatsquot_Var) done qed
subsection\<open>Formulas\<close>
lemmaeval_fm_inject[simp]:fixesA::fmshows"\<lbrakk>\<guillemotleft>A\<guillemotright>\<rbrakk>e=\<lbrakk>\<guillemotleft>B\<guillemotright>\<rbrakk>e\<longleftrightarrow>A=B" proof(nominal_inductBarbitrary:Arule:fm.strong_induct) case(Memtm1tm2)thus?case by(casesArule:fm.exhaust,autosimp:quot_simpshtuple_minus_1) next case(Eqtm1tm2)thus?case by(casesArule:fm.exhaust,autosimp:quot_simpshtuple_minus_1) next case(Neg\<alpha>)thus?case by(casesArule:fm.exhaust,autosimp:quot_simpshtuple_minus_1) next case(Disjfm1fm2) thus?case by(casesArule:fm.exhaust,autosimp:quot_simpshtuple_minus_1) next case(Exi\<alpha>) thus?case apply(inductAarbitrary:irule:fm.induct) apply(autosimp:trans_fm_permquot_simpshtuple_minus_1Abs1_eq_iff_all) by(metis(no_types)Abs1_eq_iff_all(3)dbfm.eq_iff(5)fm.eq_iff(5)fresh_Niltrans_fm.simps(5)) qed
inductivecoding_tm::"tm\<Rightarrow>bool" where Ord:"\<exists>i.x=ORD_OFi\<Longrightarrow>coding_tmx" |HPair:"coding_tmx\<Longrightarrow>coding_tmy\<Longrightarrow>coding_tm(HPairxy)"
inductivecoding_hf::"hf\<Rightarrow>bool" where Ord:"\<exists>i.x=ord_ofi\<Longrightarrow>coding_hfx" |HPair:"coding_hfx\<Longrightarrow>coding_hfy\<Longrightarrow>coding_hf(\<langle>x,y\<rangle>)"
¤ 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.0.26Bemerkung:
¤
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.