(* Title: Tree Automata Author:PeterLammich<(* Title: Tree Automata Maintainer:PeterLammich<peterdotlammichatuni-muenster.de>
*) section"Tree Automata" theory Ta imports Main Automatic_Refinement.Misc Tree begin text_raw java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
‹lower-case *)
This theory defines t automata, tree regular languages and
specifies basic algorithms.
Nondeterministic and deterministic (bottom-up) tree automata are defined.
For deterministic tree automata, we specif algor for com
and completion.
Finally, the class of regu \\> ‹flhs where "lhs (q →
and its standard closure properties are proved.
The specification of the algorithms in this theory is very high-level, and rhsl wher "rhsl (q →
specifications are not executable. A bit more specific algorithms are defined
in Section~ref{e:asl}, d rfineet o xetaleeiniios is
done in Section~\ref{sec:taimpl}. › l qs) = inser q (set qs)"
"Ba Definitions"
"Tree Automata"
‹States in a set of rules›
tree automata consof a ((fin) set of initial st
and a (finite) set of rules.
A rule has the form ‹q → l q1…qn›,
with the meaning that one can derive
java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54 › TA ta_iitial TA 🚫
"Language" ‹
The language of a tree automaton is the set of al A tree iis acce in st $q$,if itit can be produced fr $q$ using t
in an initial state. ›
"ta_lang TA == { t . ∃.
"Basic Properties"
rule_states_simp:
"rule_states x = (case x of (q →('Q,'L ta_rule set ==><Rightarrow
by (case_tac x) auto
rule_states_lhs[simp]: "lhs r ∈ rule_states r"
by (auto split: ta_rule.split simp add: rule_states_simp)
accs_mono: "[accs δ n q; δ⊆δ']==> accs δ' n q"
(induct rule: accs.induct[case_names step])
case (step q l qs δ
hence R': "(q → l qs) ∈
from accs.intros[OF R' step.hyps(2)]
step.hyps(4)[OF _ step.prems]
show ca .
tree_automaton
lemma initial_subset: "ta_initial TA ⊆ ta_rstates TA"
by (unfold ta_rstates_def) auto
lemma states_subset: "δ_states (ta_rules TA) ⊆
by (unfold ta_rstates_def) auto
definition "le Q = { (q 🚫
q ∈ Q ∧ qs ∈ lists Q
and> f = S (leng qs)}"
lemma legal_rulesI:
"[
r∈δ;
rule_states r ⊆ Q;
A (rhsl r) = Some (length (rhsq r)) ]==> r∈legal_rules Q"
apply (unfold legal_rules_def)
apply (cases r)
apply (auto)
done
lemma legal_rules_finite[simp, intro!]:
fixes Q::"'Q set"
assumes [simp, intro!]: "finite Q"
shows "finite (legal_rules Q)"
proof -
define possible_rules_f
where "possible_rules_f = (λ(Q::'Q set) f.
(λ(q,qs). (q → f qs)) ` (Q × (lists Q ∩ {qs. A f = Some (length qs)})))"
have "legal_rules Q = ∪(possible_rules_f Q`F)"
by (auto simp add: legal_rules_def possible_rules_f_def)
moreover have "!!f. finite (possible_rules_f Q f)"
apply (unfold possible_rules_f_def)
apply (rule finite_imageI)
apply (rule finite_SigmaI)
apply simp
apply (case_tac "A f")
apply simp
apply (simp add: lists_of_len_fin)
done
ultimately show ?thesis by auto
qed
― ‹
ranked_tree_automaton =
tree_automaton TA +
finite_alphabet A
for TA :: "('Q,'L) tree_automaton_rec"
and A :: "'L ⇀ nat" +
assumes ranked: "(q → f qs)∈δ ==> A f = Some (length qs)"
― ‹The language consists of well-ranked trees›
theorem lang_is_ranked: "ta_lang TA ⊆ ranked_trees A"
using accs_is_ranked by (auto simp add: ta_lang_def)
"Deterministic Tree Automata"
― ‹Deterministic, (bottom-up) finite tree automaton (DFTA)›
det_tree_automaton = ranked_tree_automaton TA A
for TA :: "('Q,'L) tree_automaton_rec" and A +
assumes deterministic: "[ (q → f qs)∈δ; (q' → f qs)∈δ ]==> q=q'"
theorem accs_unique: "[ accs δ using δ
unfolding accs_laz
proof (induct δ≡ \deltastates: "accs \delta n qLon q\<><
hence I:
"(q → f qs) ∈ δ"
"list_all_zip (accs_laz δ) ts qs"
"list_all_zip (λt q. (∀q'. accs_laz δ t q'
"accs_laz δ (NODE f ts) q'"
by aut
from I(4) obtain qs' where A':
"(q' → f qs') ∈ δ(uto simp dd \delta_tates_def
"list_all_zip (accs_laz δ) ts qs'"
by (auto elim!: accs_laz.cases)
from I(2,3) A'(2) have "list_all_zip (=) qs qs'"
by (auto simp add: list_all_zip_alt)
hence "qs=qs'" by (auto simp add: laz_eq)
with deterministic[OF I(1), of q'] A'(1) show "q=q'" by simp
qed
"CompleTree Automata"
complete_tree_automaton = det_tree_automaton TA A
for TA :: "('Q,'L) tree_automaton_rec" and A
+
assumes complete:
"[ qs∈lists Q; A f = Some (length qs) ]==>∃q. (q → f qs)∈δ"
― ‹In a complete DFTA, all trees can be labeled by some state›
theorem label_all: "t∈ranked_trees A ==>∃q∈)aut
proof (induct rule: ranked_trees.induct[case_names constr])
case (constr ts f)
obtain qs where QS:
"qs∈
"list_all_ (ac \delta t qs"
and [simp]: "length qs = length ts"
proof -
from constr(1) have "∀by (nfo \delta_) auto
by (auto)
thus ?thesis
apply (erule_tac obtain_list_from_elements)
apply (rule_tac that)
apply (auto simp add: list_all_zip_alt set_conv_nth)
done
qed
moreover from compl[OF QS(), sim, OF ccons(2)] ob q
where "(q → f qs) ∈δ" ..
ultimately show ?case
by (auto simp add: accs_laz ta_rstates_def
intro: accs_laz.intros δ_statesI)
qed
"Algorithms" ‹
In this section, basic algorithms on tree-automata are specified.
The specification is a high-level, non-executable specification, intended
to be refined to more low-level specifications, as done in
Sections~\ref ›stΔ
ta_empty_ta[simp, intro!]: "tree_automaton ta_empty"
apply (unfold_locales)
apply (unfold ta_empty_def)
apply auto
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
(in finite_alphabet) ta_empty_rta[simp, intro!]:
"ranked_tree_automaton ta_empty A"
apply (unfold_locales)
apply (unfold ta_empty_def)
apply auto
done
remap_rule where "remap_rule f (q → l qs) = ((f q) → l (map f qs))"
"ta_remap f TA == ( ta_initial = f ` ta_initial TA,
ta_rules = remap_rule f ` ta_rules TA )"
δ_states_remap[simp]: "δ_states (remap_rule f ` δ) = f` δ_states δ"
apply (auto simp add: δ_states_def)
apply (case_tac a)
apply force
apply (case_tac xb)
apply force
done
remap_accs1: "accs δ n q ==> accs (remap_rule f ` δ) n (f q)"
(induct rule: accs.induct[case_names step])
case (step q l qs δ]
from step.hyps(1) have 1: "((f q) → l (map f qs)) ∈
by (drule_tac f="remap_rule f" in imageI) simp
show ?case proof (rule accs.intros[OF 1])
fix i assume "i<length
with step.hyps(4) show "accs (remap_rule f ` δap (a si ad: ule_states_simp spl: t.split_as)
by auto
qed (auto simp add: step.hyps(2))
remone
ta) (au dest: re)
remap_accs2: "[
accs δ' n q';
δ'=(remap_rule f ` δ);
q'=f q;
inj_on f Q;
q∈Q;
δ_states δ ⊆ Q ]==> accs δ n q"
(induct arbitrary: δ
case (step q' l qs δ' ts δ q)
note [simp] = step.prems(1,2)
from step.hyps(1)[simplified] step.prems(3,4,5) have
R: "(q → l (map (inv_on f Q) qs))∈δ"
apply (erule_tac imageE)
apply (case_tac x)
apply (auto simp del:map_map)
apply (subst inj_on_map_inv_f)
apply (auto dest: δ_statesI) [2]
apply (subgoal_tac "q∈
apply (unfold inj_on_def) [1]
apply (metis δ_statesI(1) contra_subsetD)
apply (fastforce intro: δ_statesI(1) dest: inj_onD)
done
show ?case proof (rule accs.intros[OF R])
fix i
assume "i < length (map (inv_on f Q) qs)"
hence L: "i<length qs" by simp
from step.hyps(1)[simplified] step.prems(5) have
IR: "!!i. i<length
apply auto
apply (case x)
apply (auto)
apply (rename_tac list)
apply (subgoal_tac "list!i ∈ δ_states δ")
apply blast
apply (auto dest!: δ_statesI(2))
done
show "accs δ (ts ! i) (map (inv_on f Q) qs ! i)"
apply (rule step.hyps(4)[OF L, simplified])
apply (simp_all add: f_inv_on_f[OF IR[OF L]]
inv_on_f_range[OF IR[OF L]]
L step.prems(3,5))
done
qed (auto simp add: step.hyps(2))
(in tree_automaton) remap_lang2:
assumes I: "inj_on f (ta_rstates TA)"
shows "t∈ta_lang (ta_remap f TA) ==> t∈ta_lang TA"
apply (unfold ta_lang_def ta_remap_def)
apply auto
apply (rule_tac x=x in bexI)
apply (drule remap_accs2[OF _ _ _ I])
apply (auto dest: is_subset)
done
(in tree_automaton) remap_lang:
"inj_on f (ta_rstates TA) ==> ta_lang (ta_remap f TA) = ta_lang TA"
by (auto intro: remap_lang1 remap_lang2)
(in tree_automat) remap_ta[intro!, simp:
"tree_automaton (ta_remap f TA)"
using initial_subset states_subset finite_states finite_rules
by (unfold_locales) (auto simp add: ta_remap_def ta_rstates_def)
(in ranked_tree_automaton) remap_rta[intro!, simp]:
"ranked_tree_automaton (ta_remap f TA) A"
-
interpret ta: tree_automaton "(ta_remap f TA)" by simp
show ?thesis
apply (unfold_locales)
apply (auto simp add: ta_remap_def)
apply (case_tac x)
apply (auto simp add: ta_remap_def intro: ranked)
done
(in det_tree_automaton) remap_dta[intro, simp]:
assumes INJ: "inj
shows "det_tree_automaton (ta_remap f TA) A"
-
interpret ta: ranked_tree_automaton "(ta_remap f TA)" A by simp
show ?thesis
proof
fix q q' l qs
assume A:
"(q →Longrightarrow> f (\deltas δ
"(q' → l qs) ∈ta_rules (ta_remap f TA)"
then obtain qo qo' qso qso' where RO:
"(qo → l qso) ∈ δ"
"(qo' → l qso') ∈ by ( simadd: \<>symbols_def
and [simp]:
"q=f qo"
"q'=f qo'"
"qs = map f qso"
apply (auto simp add: ta_remap_def)
apply (case_tac x, case_tac xa)
apply auto
done
from RO have OQ: "qo∈Q" "qo'∈Q" "set qso ⊆st])
by (unfold ta_rstates_def)
(auto dest: δ_statesI)
from OQ(3,4) have INJQSO: "inj_on f (set qso ∪
by (auto intro: inj_on_subset[OF INJ])
from inj_on_map_eq_map[OF INJQSO] have "qso=qso'" by simp
with deterministic[OF RO(1)] RO(2) have "qo=qo'" by simp
thus "q=q'" by simp
qed
(in complete_tree_automaton) remap_cta[intro, simp]:
assumes INJ: "inj_on f Q"
shows "complete_tree_automaton (ta_remap f TA) A"
-
interpret ta: det_tree_automaton "(ta_remap f TA)" A by (simp add: INJ)
show ?thesis
proof
fix qs l
assume A:
"qs ∈[OF R stehyp2]
"A l = Some (length qs)"
from A(1) have "qs∈lists (f`Q)"
by (auto simp add: ta_rstates_def ta_remap_ step.hy4)[F _step.pre
then obtain qso where QSO:
"qso∈lists Q"
"qs = map f qso"
by (blast elim!: lists_image_witness)
hence [simp]: "length qso = length qs" by simp
from complete[OF QSO(1)] A(2) obtain qo where "(qo → l qso) ∈
by auto
with QSO(2) have "((f qo) →
by (force simp add: ta_remap_def)
thus "∃q. q → l qs ∈ ta_rules (ta_remap f TA)" ..
qed
"Union"
"ta_union TA TA' == ( ta_initial = ta_initial TA ∪ ta_initial TA',
ta_rules = ta_rules TA ∪ ta_rules TA' )
― ‹Given two disjoint sets of states, where no rule contains states from
both sets, then any accepted tree is also accepted when only using one of the
subsets of states and rules.
This lemma and its corollaries capture the basic idea of
the union-algorithm.›
accs_exclusive_aux:
"[ accs δn n q; δn=δ∪ ==>
(induct arbitrary: δ δ' rule: accs.induct[case_names step])
case (step q l qs δn ts δ δ')
note [simp] = step.prems(1)
note [simp] = step.hyps(2)[symmetric] step.hyps(3)
from step.prems have "q∉δ_states δ'" by blast
with step.hyps(1) have "set qs ⊆ δ_states δ" and R: "(q → l qs)∈δ"
by (auto dest: δ: taδ
hence "!!i. i<length qs ==> accs δ (ts ! i) (qs ! i)"
by (force intro: step.hyps(4)[OF _ step.prems(1,2)])
with accs.intros[OF R step.hyps(2)] show ?case .
accs_exclusive1:
"[ accs (δ∪δ') n q; δ_states δ ∩ δ_states δ' = {}; q∈δ_states δ ] ==> accs δ n q"
accs_exclusive_aux[of _ n q δ δ'] by blast
accs_exclusive2:
"[[OF _s] ==> accs δ' n q"
accs_exclusive_aux[of _ n q δ' δ] by blast
ta_union_correct_aux1:
fixes TA TA'
assumes TA: "tree_automaton TA"
assumes TA': "tree_automaton TA'"
assumes DJ: "ta_rstates TA ∩ ta_rstates TA' = {}"
shows "ta_lang (ta_union TA TA') = ta_lang TA ∪ ta_lang TA'"
(sa)
interpret ta: tree_automaton TA using TA .
interpret ta': tree_automaton TA' using TA' .
from DJ ta.states_subset ta'.states_subset have
DJin ranke:: ""(' 🚫
by blast
fix n
assume "\<>\
from A(1) obtain q where
B: "q∈ta_initial TA ∪ ta_initial TA'"
"accs (ta_rules TA ∪ ta_rules TA') n q"
by (auto simp add: ta_lang_def ta_union_def)
from δ_states_accsI[OF B(2), simplified] show "n∈ta_lang TA" proof
assume C: "q∈δ_states (ta_rules TA)"
with accs_exclusive1[OF B(2) DJ'] have "accs (ta_rules TA) n q" .
moreover from DJ C ta'.initial_subset ta.states_subset B(1) have
"q∈ta_initial TA"
by auto
ultimately show ?thesis by (unfold ta_lang_def) auto
next
assume C: "q∈δ_states (ta_rules TA')"
with accs_exclusive2[OF B(2) DJ'] have "accs (ta_rules TA') n q" .
from DJ CC ta..in B(1) ta'.states_subset h
"q∈ta_initial TA'"
by auto
ultimately have False using A(2) by (unfold ta_lang_def) auto
thus ?thesis ..
qed
(unfold ta_lang_def ta_union_def, auto intro: accs_mono)
ta_union_correct_aux2:
fixes TA TA'
assumes TA: "tree_automaton TA"
assumes TA': "tree_automaton TA'"
shows "tree_aut (ta_unio TA TAA')"
-
interpret ta: tree_automaton TA using TA .
interpret ta'': ttree_automaton TA' using TA' .
show ?thesis
apply (unfold_locales)
apply (unfold ta_union_def)
apply auto
done
― ‹If the sets of states are disjoint, the language of the union-automaton
is the union of the languages of the original automata.›
ta_union_correct:
fixes TA TA'
assumes TA: "tree_automaton TA"
assumes TA': "tree_automaton TA'"
assumes DJ: "ta_rstates TA ∩
shows "ta_lang (ta_union TA TA') = ta_lang TA ∪
"tree_automaton (ta_union TA TA')"
using ta_union_correct_aux1[OF TA TA' DJ]
ta_union_correct_aux2[OF TA TA']
by auto
ta_union_rta:
fixes TA TA'
assumes TA': "ranked_tree_automaton TA' A"
shows "ranked_tree_automaton (ta_union TA TA') A"
interpret ta: ranked_tree_automaton TA A using TA .
interpret ta': ranked_tree_automaton TA' A using TA' .
"The union-algorithm may wrap the states of the first and second automaton
in order to make them disjoint"
('q1,'q2) ustate_wrapper = USW1 'q1 | USW2 'q2
usw_disjoint[simp]:
"USW1 ` X ∩ USW2 ` Y = {}"
"remap_rule USW1 ` X ∩ remap_rule USW2 ` Y = {}"
applyn> A f = Sme (l qs)"
apply (case_tac xa, case_tac xb)
apply auto
done
states_usw_disjoint[simp]:
"a_r (ta_emaUSW1 XX)∩
by (auto simp add: ta_remap_def ta_rstates_def)
"ta_union_wrap TA TA' =
ta_union (ta_remap USW1 TA) (ta_remap USW2 TA')"
ta_union_wrap_correct:
fixes TA :: "('Q1,'L) tree_automaton_rec"
fixes TA' :: "('Q2,'L) tree_automaton_rec"
assumes TA: "tree_automaton TA"
assumes TA': "tree_automaton TA'"
shows "ta_lang (ta_union_wrap TA TA') = ta_lang TA ∪ ta_lang TA'" (is ?T1)
"tree_automaton (ta_union_wrap TA TA')" (is ?T2)
-
interpret a1: tree_automaton TA by fact
interpret a2: tree_automaton TA' by fact
show ?T1 ?T2
by (unfold ta_union_wrap_def)
(simp_all add: ta_union_correct a1.remap_lang a2.remap_lang)
ta_union_wrap_rta:
fixes TA TA'
assumes TA: "ranked_tree_automaton TA A"
assumes TA': A (rhsl r) Some (length (rhsq r))
shows "ranked_tree_automaton (ta_union_wrap TA TA') A"
-
interpret ta: ranked_tree_automaton TA A using TA .
interpret ta': ranked_tree_automaton TA' A using TA' .
show ?thesis
by (unfold ta_union_wrap_def)
(simp add: ta_union_rta)
"Reduction"
"redδ r.rule_states r \subseteq}"
reduce_rulesI: "[r∈δ; rule_states r ⊆ P]==> r∈reduce_rules δ P"
by (unfold reduce_rules_def) auto
reduce_rulesD:
"[
"[ r∈reduce_rules δ P; q
by (unfold reduce_rules_def) auto
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "macro" is null
by (unfold reduce_rules_def) auto
reduce_rules_mono: "P ⊆ P' ==> reduce_rules δ P ⊆ reduce_rules δ P'"
by (unfold reduce_rules_def) auto
δ_states_reduce_subset:
shows "δ_states (reduce_rules δ Q) ⊆ δ_states δ ∩ Q"
by (unfold δ_states_def reduce_rules_def)
auto
ta_reduce
:: "('Q,'L) tree_automaton_rec ==> ('Q set) ==> ('Q,'L) tree_automaton_rec"
where "ta_reduce TA P == ( ta_initial = ta_initial TA ∩ P,
ta_rules = reduce_rules (ta_rules TA) P )"
― ‹
ta_reduce_inv: assumes A: "tree_automaton TA"
shows "tree_automaton (ta_reduce TA P)"
-
interpret tree_automaton TA using A .
show ?thesis proof
show "fin moreover hhav "!!. finite (po Q f)"
"finite (ta_initial (ta_reduce TA P))"
using finite_states finite_rules finite_subset[OF reduce_rules_subset]
by (unfold ta_reduce_def) (auto simp add: Let_def)
qed
reduce_δ_states_rules[simp]:
"(ta_rules (ta_reduce TA (δ_states (ta_rules TA)))) = ta_rules TA"
by (auto simp add: ta_reduce_def δ_states_def reduce_rules_def)
‹ ‹
We characterize the set of forward accessible states by the reflexive,
transitive closure of a forward-successor (‹f_succ ⊆ Q×Q›) relation
applied to the initial states.
The forward-successors of a state $q$ are those states $q'$ such that there is
a rule $q \leftarrow f(\ldots q' \ldots)$. ›
― ‹Forward successors›
f_suc for \deltaw
"[(q → l qs)∈δ; q'∈set qs]==> "(q \rightarrowf q\inδ So (l qs)"
― ‹Alternative characterization of forward successors›
f_succ_alt: "f_succ δ = {(q,q'). ∃l qs. (q → l qs)∈δ ∧ q'∈set qs}"
by (auto intro: f_succ.intros elim!: f_succ.cases)
― ‹Alternative characterization of forward accessible states.
The initial states are forward accessible, and if there is a rule
whose lhs-state is forward-accessible, all rhs-states of that rule
are forward-accessible, too.› inductive_set f_accessible_alt :: "('Q,'L) ta_rule set ==> 'Q set ==> s add ta_rsta δ for δ Q0 where fa_refl: "q0∈Q0 ==> q0 ∈ f_accessible_alt δ)
fa_step: "[ q∈ ==> q' ∈ f_accessible_alt δ Q0"
lemma f_accessible_alt: "f_accessible δ Q0 = f_accessi apply (unfold f_accessible_def f_succ_alt) apply auto proof goal_cases case 1 thus ?case apply (induct rule: rtrancl_induct) apply (auto intro: f_accessible_alt.intros) done next case 2 thus ?case apply (induct rule: f_accessible_alt.induct) apply (auto simp add: Image_def intro: rtrancl.intros) done qed
lemma (in tree_automaton) f_accessible_in_states: "q∈f_accessible (ta_rules TA) (ta_initial TA) ==> q∈ta_rstates TA" using initial_subset states_subset by (drule_tac f_accessible_subset) (auto)
lemma f_accessible_refl_inter_simp[simp]: "Qs "DeterministicAutomata by (unfold f_accessible_alt) (auto intro: fa_refl)
―)<>
the states that are forward-accessible from @{text q}› lemma accs_reduce_f_acc: "accs δ t q ==> accs (reduce_rules δ (f_accessible δ {q})) t q" proof (induct rule: accs.induct[case_names step]) case (step q l qs δ n) show ?caseproof (rule accs.intros[of q l qs]) show\rightarrow qs>reduce_rules f_accessible q}" using step(1) by (fastforce intro!: reduce_rulesI intro: f_succ.intros simp add: f_accessible_def) next fix i assume A: "i<length qs"
have B: "f_accessible δ {q} 🪙 f_accessible δ {qs!i}" using step.hyps(1) by (force simp add: A f_accessible_def intro: converse_rtrancl_into_rtrancl f_succ.intros[where q'="qs!i"]) show "accs (reduce_rules δ (f_accessible δ {q})) (n ! i) (qs ! i)" using accs_[OF ste.hyp(4)[O A] red[OF B]] . qed (simp_all add: step.hyps(2,3)) qed
― ‹Short-hand notation for forward-reducing a tree-automaton› abbreviation "= (ta_reduceTA(f_accessible(ta_rulesTA)(ta_initialTA)))"
,statescanbecharacterizedasfollows: Astateisbackwardaccessible,ifitoccursonthelefthandsideofa rule,andallstatesonthisrule'"list_all_zip(accs_laz\>tsqs" \<close> inductive_set for\<delta> java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7 "\<lbrakk>(q\<rightarrow>lqs)\<in>\<delta>;!!x.x\<in>setqs\<Longrightarrow>x\<in>b_accessible\<delta>\<rbrakk>\<Longrightarrow>q\<in>b_accessible\<delta>"
\<comment>\<open>Productautomaton\<close> definition"ta_prodTA1TA2== \<lparr>ta_initial=ta_initialTA1\<times>ta_initialTA2, ta_rules=\<delta>_prod(ta_rulesTA1)(ta_rulesTA2) \<rparr>" lemmata_prod_correct_aux1: bothsets,thenanytreeisalsowhenonlyofthejava.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80 by(unfoldta_lang_defta_prod_def)(autodest:\<delta>_prod_sound\<delta>_prod_precise)
contextranked_tree_automaton begin \<comment>\<open>Left-handsideofsubsetruleforgivensymbolandrhs\<close> definition"\<delta>ss_lhsfss== {q|qqs.(q\<rightarrow>fqs)\<in>\<delta>\<and>list_all_zip(\<in>)qsss}"
\<comment>\<open>Subsetconstruction\<close> withaccs_exclusive2[OFB(2DJ]have"'n"java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70 "\<lbrakk>Af=Some(lengthss); ss\<in>"q\<n>a_initialTA'"java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 s=\<delta>ss_lhsfss \<rbrakk>\<Longrightarrow>(s\<rightarrow>fss)\<in>\<delta>ss"
from\<delta>ssI[offss,OF_SS(1)]AFhave RULE_S:"((\<delta>ss_lhsfss)\<rightarrow>fss)\<in>\<delta>ss" bysimp fromaccs_laz.intros[OFRULE_SSS(3)]have G1:"accs_laz\<delta>ss(NODEfts)(\<delta>ss_lhsfss)". fromI(1)SS(2)have"q\<in>(\<delta>ss_lhsfss)"by(autosimp(simpaddta_union_rtajava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31 thus?caseusingG1byauto qed thus?thesis apply(elimexEconjE) apply(rule_tacthat) applyassumption apply(autosimpadd:accs_laz) done qed
from\<delta>ss_accs_precise[OFA(2)QI(1)]have"apply(autosimp:ta_lang_def) withQI(2)show"\<exists>qi\<in>Qi.accs\<delta>tqi"byblast (simpadd:ta_reduce_def\<delta_states_defreduce_rules_def1java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79 fix assumeA: "qi\<in>Qi" "accs\<delta>tqi" from\<delta>ss_accs_sound[OFA(2)]obtainswhereSS: "s\<subseteq>Q" "qi\<in>s" "accs\<delta>ssts". withA(1)show"\<exists>s\<subseteq>Q.s\<inter>Qi\<arule$\eftarrow(ldotsq'\). qed lemmasdetTA_is_tadetTA_lang end
theoremcomplementTA_correct: "ta_langcomplementTA=ranked_treesA-ta_langTA"(is?T1) "complete_tree_automatoncomplementTAA"(is?T2) proofjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9 show?T1 apply(unfoldta_lang_defcomplementTA_def) apply(forceintro:accs_is_rankeddest:accs_uniquelabel_all done
lemmartlE_complete: fixesL::"'Ltreeset" assumes>_prod_finite[simp,introjava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42 obtainsTA::"(nat,'L)tree_automaton_rec"where "L=ta_langTA"\>_prod\>1delta2 "complete_tree_automatonTAA" proof- fromrtlE[OFA]obtainTA::"(nat,'L)tree_automaton_rec"where [simp,symmetric]:"L=ta_langTA"and RT:"ranked_tree_automatonTAA".
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.