4.01/1.91 YES 4.28/2.00 proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar 4.28/2.00 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.28/2.00 4.28/2.00 4.28/2.00 termination of the given Bare JBC problem could be proven: 4.28/2.00 4.28/2.00 (0) Bare JBC problem 4.28/2.00 (1) BareJBCToJBCProof [EQUIVALENT, 95 ms] 4.28/2.00 (2) JBC problem 4.28/2.00 (3) JBCToGraph [EQUIVALENT, 199 ms] 4.28/2.00 (4) JBCTerminationGraph 4.28/2.00 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 4.28/2.00 (6) TRUE 4.28/2.00 4.28/2.00 4.28/2.00 ---------------------------------------- 4.28/2.00 4.28/2.00 (0) 4.28/2.00 Obligation: 4.28/2.00 need to prove termination of the following program: 4.28/2.00 public class A { 4.28/2.00 public void method() { 4.28/2.00 while (true); 4.28/2.00 } 4.28/2.00 } 4.28/2.00 4.28/2.00 4.28/2.00 public class ArrayClasses { 4.28/2.00 public static void main(String[] args) { 4.28/2.00 Random.args = args; 4.28/2.00 A[] data = new A[2]; 4.28/2.00 data[0] = new A(); 4.28/2.00 data[1] = new B(); 4.28/2.00 int i = Random.random(); 4.28/2.00 if (i == 1) data[i].method(); 4.28/2.00 } 4.28/2.00 } 4.28/2.00 4.28/2.00 4.28/2.00 public class B extends A { 4.28/2.00 public void method() { 4.28/2.00 return; 4.28/2.00 } 4.28/2.00 } 4.28/2.00 4.28/2.00 4.28/2.00 public class Random { 4.28/2.00 static String[] args; 4.28/2.00 static int index = 0; 4.28/2.00 4.28/2.00 public static int random() { 4.28/2.00 String string = args[index]; 4.28/2.00 index++; 4.28/2.00 return string.length(); 4.28/2.00 } 4.28/2.00 } 4.28/2.00 4.28/2.00 4.28/2.00 4.28/2.00 ---------------------------------------- 4.28/2.00 4.28/2.00 (1) BareJBCToJBCProof (EQUIVALENT) 4.28/2.00 initialized classpath 4.28/2.00 ---------------------------------------- 4.28/2.00 4.28/2.00 (2) 4.28/2.00 Obligation: 4.28/2.00 need to prove termination of the following program: 4.28/2.00 public class A { 4.28/2.00 public void method() { 4.28/2.00 while (true); 4.28/2.00 } 4.28/2.00 } 4.28/2.00 4.28/2.00 4.28/2.00 public class ArrayClasses { 4.28/2.00 public static void main(String[] args) { 4.28/2.00 Random.args = args; 4.28/2.00 A[] data = new A[2]; 4.28/2.00 data[0] = new A(); 4.28/2.00 data[1] = new B(); 4.28/2.00 int i = Random.random(); 4.28/2.00 if (i == 1) data[i].method(); 4.28/2.00 } 4.28/2.00 } 4.28/2.00 4.28/2.00 4.28/2.00 public class B extends A { 4.28/2.00 public void method() { 4.28/2.00 return; 4.28/2.00 } 4.28/2.00 } 4.28/2.00 4.28/2.00 4.28/2.00 public class Random { 4.28/2.00 static String[] args; 4.28/2.00 static int index = 0; 4.28/2.00 4.28/2.00 public static int random() { 4.28/2.00 String string = args[index]; 4.28/2.00 index++; 4.28/2.00 return string.length(); 4.28/2.00 } 4.28/2.00 } 4.28/2.00 4.28/2.00 4.28/2.00 4.28/2.00 ---------------------------------------- 4.28/2.00 4.28/2.00 (3) JBCToGraph (EQUIVALENT) 4.28/2.00 Constructed TerminationGraph. 4.28/2.00 ---------------------------------------- 4.28/2.00 4.28/2.00 (4) 4.28/2.00 Obligation: 4.28/2.00 Termination Graph based on JBC Program: 4.28/2.00 ArrayClasses.main([Ljava/lang/String;)V: Graph of 138 nodes with 0 SCCs. 4.28/2.00 4.28/2.00 4.28/2.00 4.28/2.00 4.28/2.00 4.28/2.00 ---------------------------------------- 4.28/2.00 4.28/2.00 (5) TerminationGraphToSCCProof (SOUND) 4.28/2.00 Proven termination by absence of SCCs 4.28/2.00 ---------------------------------------- 4.28/2.00 4.28/2.00 (6) 4.28/2.00 TRUE 4.30/2.03 EOF