package tests; import catg.CATG; public class DataAnnotation6 { public static void main(String[] args) { int x = CATG.readInt(0); int y = CATG.readInt(0); int z = CATG.readInt(0); System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("z = " + z); boolean flag, flagRuntime; CATG.BeginScope(); { flag = someComplexLogic(x, y, z); flagRuntime = flag; System.out.println("flagRuntime = " + flagRuntime); } CATG.EndScope(); flag = CATG.abstractBool("test", flag); System.out.println("flag = " + flag); if(flag) { if(flagRuntime) { // The motivation of this condition is detecting // a goal-reaching at runtime of concolic execution, // excluding intermediate inputs. System.out.println("goal"); } } } private static boolean someComplexLogic(int x, int y, int z) { if(x != 0) { if(y != 0) { if(x*5 > y) { if(2*(x-1) > y*13) { if(x % y < z) { return true; } } } } } return false; } }