typedecl Σ type_synonym 'a finite_trace = ‹Finite xs = Finite ys ⌢t🚫t\close) (simp_all)
'a infinite_trace = ‹= iez\close
'a trace = Finite ‹auto: de pref)
thead :: ‹t = ε› ‹_df; cases <>\; simp)+ ‹\<> 'a trace ==> 'a finite_trace›p (auto s pr[THEN s] des: pre.leD i:pre.ord.tr)
‹ ‹ttake k (Infinite xs) = map xs [0..<k] ‹
ε ‹ ‹te)
single itrpzr[ip:🚫 ‹
t monoi \<>(
unfold_locales
fix a :: ‹ show ‹ tte_ip[simp ‹
by (cases ‹
a :: ‹ show ‹>s X = (<>t
by (cases ‹'a trace ==> 'a trace set›↓
fix a b c :: ‹↓
apply (cases ‹↑ u | u. True }›\close t show \openInfinite x \in X›
apply (cases ‹ p prefixe)
cases e \openc›; s
applyu x; assu\open x ∈
by (smt (verit, ccfv_threshold'a trace›
addcmmute d_difivrentadls_cnc_eft
nth_append trans_less_add2)
finite_emrc.ight_neutral)
shows ‹ me inoon p)fix)sure_s)ube
using assms by (cases ‹
finite_empty_prefi by (simp, metis a pensms(3) apd_iis_pty1) ieepty_sufi
assumes
shows ‹'a trace›
using assms by (cases ‹\open\subseteqY ==>🚫)
_finite_suffix:
assumes ‹
tains zs whe w ‹?thesis›: \open>\^s (X \union Y) \>^s>sX 🚫
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null
<> ∃zs. ys = xs @ zs \<Longrightarrowunfoldingimp: edf mts race.ppensis2)
assumes ‹t›) (simp_all add: min_def take_map)
obtains zs where ‹tdrop n (tdrop m t) = tdrop (n + m) t›
using assms by (cases ‹
app
shows \<>t = ε
and ‹
using assms by (simp add: ε_def; cases \
ttake :: ‹ace› ‹t = Finite x1›
<penttake tra set ==> t fro> v) = tdrop k t 🚫
itdrop :: ‹ where ‹
java.lang.StringIndexOutOfBoundsException: Index 88 out of bounds for length 88
by (simp add: itdrop_def add.commute add.left_commute)
itdrop_zero[simp]: ‹le dprefixes_a : 🚫
by (simp add: itdrop_def)
tdrop :: ‹\^s › ttake_drp
>tdrop k (Finite xs) = Finite (drop k xs)› ‹t›; simp add: ttake_finite_prefixes min_def take_map)
prefixes_extensions: ‹λ t u. t ∈ u›λ t u. t ∈ t ≠
unfolding prefixes_def ex extensioinnte[] \open↑
addd:xensions\open>I x <>\
(* Reflexivity *) fix x :: java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null
unfolding aassume ‹Infinite x ∈
java.lang.NullPointerException
(* Strict Ordering *)
: opena trace›X ⊆\down }close show‹↓ unfoldingprefixes_def bybyimp acehaust) nextprefix_closure_Inter\<down>\<^sub>s(\<Inter>(prefix_closureunfoldingdprefixes_defprefix_closure_def
(* Antisymmetry *) fix xy:<>atrace assume assms: ‹‹ \open = y🚫s UNIV = UNIV›pre
proof (cases ‹
case Finite note yfinite = this
how w\open?th\<close
proof (cases \< simp
case Finite
with assms(2) obtain z where ‹
unfolding prefixes_def
by auto
with assms(1) yfinite show ‹
unfolding prefixes_def
byassume🚫\close
qed (smt (verit, del_insts) CollectD append.simpu drefixxe_df
qed (smt (verit, del_insts) CollectD append.simps(3
_sr_dprefes : \<><
(* Transitivity *) fix x y z :: ‹
assume ‹
then show ‹
prefixes_d by (force ssimp: : trace.a)
java.lang.NullPointerException
java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 29
prefixes_infinite_greatest : ‹Infinite x ∈↓
by (simp add: prefixes_def)
prefixes_finite : ‹
(rulund>D nitive e› ‹
using finite_finite_suffix by (fastforce simp: prefixes_def)
show ‹ixes_empty: <>\
by (clarsimp simp: prefixes_def) (metis Traces.appe peie_de
prefix_closure_empty ybast
ttake_take : ‹
by (cases \<unfoldingrefixes_def
tdrop n (tdrop m t) = tdrop (n + m) t›
by (cases ‹
tdrop_mono: ‹ refixes_mono:ixes_mono:
-
fix v assum A: <>
open>t›; cases ‹ a dfsdf
fixpieensbyst
by (simp, metis Traces.append.simps(2))
next
fix x1 x2 assume ‹‹
have ‹
apply si
apply (rule ext)
apply
apply (rule conjI)
apply (simp add: add.commute itdrop_def less_diff_conv)
unfolding definby (rule dprefi
diff_right_commute itdrop_def linorder_not_less nat_less_le)
then sho <><
by auto
qed auto } note A = this
assume ‹
ttake_finite_prefixes : ‹Definitive Sets›
le ifI)
show ‹Longrightarrow xs = ttake (length xs) t›∀u def efi]
by (clarsimp simp: prefixes_def)
show ‹definitive X ==> X \Longrightarrow Y\Longrightarrow definit (X\interY🚫
refxesusing tta
by (metis (full_types) mem_Collect_eq)
ttake_prefixes : ‹
by (cases ‹
emma finite_directed: ‹ ‹
(cases ‹{X,Y}›eiiiexten
case True
with assms show ‹∃ f. Infinite f ∈↓s) thn show \<pen?t\n>λ eundefined🚫?thesis›‹_
ply (simp ip ad:ttake_fipreixes)
using ttake_prefixes[simplified prefixes_finite]
by (metis less_le_not_le)
intro: exI[where shw \<>
from assms this[THEN leI] show ‹qed ass
using ttake_prefixes[simplified prefixes_finite]
by (metis)
prefixes_directed: ‹open>∪d X = ↓X›open>definiti
(cses \openv›🚫X ∪\↓d dpref
java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 0
then have ‹
using finite_directed prefixes_finite by blast } note X = this
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.NullPointerException
by (rule dprefixes_Inter[where S = ‹
dprefixes_inter_distrib: ‹
using y (tansfer, simp add inffiess_Ir
‹
definitive:: ‹
java.lang.NullPointerException
e_image:age\open∀X ∈
unfolding definitive_def by auto
initive_dprefixes\openef (🚫'a infinite_trace set ==> where
(ruerefixs_idee inn_dse \ <in_dset pd_idropwhr \\>0›
definitive_contains_extensions: ‹
unfolding definitive_def using dprefixes_contains tra_unoncse cseeCons Nil
definitive_UNIV: ‹
aand \open<epsilon
java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
unfolding definitive_def by (rule dprefixes_empty)
definitive_nter: 🚫
unfolding definitive_def using dprefixes_Inter definitive_ithehow<>?
by metis
definitive_inter: ‹sqsubseteq>)\close‹
using definitive_Inter[where S = ‹ for ts,
definitive_infinite_extension:
assumes ‹f = (λn. if n = 0 then [f 0] ! n else (\< Suc
shows ‹
assms proof (cases ‹f 0›Infinite (f ∘ Suc)›
case (Finite xs) then show ‹ (unfold_loc;transfer))
apply (intro xI[hr x=\<>\trae sec> as \opende X\close\open>‹
by (force simp: prefixes_extensions[THEN sym] prefixes_def
Nuse, OF ams]
intro: exI[where x=\ t›dZ) ⊆
auto
definitive_elemI:
assumes ‹↑ t ⊆
shows ‹tdrop k ε dUnion_leastd insesrsngeto
using ass
by (auto simp add: definitive_def dprefixes_def)
java.lang.NullPointerException
open>en>Union><^>
dunion :: ‹ (infixl ‹)wee ‹?thesis›
prefixes_dUnion:\open↓d∪d S = ∪d S› i
by (simp add: dUnion_def dprefixes_idem)
definitive_dUnion: ‹
by (simp add: dprefixes_dUnion definitive_def)
java.lang.NullPointerException
by (au(auto simp: dUnion_de prefix_df prex_cour_de
java.lang.NullPointerException
unfolding definitive_def
using dUnion_contains_dprefixes by blast
Union_empty[eptp:🚫
unfolding dUnion_def
by (simp add: dprefixes_empty)
dUnion_least_dprefixes: ‹(∧X. X ∈
unfolding dprefixes_def prefix_clsection ‹
by (simp add: subset_iff, meson extensions.order_refl prefixes.order.trans)
dUnion_least_definitive:
assumes all_defn: ‹'p])
open>(∧X. X ∈ X ⊆L ↓d ∪ S 🚫
using definitive_image[OF all_defn,THEN sym] dUnion_least_dprefixes definitive_def
by metis
‹
'a ds ‹
using definitive_UNIV by blast
type_definition_dset
Inter_dset :: ‹ 'a dset›
(simpad: df)
inter_dset :: ‹x ∈ prepend' X› ‹🚫
Union_cset :: ‹ 'a dset›⊔›) is ‹
by (rule definitive_dUnion)
union_dset :: \'a dset ==> 'a dset ==> 'a dset› range n)🚫 ‹🚫
empty_dset :: ‹
by (rule definitive_empty)
univ_dset :: ‹definitive X›definitive (prepend' X)›
by (rule definitive_UNIV)
subset_dset :: ‹
done
strict_subset_cset :: ‹⊏›(⊂)›
done
in_dset :: ‹
done
notin_dset :: ‹
done
in_dset_εassu‹ B›
apply (transfer)
using definitive_contains_extensions extensions_empt blst
in_dset_UNIV: ‹
by (transfer, simp)
in_dset_subse)
by (transfer, auto)
in_dset_inter: ‹ B)›
by (transfer, simp)
dset: (sipadd:efintvsines
(unfold_locales;transfer)
fix X Y Z :: ‹ assume ‹
then show ‹x›
y etsdnon_dUinlest_efinienertiffsiltonD
by mis\epsilon_def append_is_empty(1) list.discI trace.inect()
:a trse\close
assume ‹
then show ‹
d_prefix \<>x
(auto simp: dUnion_contains_definitive)
‹
infinites :: ‹ ‹
infinites_alt: ‹∀
set_eq_iff proof
fixa \>∀t. x ∈ (\Union = 🚫
by (clarsimp simp: infinites_def split!: trace.split_asm)
} moreover { assum \<pen
by (force simp: infinites_def split!: trace.split intro!: imageI)
} ultimately show ‹ (x ∈ Infinite ` infinites A) = (x ∈ A ∩ range Infinite)›
by blast
infinites_append_right: ‹
by (cases ‹
infinites_prefix_closure:
shows ‹
prefix_closure_def fnitsdef
using definitive_infinite_extension[OF assmpefis.odrtrns
by (force splby fasr
es_UNIV[simp]: ‹
by (auto simp: infinites_def(a tre ==>tcl is ‹
infinites_empty[simp]: ‹
by (auto simp: infinites_def)
definitives_inverse: ‹definitives (property X) = X›
(rule dset.order_antisym)
show ‹
by (transfer, force simp: dprefixes_def infinites_prefix_closure
intro: definitive_elemI)
java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
apply transfer
using definitive_contains_extensions definitive_infinite_extension
by (force simp: dprefixes_def prefix_closure_def infinites_def)
definitives_mono: ‹
by (transfer, metis dprefixes_inter_distrib image_mono inf.order_iff le_infE)
property_mono: ‹ (rule dse.ord)
by (transfer, auto simp: infinites_def)
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null
using property_inverse property_mono by metis
completions_reflecting: ‹
using definitives_inverse definitives_mono by metis
openp(\<>S
by (transfer, simp add: infinites_Inter)
iprepend :: ‹'a infinite_trace set ==> 'a infinite_trace set› where ‹iprepend X = {t. itdrop 1 t ∈ X }›
iprepend_itdrop: ‹
by (simp add: iprepend_def)
iprepend_itdrop_0[simp] = iprepend_itdrop[where k = ‹0›,simplified]
prepend' :: ‹ ‹prepend' X = {t. tdrop 1 t ∈ X }›
trace_uncons_cases [case_names Cons Nil]:
assumes ‹
and ‹x = ε ==> P›
shows ‹P›
(cases ‹
case (Finite xs)
then show ‹
by (cases ‹xs›
force simp: assms(2)[simplified ε_def]
intro: assms(1)[where t = ‹Finite ts› for ts,
simplified singleton_def append.simps List.append.simps])
case (Infinite f) note A = this
have ‹using definitives_inverse definitives_mono by metis
by (rule ext, simp)
with A show ‹
using assms(1)[where σ = ‹f 0› and t
simplified singleton_def append.simps, simplified]
by simp
append_prefixes_left: ‹
by (simp add: prefixes_def) (metis trace.assoc)
tdrop_singleton_append[simp]: ‹tdrop (Suc n) (singleton σ ⌢ t) = tdrop n t›
by (cases ‹tb (transfe sim add infi)
tdrop_zero[simp]: ‹
by (cases ‹=\<nion
tdrop_ε[simp]: ‹tdrop k ε = ε›
by (simp add: ε_def)
prepend'_prefix_closure: ‹
(rule subsetI)
fix x
assume A: ‹
show ‹> ‹<lose
proof (cases ‹x› rule: trace_uncons_cases)
case (Cons σ t)
with A show ‹?thesis›
unfolding prefix_closure_def prepend'_def prefixes_def
by (fastforce simp: trace.assoc)
next
case Nil
with A show ‹?thesis›
unfolding prefix_closure_def prepend'_def
by (force simp: prefixes_empty_least)
qed
prepend'_dprefixes : ‹definitive X› ‹↓d prepend' X = prepend' X›
show ‹↓simp a: proppropertINF_S)
proof (rule subsetI)
fix x assume A: ‹x ∈
proof (cases ‹
case (Cons σ t)
with A show ‹
unfolding dprefixes_def
apply (subst assms[simplified definitive_def, THEN sym])
apply (clarsimp dest!: subset_trans[OF _ prepend'_prefix_closure])
using append_prefixes_left
by (force simp: dprefixes_def prepend'_def prefix_closure_def subset_iff
prefixes_extensions[THEN sym])
next
case Nil
with A show ‹?thesis›> itd (Suc k) x \inB\<<close
apply (subst assms[simplified definitive_def, THEN sym])
apply (clarsimp simp: prefixes_empty_least prefixes_def dprefixes_def
prepend'_def prefix_closure_def subset_iff
prefixes_extensions[THEN sym])
by (metis tdrop_singleton_append tdrop_zero trace.assoc)
qed
qed
show ‹prepend' X ⊆↓
proof (rule subsetI)
fix x assume A: ‹
proof (cases ‹x› rule: trace_uncons_cases)
case (Cons σ t)
with A show ‹
by (clarsimp simp: dprefixes_def prefixes_def prepend'_def
prefix_closure_def pref[THEN sym]])
(metis (mono_tags, lifting) assms definitive_contains_extensions
mem_Collect_eq prefixes_def prefixes_extensions subset_eq
tdrop_singleton_append tdrop_zero trace.assoc)
case Nil
with A show ‹?thesis›
using assms definitive_contains_extensions
by (force simp: dprefixes_def prepend'_def prefix_closure_def)
qed
qed
prepend'_definitive :
assumes ‹ x =si \<>\
shows ‹definitive (prepend' X)›
unfolding definitive_def using assms
by (rule prepend'_dprefixes)
prepend :: ‹
by (rule prepend'_definitive)
prepend_Inter: ‹
apply transfer
by (auto simp add: prepend'_def)
thead_prefix: ‹ x ∈↓\<openf
apply (simp add: prefixes_def non_empty_trace)
using thead_append [where x = ‹Finite [_]›, simplified ε_def, simplified]
by (metis append_is_empty(1) thead_append)
compr'_inter_thead: ‹
= ↓d {x. x ≠ ε ∧
(rule antisym)
fix x t
assume ‹
and ‹∀
and ‹open>a n\downc \<>
then have ‹∃x. x ≠ ε ∧ P (thead x) ∧ Q (thead x) ∧ t ∈↓ x›
by (cases ‹t = ε›
then show ‹
by (clarsimp simp: set_eq_iff subset_iff dprefixes_def prefix_closure_def prefixes_extensions[THEN sym])
fix x
assume ‹∀t. x ∈↓ t ⟶ (∃opet\<>
then have ‹
(∀t. x ∈↓ t ⟶ (∃x. x ≠ ε ∧<>\
fas }
then show ‹↓d {x. x ≠ ε ∧ P (thead x)} ∩↓d {x. x ≠de)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
compr :: ‹('a trace ==> bool) ==> 'a dset› is ‹λp. ↓d {x. p x }›
by (rule definitive_dprefixes)
complement :: ‹
by (rule definitive_dprefixes)
property_complement[simp]: ‹property (complement X) = UNIV - property X›
by (transfer, force simp: infinites_dprefixes[simplified infinites_def] infinites_def
split: tracedhow 🚫
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.