lemma finite_finite_prefix: assumes‹Finite xs = t ⌢ Finite ys› obtains zs where‹t = Finite zs› using assms by (cases ‹t›) (simp_all)
lemma append_is_empty: assumes‹t ⌢ u = ε› shows‹t = ε› and‹u = ε› using assms by (simp add: ε_def; cases ‹t›; cases ‹u›; simp)+
fun ttake :: ‹nat ==> 'a trace ==> 'a finite_trace›where ‹ttake k (Finite xs) = take k xs›
| ‹ttake k (Infinite xs) = map xs [0..<k] ›
definition itdrop :: ‹nat ==> 'a infinite_trace ==> 'a infinite_trace›where ‹itdrop k xs = (λi. xs (i + k))›
lemma itdrop_itdrop[simp]: ‹itdrop i (itdrop j x) = itdrop (i + j) x› by (simp add: itdrop_def add.commute add.left_commute)
lemma itdrop_zero[simp]: ‹itdrop 0 x = x› by (simp add: itdrop_def)
fun tdrop :: ‹nat ==> 'a trace ==> 'a trace›where ‹tdrop k (Finite xs) = Finite (drop k xs)›
| ‹tdrop k (Infinite xs) = Infinite (itdrop k xs) ›
lemma ttake_simp[simp]: ‹ttake (length xs) (Finite xs ⌢ t) = xs› by (cases ‹t›, auto intro: list_eq_iff_nth_eq[THEN iffD2])
lemma ttake_tdrop[simp]: ‹Finite (ttake k t) ⌢ tdrop k t = t› by (cases ‹t›, auto simp: itdrop_def)
definition prefixes :: ‹'a trace ==> 'a trace set› (‹↓ _› [80] 80) where ‹↓ t = { u | u v. t = u ⌢ v }›
definition extensions :: ‹'a trace ==> 'a trace set› (‹↑ _› [80] 80) where ‹↑ t = { t ⌢ u | u. True }›
lemma prefixes_extensions: ‹t ∈↓ u ⟷ u ∈↑ t› unfolding prefixes_def extensions_def by simp
interpretation prefixes: order ‹λ t u. t ∈↓ u›‹λ t u. t ∈↓ u ∧ t ≠ u› proof (* Reflexivity *) fix x :: ‹'a trace› show‹x ∈↓ x› unfolding prefixes_def by (simp, metis trace.right_neutral) next (* Strict Ordering *) fix x y :: ‹'a trace› show‹(x ∈↓ y ∧ x ≠ y) = (x ∈↓ y ∧¬ y ∈↓ x)› unfolding prefixes_def by (simp, metis append.simps(3) append_is_empty(1) finite_empty_suffix
trace.assoc trace.exhaust) next (* Antisymmetry *) fix x y :: ‹'a trace› assume assms: ‹x ∈↓ y›‹y ∈↓ x› show‹x = y› proof (cases ‹y›) case Finite note yfinite = this show‹?thesis› proof (cases ‹x›) case Finite with assms(2) obtain z where‹x = y ⌢ z› unfolding prefixes_def by auto with assms(1) yfinite show‹?thesis› unfolding prefixes_def by (force simp: trace.assoc dest: finite_empty_suffix append_is_empty) qed (smt (verit, del_insts) CollectD append.simps(3) assms(1) prefixes_def) qed (smt (verit, del_insts) CollectD append.simps(3) assms(2) prefixes_def) next (* Transitivity *) fix x y z :: ‹'a trace› assume‹x ∈↓ y›‹y ∈↓ z› thenshow‹x ∈↓ z› unfolding prefixes_def by (force simp: trace.assoc) qed
lemma prefixes_empty_least : ‹ε ∈↓ t› by (simp add: prefixes_def)
lemma prefixes_infinite_greatest : ‹Infinite x ∈↓ t ==> t = Infinite x› by (simp add: prefixes_def)
lemma ttake_take : ‹take n (ttake m t) = ttake (min n m) t› by (cases ‹t›) (simp_all add: min_def take_map)
lemma tdrop_tdrop : ‹tdrop n (tdrop m t) = tdrop (n + m) t› by (cases ‹t›) (simp_all add: add.commute add.left_commute)
lemma tdrop_mono: ‹t ∈↓ u ==> tdrop k t ∈↓ tdrop k u› proof -
{ fix v assume A: ‹u = t ⌢ v›thenhave‹∃va. tdrop k (t ⌢ v) = tdrop k t ⌢ va › proof (cases ‹t›; cases ‹v›) fix x1 x2 assume‹t = Finite x1›and‹v = Finite x2›with A show‹?thesis› by (simp, metis Traces.append.simps(2)) next fix x1 x2 assume‹t = Finite x1›and‹v = Infinite x2›with A have‹tdrop k (t ⌢ v) = tdrop k t ⌢ Infinite (itdrop (k - length x1) x2) › apply simp apply (rule ext) apply clarsimp apply (rule conjI) apply (simp add: add.commute itdrop_def less_diff_conv) by (smt (z3) add.commute add_diff_cancel_left' add_diff_inverse_nat diff_is_0_eq'
diff_right_commute itdrop_def linorder_not_less nat_less_le) thenshow‹∃va. tdrop k (t ⌢ v) = tdrop k t ⌢ va› by auto qed auto } note A = this assumeme ‹↓ u›w A show ?thesis prefixes_def clarsimp qed
lemma ttake_finite_prefixes : ‹ xs = ttake (length xs) t›
ruleffISigma showFinite xs ∈↓ t ==> xs=ttake> by (clarsimp simp: prefixes_def ' finite_trace>a list› next show‹↓ unfoldingprefixes_defusingttake_tdrop by(metis(full_types)mem_Collect_eq) qed
lemmaprefix_closure_infinite:\<open>Infinitex\<in>\<down>\<^sub>sX\<longleftrightarrow>Infinitex\<in>X\<close> proof assume\<open>Infinitex\<in>\<down>\<^sub>sX<>thenw<>Infinitefinitee<>\<close by(metisUN_Eprefix_closure_defxes_infinite_greatest next sume<openInfinitex\<inX\<close>thenshow\<open>Infinitex\<in>\<down>\<^sub>sX\<close> eson_onorefix_closure_subsetx_closure_subset_ubsetset qed
lemmaprefix_closure_Union_distrib:\<openshow\<open>x\<in<>zclosejava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44 unfoldingprefix_closure_def bysimp
lemmaprefix_closure_dprefixes:\<open>\<down>\<^sub>s(\<down>\<^sub>dX)\<subseteq>\<down><sub>> ngrefixes_are_prefixesprefixesprefix_closure_idemprefix_closure_mono t
lemmadprefixes_idem:\<open>\<down>\<^sub>d\<down>\<^sub>dX=\<down>\<^sub>dX\<close>
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 show\<open>\<down> usingprefix_closure_dprefixes by(forcesimp:dprefixes_def) next show\<>\<down>\<^sub>d\<open<>=|<frown>}<> usingextensions.order.transprefix_closure_subset y(cepprefixes_def qed
\open>nfinite\in\down>\<^sub>dX\<longleftrightarrow>Infinitex\<in>X\<close> proof show\<open>Infinite\<X\<Longrightarrow>Infinitex\<in>\<down>\<^sub>dX\<close> unfoldinges_def usingprefix_closure_subsetbyfastforce next show\<open> unfoldingdprefixes_def by(clarsimpsimp:prefix_closure_infinite) qed
arefixes_UNIV<><down><^subdUNIV=UNIV\<close> unfoldingdprefixes_def using
lemmadefinitive_elemIjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 assumes\<opennfinitivetivejava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 shows\pent\<in>Xclose> usingassms by(autosimpadd:definitive_defrefixes_def
lift_definitioner_dset<pen>setset<ightarrow>'adset\<close>(\<open>\<Sqinter>\<close>)is\<open>\<lambda>ss.\<Inter>ss\<close> by(pd_java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
lift_definitionsubset_dset::\<open>'adset\<Rightarrow>'adset\<Rightarrow>bool\<close>(infix\<open>\<sqsubseteq>\<close>50)is\<open>(\<subseteq>)\<close>
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lift_definitionstrict_subset_cset::\<open>'adset\<Rightarrow'asett\>bool\<close>(infix\<open ne
interpretationdset:complete_lattice\<open>\<\<close>\<open>\<Squnion>\<close>\<open>(\<sqinter>)\<close>\<open>(\<sqsubseteq<>>(\<sqsubset\\<open>(\<squnion>)\<close>\<open>\<emptyset>\<close>\<open><>\\<close> proofold_localesr X:<>aracesetlosessume<open>definitive<><>definitiveY\<closedefinitiveZ\<close> thenshow\<open>Y\<subseteq>X\<Longrightarrow>Z\<subseteq>X\<Longrightarrow>(Y\<union>\<^sub>)<X\<close> metisdUnion_defUnion_least_definitive_east_definitivest_definitivedefinitivesert_iffrt_iffngletonDonD next fixA::\<open>'atracesetset\<>andZ::\<open>'aracecet<lose> assume\<open<>\inA.definitiveX\<close>\<open>definitiveZ\<close>\<open>(\<And>X.definitiveLongrightarrowX\<in>A\<Longrightarrow>X\<\<>n<ion<subX=\<down>\<^sub>d\<Union>X\<close> thenshow\<open>\<Union>\<^sub>dA\<subseteq>Z\<close> byadddUnion_def_dUnion_least_definitive qed(autosimp:dUnion_contains_definitivecontains_definitiveins_definitivejava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
definitioninfinitesapply(arsimppst!:subset_transprepend'prefix_closurejava.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74 \<open>infinitesX=(\<Union>x\<in>X.casexofFinitexs\<Rightarrow>{}|Infinitexs\<Rightarrow>{xs})\<close>
lemmainfinites_alt:\<open>Infinite`infinitesA=A\<inter>rangeInfinite\<close> unfoldingset_eq_iffproof fixx{assume\<open>(bympdefinitive_Inter by(clarsimpsimp:infinites_defsplit!:trace.split_asm) }moreover{assume\<open>x\<in>A<>rangeInfiniteclose>hence\<open>(x\<in>Infinite`infinitesA)\<close> by(forcesimp:infinites_defsplit!:trace.splitintro!:imageI) ultimatelyshow\<open>(x\<in>Infinite`infinitesA)=(x\<in>A\<inter>angegenfinite<lose> byblast qed
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 by(cases\<open>t\<close>;auto)
lemmainfinites_UNIV[simp]:\<open>infinitesjava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0 by(autosimp:infinites_defsplit:trace.split)
lemmainfinites_dprefixes_Infinite:\<open>infinites(\<down>\<^sub>dInfinite`X)=X\<close> proof <>infinites(\<down>\<^ unfoldinginfinites_def usingby(terIdistinctraceaustraceject) by(forcesplit:trace.split_asmsimp:dprefixes_defprefix_closure_def) next \open>X\subseteqinfinites(\<down>\<^sub>dInfinite`X)\<close> by(forcesimp:infinites_defdprefixes_defprefix_closure_defsplit:trace.split) qed
lemmatrace_uncons_cases[case_names assumes\<open>\<And>\<sigma>t.=singleton<igma<frown>t\<Longrightarrow>P\<close> and\<open>x=\<epsilon>\<Longrightarrow>P\<close> shows\<open>P\<close> roof<>x\<osee) case(Finitexs) thenshowjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by(casesblast forcesimp:assms(2)[simplified\<er intro:sms)ret=open>Finitets\<close>forts, simplifiedsingleton_defappend.simpsList.append.simps]) next (finite)noteeAhis have\<open>f=(\<lambda>n.ifn=0then[f0]!nelse(f\<circ>Suc)(n-length[f0]))\<close> by(ruleext,simp) withAshow\<open>?thesis\<close> usingassms(1)[where\<sigma>=>0\<close>andt=\<open>Infinite(f\<circ>Suc)\<close>, simplifiedsingleton_defappend.simps,simplified] bysimp qed
lemmaprepend'_prefix_closure:\<open>\<down>\<^sub>s(prepend'X)\<subseteq>prepend'(\<down>\<^sub>sX)\<close> proof(rulesubsetI) fixx assumeA:\<open>java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 <pen>x\<in>prepend'(\<down>\<^sub>sX)\<close> proof(cases\<open>x\<close>rule:trace_uncons_cases) case(Cons\<sigma>t) withAshow\<open>?thesis\<close> unfoldingprefix_closure_defprepend'_defprefixes_def by(fastforcesimp:trace.assoc) next caseNil withAshow\<open>?thesis\<close> unfoldingprefix_closure_defprepend'_def by(forcesimp:prefixes_empty_least) qed qed
lemmaprepend'_dprefixes: assumes\<open>definitiveX\<close> shows\<open>\<down>\<^sub>dprepend'X=prepend'X\<close> proof show\<open>\<down>\<^sub>dprepend'X\<subseteq>prepend'X\<close> proof(rulesubsetI) fixxassumeA:\<open>x\<in>\<down>\<^sub>dprepend'X\<close>show\<open>x\<in>prepend'X\<close> proof(cases\<open>x\<close>rule:trace_uncons_cases) case(Cons\<sigma>t) withAshow\<open>?thesis\<close> unfoldingdprefixes_def apply(substassms[simplifieddefinitive_def,THENsym]) apply(clarsimpdest!:subset_trans[OF_prepend'_prefix_closure]) usingappend_prefixes_left by(forcesimp:dprefixes_defprepend'_defprefix_closure_defsubset_iff prefixes_extensions[THENsym]) next caseNil withAshow\<open>?thesis\<close> apply(substassms[simplifieddefinitive_def,THENsym]) apply(clarsimpsimp:prefixes_empty_leastprefixes_defdprefixes_def prepend'_defprefix_closure_defsubset_iff prefixes_extensions[THENsym]) by(metistdrop_singleton_appendtdrop_zerotrace.assoc) qed qed next show\<open>prepend'X\<subseteq>\<down>\<^sub>dprepend'X\<close> proof(rulesubsetI) fixxassumeA:\<open>x\<in>prepend'X\<close>show\<open>x\<in>\<down>\<^sub>dprepend'X\<close> proof(cases\<open>x\<close>rule:trace_uncons_cases) case(Cons\<sigma>t) withAshow\<open>?thesis\<close> by(clarsimpsimp:dprefixes_defprefixes_defprepend'_def prefix_closure_defprefixes_extensions[THENsym]) (metis(mono_tags,lifting)assmsdefinitive_contains_extensions mem_Collect_eqprefixes_defprefixes_extensionssubset_eq tdrop_singleton_appendtdrop_zerotrace.assoc) next caseNil withAshow\<open>?thesis\<close> usingassmsdefinitive_contains_extensions by(forcesimp:dprefixes_defprepend'_defprefix_closure_def) qed qed 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.0.47Bemerkung:
¤
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.