Navigation
Synopsis The reflexive transitive closure of a binary relation.
Syntax Exp *
Types
Exp Exp *
rel[T1, T2] rel[T1, T2]
Description Reflexive transitive closure is defined by repeated composition of a relation. If we define for a given relation R:
  • R0 = identity relation = {<a, a>, <b, b> | <a, b> <- R}
  • R1 = R
  • R2 = R o R
  • R3 = R o R2
  • ...
then the reflexive transitive closure R* can be defined in two ways: (also see TransitiveClosure):
  • R* = R0 + R1 + R2 + R3 + ...
  • R* = R0 + R+
Examples
rascal>{<1,2>, <2,3>, <3,4>}*;
rel[int,int]: {
  <4,4>,
  <1,4>,
  <2,2>,
  <2,4>,
  <1,3>,
  <2,3>,
  <1,2>,
  <3,4>,
  <1,1>,
  <3,3>
}

Questions
Question [1].
The type of {<1,2>,<0,3>,<2,3>}* is

Question [2].
{<1,2>,<3,4>,<0,1>,<2,3>}* == 



Is this page unclear, or have you spotted an error? Please add a comment below and help us to improve it. For all other questions and remarks, visit ask.rascal-mpl.org.