/* The test on treating open variables in patterns. Given a word e.w, we change all letters 'A' to 'D' in it and prepend a prefix consisting of letters 'C' and of the length equal to the length of e.x. MSCP-A determines that the prefix can not contain letters 'A', and brings it out from the loop changing letters 'A' to 'D'. */ /***********************************************/ /* the input program */ /***********************************************/ $ENTRY Go { e.w = e.w>; } F { e.x1 'A' e.x2 = e.x1 'D' ; e.Z = e.Z; } H { = ; t.x e.y = 'C' ; } /***********************************************************/ /* the residual program (with ~UnAmb) */ /***********************************************************/ /* $ENTRY Go { e.x1 = ; } F_12_0 { (e.x1) (e.x2) (e.x3 'A' e.x4) = ; (e.x1) (e.x2) (e.x3) = e.x1 'D' e.x2 e.x3; } F_12_1 { (e.x1) (e.x2) (e.x3 'A' e.x4) = ; (e.x1) (e.x2) (e.x3) = e.x1 'D' e.x2 e.x3; } F_0 { (e.x1) () ('A' e.x2) = ; (e.x1) () (e.x2 'A' e.x3) = ; (e.x1) () (e.x2) = e.x1 e.x2; (e.x1) (t.y1 e.x2) (e.x3) = ; } */