Research Article

Efficient Semantics-Based Compliance Checking Using LTL Formulae and Unfolding

Algorithm 3

Transforming an annotated CFP into a set of conflict-free annotated CFPs.
function  
Input: An annotated CFP where and
Output: A set of annotated CFPs
begin
;
;
 /* compute CFPs from each of the co-sets of leaf conditions */
 CS:= GetLeafCondCoSets( );
for     do
   ComputeCFP ;
 /* generate annotated CFPs from the above (conflict-free) CFPs */
:= ;
repeat
  Select ;
   ;
   := GetCutoffEvents( );
   := FALSE; /* the flag changes to TRUE if there are CFP updates */
  while     do
   Select ;
    := GetContinuationEvent( );
   if     then
     ;
   else
     := GetUpdatedCFPs( ); /* see Algorithm 4 */
     ;
     ;
     := GetLinks_to ;
    for           do
     
     ;
     ;
     := TRUE; /* set the flag to TRUE upon CFP updates */
     ; /* add to the remaining CFPs for link annotations */
    ;
  if   then
    ;
  
until   ;