/* The test is taken from the paper: M.T Trinh, D.H Chu, J. Jaffar, Progressive reasoning over recursively-defined strings / International Conference on Computer Aided Verification, 218-240 The program checks the consistency of the following sanitization procedure. Given a string, we replace all the symbols '<' to the tag '<', and all the '>' to the tag '&rt'. We say the sanitization is correct if the resulting string does not contain '>; } ReplaceBr1 { e.x1 '<' e.x2 = ; e.Other = ; } ReplaceBr2 { e.x1 '>' e.x2 = e.x1'&rt'; e.Other = e.Other; } Check { = 'T'; '; } /***********************************************/ /* the residual program */ /***********************************************/ /* $ENTRY Go { e.x1 = ; } Check_1 { e.x1 '<' e.x2 = ; e.x1 = ; } Check_3_0 { (t.y1 e.x1) (e.x2) (e.x3) = ; () (e.x1) (e.x2) = ; } Check_0 { (e.x1 '>' e.x2) (e.x3) = ; (e.x1) (e.x2) = ; } Check_3_1 { (t.y1 e.x1) (e.x2) = ; () (e.x1) = ; } Check_3_2 { (t.y1 e.x1) (e.x2) = ; () (e.x1) = ; } Check_2 { e.x1 '>' e.x2 = ; e.x1 = ; } Check_13_0 { = 'T'; t.y1 e.x1 = ; } */