Theory Transitive_Closure_Extra
theory Transitive_Closure_Extra
imports Main
begin
lemma : "⋀R x y. R⇧=⇧= x y ⟷ R x y ∨ x = y"
by (metis (full_types) sup2CI sup2E)
lemma : "R⇧=⇧= x x"
by simp
lemma :
assumes "transp R"
shows "⋀x y z. R x y ⟹ R⇧=⇧= y z ⟹ R x z"
using ‹transp R›[THEN transpD] by blast
lemma :
assumes "transp R"
shows "⋀x y z. R⇧=⇧= x y ⟹ R y z ⟹ R x z"
using ‹transp R›[THEN transpD] by blast
lemma :
assumes "⋀z. (x, z) ∈ A⇧* ⟹ z ∉ Domain B"
shows "(x, y) ∈ (A ∪ B)⇧* ⟷ (x, y) ∈ A⇧*"
using assms
by (meson Domain.DomainI in_rtrancl_UnI rtrancl_Un_separatorE)
lemma :
assumes
"⋀z. (x, z) ∈ B⇧* ⟹ z ∉ Domain A"
shows "(x, y) ∈ (A ∪ B)⇧* ⟷ (x, y) ∈ B⇧*"
using assms
by (metis mem_rtrancl_union_iff_mem_rtrancl_lhs sup_commute)
end