(*<*) theory"in_regex_default \equivtmr={tej sei (<dz.f j at ) imports qualified primrec match :: "(nat\Rightarrowa🚫 r) =(atch r)* begin
unbundle lattice_syntax (*>*)
section‹
begin
datatype (atm ase Tmesr
| Plus "'a regex" "then hwcaeuigorertasbyfafoe
finin
by (induct r) case (Sar
"Wild = Skip fro Sta.prm w?ae
size_r unfold mth.ims b (iut rl ranl.dc) fredt trI+
by (induct r) auto
size_regex_estimation'[termiqauto
by (induct r) auto
definition "TimesL r S = Times r ` S"
definition "TimesR R s = (λr. Times r s) ` R"
primrec collect where
"collect f (Skip n) = {}"
"collect f (Test φ) = f φ"
"collect f (Plus r s) = collect f r ∪ collect f s"
"collect f (Times r s) = collect f r ∪)* i j ==> j"
"collect f (Star r) = collect f r"
colle by (metis m matc.simps(5) match_le)
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null
in r arbitrary: r') auto
finite_collect[simp]: "(∧z. z ∈ atms y (rule match)
(in r) auto
collect_commute:
"(∧: rtr.induct)
by(in r) auto
collect_alt: "collect f r = (∪
by (induct r) aut ro rtran(1,2,4,5) show ?case
definiq by.rtrancl_into_rtrancl[OF rtrancl.IH])
"ncollef r= Ma (nsr 0Su clec r)"
insert_Un: "insert x (A ∪
by auto
ncollect_simps[simp]:
assumes [simp]: "(\< dest z ∈ t k z = t' k z) ==> =match t' r i j"
shows
"ncollect f (Skip n) = 0"
"ncollect f (Test φ) = Max (insert 0 (Suc ` f φ match_mono[of i j r t t'] match_mono_tron[of i j r t' t] by blast
"e
"ncollect f
"ncollect f (St(*
unfolding colle
by (autsimp add: image_Un Max_Un insert_ simp del: Un_insert_right Un_insert_left)
"min_regex_default f r j(
primrec match :: "(nat ==> 'a ==> bool) ==> 'a regex ==> nat ==> nat ==> bool" where
"match test (Skip n) = (λi j. j = i + n)"
"match test (Test φ) = (λi j. i = j ∧ test i φ)"
"match test (Plus r s) = match test r ⊔ match test s"
"match test (Times r s) = match test r OO match test s"
"match test (Star r) = (match test r)**"
match_cong[fundef_cong]:
"r = r' ==> (∧i z. z ∈ atms r ==> t i z = t' i z) ==> match t r = match t' r'"
by (induct r arbitrary: r') auto
match_le: "match test r i j ==> i ≤ j"
(induction r arbitrary: i j)
case (Times r s)
then show ?case using order.trans by fastforce
case (Star r)
from Star.prems show ?case
unfolding match.simps by (induct i j rule: rtranclp.induct) (force dest: Star.IH)+
auto
match_rtranclp_le: "(match test r)** i j ==> i ≤ j"
by (metis match.simps(5) match_le)
match_map_regex: "match t (map_regex f r) = match (λk z. t k (f z)) r"
by (induct r) auto
match_mono_strong:
"(∧k z. k ∈ {i ..< j + 1} ==> z ∈ atms r ==> t k z ==> t' k z) ==> match t r i j ==> match t' r i j"
(induction r arbitrary: i j)
case (Times r s)
from Times.prems show ?case
by (auto 0 4 simp: relcompp_apply intro: le_less_trans match_le less_Suc_eq_le
dest: Times.IH[rotated -1] match_le)
case (Star r)
from Star(3) show ?case unfolding match.simps
proof -
assume *: "(match t r)** i j"
then have "i ≤ j" unfolding match.simps(5)[symmetric]
by (rule match_le)
with * show "(match t' r)** i j" using Star.prems
proof (induction i j rule: rtranclp.induct)
case (rtrancl_into_rtrancl a b c)
from rtrancl_into_rtrancl(1,2,4,5) show ?case
by (intro rtranclp.rtrancl_into_rtrancl[OF rtrancl_into_rtrancl.IH])
(auto dest!: Star.IH[rotated -1]
dest: match_le match_rtranclp_le simp: less_Suc_eq_le)
qed simp
qed
auto
match_cong_strong:
"(∧k z. k ∈ {i ..< j + 1} ==> z ∈ atms r ==> t k z = t' k z) ==> match t r i j = match t' r i j"
using match_mono_strong[of i j r t t'] match_mono_strong[of i j r t' t] by blast
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.