![]() |
| ||||
Navigation |
Synopsis Transitive closure on binary list relation values.
Syntax
Exp +
Types
Description Returns the transitive closure of a binary listrelation.
Transitive closure is defined by repeated composition of a relation.
If we define for a given relation R:
Examples
rascal>[<1,2>, <2,3>, <3,4>]+;
lrel[int,int]: [
<1,2>,
<2,3>,
<3,4>,
<1,3>,
<2,4>,
<1,4>
]
We can also simply (but not necessarily efficiently) define transitive closure ourselves:
rascal>lrel[int,int] tclosure(lrel[int,int] R) { >>>>>>> tc = R; >>>>>>> while(true){ >>>>>>> tc1 = tc; >>>>>>> tc += tc o R; >>>>>>> if(tc1 == tc) >>>>>>> return tc; >>>>>>> } >>>>>>>} lrel[int,int] (lrel[int,int]): lrel[int,int] tclosure(lrel[int,int]); rascal>tclosure([<1,2>, <2,3>, <3,4>]); interrupted: at tclosure(/:6,6) at ___SCREEN_INSTANCE___(/:1,0) Questions
Question [1].
![]() ![]()
Question [2].
![]() ![]() ![]() |