Theory Relation_Algebra_RTC
section ‹Reflexive Transitive Closure›
theory Relation_Algebra_RTC
imports Relation_Algebra
begin
text ‹We impose the Kleene algebra axioms for the star on relation algebras.
This gives us a reflexive transitive closure operation.›
class relation_algebra_rtc = relation_algebra + star_op +
assumes rtc_unfoldl: "1' + x ; x⇧⋆ ≤ x⇧⋆"
and rtc_inductl: "z + x ; y ≤ y ⟶ x⇧⋆ ; z ≤ y"
and rtc_inductr: "z + y ; x ≤ y ⟶ z ; x⇧⋆ ≤ y"
sublocale relation_algebra_rtc ⊆ kleene_algebra "(+)" "(;)" "1'" 0 "(≤)" "(<)" star
apply (unfold_locales)
apply (rule rtc_unfoldl)
apply (simp add: local.rtc_inductl)
apply (simp add: rtc_inductr)