qualified finite_atms[imp] finite
| Plus "'a regex"byinduct r auto
lemma finite_atms[termination_simp " \in>asr\Longrightarrow <x\Longrightarrow>y<iergx by ( r) auto
definition "Wild size_regex_estimation]: " \in at r ==> f x ==> y ≤
lemma definition "TimesR (<ambda>. Times s `R" (nutr uo
lemma size_regex_estimation'[terminat]: "x ∈ y ≤<> size_regex f r" by (induct r) auto
qualified|"collect f (est\phi f<>"ect
qualified \lambda>Times
qualified primrec collect where 'Longrightarrow (∧ atms r ==> collect f r = collect "collect f (Skip n) = {}"
| java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
| "collect f (Plus r s) = colec f <>oltfs | "collect f (Times r s) = collect r) auto
|" f (Star r) = collect f r"
lemma collect_congaxollect
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null by (induct r arbitrary: r') auto
lemma finite_collect[simp]: "(∧z. z ∈ atms r ==> finite (f z)) ==> finite (collect f r)" by (induct r) auto
lemma collect_commute: "(∧z. z ∈ atms r ==> x ∈ f z ⟷ g x ∈ f' z) ==> x ∈ collect f r ⟷ g x ∈ collect f' r" by (induct r) auto
lemma collect_alt: "collect f r = (∪z ∈ atms r. f z)" by (induct r) auto
qualified definition ncollect where "ncollect f r = Max (insert 0 (Suc ` collect f r))"
lemma insert_Un: "insert x (A ∪ B) = insert x A ∪ insert x B" by auto
lemma ncollect_simps[simp]: assumes [simp]: "(∧z. z ∈ atms r ==> finite (f z))" "(∧z. z ∈ atms s ==> finite (f z))" shows "ncollect f (Skip n) = 0" "ncollect f (Test φ) = Max (insert 0 (Suc ` f φ))" "ncollect f (Plus r s) = max (ncollect f r) (ncollect f s)" "ncollect f (Times r s) = max (ncollect f r) (ncollect f s)" "ncollect f (Star r) = ncollect f r" unfolding ncollect_def by (auto simp add: image_Un Max_Un insert_Un simp del: Un_insert_right Un_insert_left)
abbreviation "min_regex_default f r j ≡ (if atms r = {} then j else Min ((λz. f z j) ` atms r))"
qualified 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)**"
lemma 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
lemma match_le: "match test r i j ==> i ≤ j" proof (induction r arbitrary: i j) case (Times r s) then show ?case using order.trans by fastforce next case (Star r) from Star.prems show ?case unfolding match.simps by (induct i j rule: rtranclp.induct) (force dest: Star.IH)+ qed auto
lemma match_rtranclp_le: "(match test r)** i j ==> i ≤ j" by (metis match.simps(5) match_le)
lemma match_map_regex: "match t (map_regex f r) = match (λk z. t k (f z)) r" by (induct r) auto
lemma 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" proof (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) next 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 qed auto
lemma 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
end
(*<*) end (*>*)
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.8 Sekunden
(vorverarbeitet am 2026-06-10)
¤
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.