/* A simple test transforming two loops in a one. Due to the program semantics, the input argument belongs to the alphabet {'A','B','C'}. */ /***********************************************/ /* the input program */ /***********************************************/ $ENTRY Go { e.InitialString = >; } F { = ; 'A' e.Str = 'B'; 'B' e.Str = 'B'; 'C' e.Str = 'C'; } G { = ; 'B' e.Str = 'C'; 'A' e.Str = 'A'; 'C' e.Str = 'C'; } /***********************************************/ /* the residual program */ /***********************************************/ /* $ENTRY Go { e.x1 = ; } G_0 { (e.x1) () = e.x1; (e.x1) ('A' e.x2) = ; (e.x1) ('B' e.x2) = ; (e.x1) ('C' e.x2) = ; } */