Theory Finite_DCR_Hierarchy
section ‹Preliminaries›
subsection ‹Formal definition of finite levels of the DCR hierarchy›
theory Finite_DCR_Hierarchy
imports Main
begin
subsubsection ‹Auxiliary definitions›
definition confl_rel
where "confl_rel r ≡ (∀a b c. (a,b) ∈ r^* ∧ (a,c) ∈ r^* ⟶ (∃ d. (b,d) ∈ r^* ∧ (c,d) ∈ r^*) )"
definition jn00 :: "'a rel ⇒ 'a ⇒ 'a ⇒ bool"
where
"jn00 r0 b c ≡ (∃ d. (b,d) ∈ r0^= ∧ (c,d) ∈ r0^=)"
definition jn01 :: "'a rel ⇒ 'a rel ⇒ 'a ⇒ 'a ⇒ bool"
where
"jn01 r0 r1 b c ≡ (∃b' d. (b,b') ∈ r1^= ∧ (b',d) ∈ r0^* ∧ (c,d) ∈ r0^*)"
definition jn10 :: "'a rel ⇒ 'a rel ⇒ 'a ⇒ 'a ⇒ bool"
where
"jn10 r0 r1 b c ≡ (∃c' d. (b,d) ∈ r0^* ∧ (c,c') ∈ r1^= ∧ (c',d) ∈ r0^*)"
definition jn11 :: "'a rel ⇒ 'a rel ⇒ 'a ⇒ 'a ⇒ bool"
where
"jn11 r0 r1 b c ≡ (∃b' b'' c' c'' d. (b,b') ∈ r0^* ∧ (b',b'') ∈ r1^= ∧ (b'',d) ∈ r0^*
∧ (c,c') ∈ r0^* ∧ (c',c'') ∈ r1^= ∧ (c'',d) ∈ r0^*)"
definition jn02 :: "'a rel ⇒ 'a rel ⇒ 'a rel ⇒ 'a ⇒ 'a ⇒ bool"
where
"jn02 r0 r1 r2 b c ≡ (∃b' d. (b,b') ∈ r2^= ∧ (b',d) ∈ (r0 ∪ r1)^* ∧ (c,d) ∈ (r0 ∪ r1)^* )"
definition jn12 :: "'a rel ⇒ 'a rel ⇒ 'a rel ⇒ 'a ⇒ 'a ⇒ bool"
where
"jn12 r0 r1 r2 b c ≡ (∃b' b'' d. (b,b') ∈ (r0)^* ∧ (b',b'') ∈ r2^= ∧ (b'',d) ∈ (r0 ∪ r1)^*
∧ (c,d) ∈ (r0 ∪ r1)^*)"
definition jn22 :: "'a rel ⇒ 'a rel ⇒ 'a rel ⇒ 'a ⇒ 'a ⇒ bool"
where
"jn22 r0 r1 r2 b c ≡ (∃b' b'' c' c'' d. (b,b') ∈ (r0 ∪ r1)^* ∧ (b',b'') ∈ r2^= ∧ (b'',d) ∈ (r0 ∪ r1)^*
∧ (c,c') ∈ (r0 ∪ r1)^* ∧ (c',c'') ∈ r2^= ∧ (c'',d) ∈ (r0 ∪ r1)^*)"
definition LD2 :: "'a rel ⇒ 'a rel ⇒ 'a rel ⇒ bool"
where
"LD2 r r0 r1 ≡ ( r = r0 ∪ r1
∧ (∀ a b c. (a,b) ∈ r0 ∧ (a,c) ∈ r0 ⟶ jn00 r0 b c)
∧ (∀ a b c. (a,b) ∈ r0 ∧ (a,c) ∈ r1 ⟶ jn01 r0 r1 b c)
∧ (∀ a b c. (a,b) ∈ r1 ∧ (a,c) ∈ r1 ⟶ jn11 r0 r1 b c) )"
definition LD3 :: "'a rel ⇒ 'a rel ⇒ 'a rel ⇒ 'a rel ⇒ bool"
where
"LD3 r r0 r1 r2 ≡ ( r = r0 ∪ r1 ∪ r2
∧ (∀ a b c. (a,b) ∈ r0 ∧ (a,c) ∈ r0 ⟶ jn00 r0 b c)
∧ (∀ a b c. (a,b) ∈ r0 ∧ (a,c) ∈ r1 ⟶ jn01 r0 r1 b c)
∧ (∀ a b c. (a,b) ∈ r1 ∧ (a,c) ∈ r1 ⟶ jn11 r0 r1 b c)
∧ (∀ a b c. (a,b) ∈ r0 ∧ (a,c) ∈ r2 ⟶ jn02 r0 r1 r2 b c)
∧ (∀ a b c. (a,b) ∈ r1 ∧ (a,c) ∈ r2 ⟶ jn12 r0 r1 r2 b c)
∧ (∀ a b c. (a,b) ∈ r2 ∧ (a,c) ∈ r2 ⟶ jn22 r0 r1 r2 b c))"
definition DCR2 :: "'a rel ⇒ bool"
where
"DCR2 r ≡ ( ∃r0 r1. LD2 r r0 r1 )"
definition DCR3 :: "'a rel ⇒ bool"
where
"DCR3 r ≡ ( ∃r0 r1 r2. LD3 r r0 r1 r2 )"
definition 𝔏1 :: "(nat ⇒ 'U rel) ⇒ nat ⇒ 'U rel"
where
"𝔏1 g α ≡ ⋃ {A. ∃ α'. (α' < α) ∧ A = g α'}"
definition 𝔏v :: "(nat ⇒ 'U rel) ⇒ nat ⇒ nat ⇒ 'U rel"
where
"𝔏v g α β ≡ ⋃ {A. ∃ α'. (α' < α ∨ α' < β) ∧ A = g α'}"
definition 𝔇 :: "(nat ⇒ 'U rel) ⇒ nat ⇒ nat ⇒ ('U × 'U × 'U × 'U) set"
where
"𝔇 g α β = {(b,b',b'',d). (b,b') ∈ (𝔏1 g α)^* ∧ (b',b'') ∈ (g β)^= ∧ (b'',d) ∈ (𝔏v g α β)^*}"
definition DCR_generating :: "(nat ⇒ 'U rel) ⇒ bool"
where
"DCR_generating g ≡ (∀ α β a b c. (a,b) ∈ (g α) ∧ (a,c) ∈ (g β)
⟶ (∃ b' b'' c' c'' d. (b,b',b'',d) ∈ (𝔇 g α β) ∧ (c,c',c'',d) ∈ (𝔇 g β α) ))"
subsubsection ‹Result›
text ‹The next definition formalizes the condition ``an ARS with a reduction relation $r$ belongs to the class $DCR_n$'', where $n$ is a natural number.›
definition DCR :: "nat ⇒ 'U rel ⇒ bool"
where
"DCR n r ≡ (∃ g::(nat ⇒ 'U rel). DCR_generating g ∧ r = ⋃ { r'. ∃ α'. α' < n ∧ r' = g α' } )"
end