Theory CR.Okui_subsumes_DC
text‹Okui Subsumes Development Closedness›
theory Okui_subsumes_DC
imports
Development_Closed_Impl
Okui_Criterion
begin
text‹Introduce definition to abbreviate Okui's criterion.›
definition
"sim_cp_closed ren R ⟷ left_lin_wf_trs R ∧
(∀A B. (A, B) ∈ ren.sim_cp ren R R ⟶ (∃v. (target A, v) ∈ (rstep R)⇧* ∧ (target B, v) ∈ mstep R))"
text‹Use definition from above to show confluence.›
lemma sim_cp_closed:
assumes "sim_cp_closed renN R"
shows "CR (rstep R)"
using assms okui_imp_CR unfolding sim_cp_closed_def by auto
text‹Any TRS that passes the check for development closedness fulfills all requirements for Okui's
criterion›
lemma dc_imp_sim_cp_closed:
assumes "isOK(check_development_closed ren2 R n)"
shows "sim_cp_closed renN (set R)"
proof-
note assms = assms[unfolded check_development_closed_def, simplified, unfolded wf_trs_def']
from assms have "⋀l r. (l, r) ∈ set R ⟹ is_Fun l" by auto
moreover from assms have "⋀l r. (l, r) ∈ set R ⟹ vars_term r ⊆ vars_term l" by auto
moreover from assms have "left_linear_trs (set R)" by auto
ultimately have wf_trs:"left_lin_wf_trs (set R)"
unfolding left_lin_wf_trs_def left_lin_def wf_trs_def no_var_lhs_def var_rhs_subset_lhs_def by blast
moreover from assms have "⋀s t. (True, s, t) ∈ critical_pairs ren2 (set R) (set R) ⟹ ∃v. (s, v) ∈ mstep (set R) ∧ (t, v) ∈ (rstep (set R))⇧*"
using is_mstep_join by fastforce
moreover from assms have "⋀s t. (False, s, t) ∈ critical_pairs ren2 (set R) (set R) ⟹ (s,t) ∈ mstep (set R)"
by fastforce
ultimately have "strongly_commute (mstep (set R)) (mstep (set R))"
using mstep_closed_strongly_commute by (metis (full_types) mstep_imp_rsteps mstep_refl)
from wf_trs this[unfolded strongly_commute_iff_sim_cps_joinable[OF wf_trs wf_trs, of renN]]
show ?thesis unfolding sim_cp_closed_def by simp
qed
end