3.67/1.79 YES 3.67/1.80 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar 3.67/1.80 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 3.67/1.80 3.67/1.80 3.67/1.80 termination of the given Bare JBC problem could be proven: 3.67/1.80 3.67/1.80 (0) Bare JBC problem 3.67/1.80 (1) BareJBCToJBCProof [EQUIVALENT, 95 ms] 3.67/1.80 (2) JBC problem 3.67/1.80 (3) JBCToGraph [EQUIVALENT, 134 ms] 3.67/1.80 (4) JBCTerminationGraph 3.67/1.80 (5) TerminationGraphToSCCProof [SOUND, 2 ms] 3.67/1.80 (6) TRUE 3.67/1.80 3.67/1.80 3.67/1.80 ---------------------------------------- 3.67/1.80 3.67/1.80 (0) 3.67/1.80 Obligation: 3.67/1.80 need to prove termination of the following program: 3.67/1.80 public class NullPair { 3.67/1.80 NullPair next; 3.67/1.80 3.67/1.80 public static void main(String[] args) { 3.67/1.80 Random.args = args; 3.67/1.80 NullPair one = null; 3.67/1.80 NullPair two = null; 3.67/1.80 int i = Random.random(); 3.67/1.80 if (i == 0) { 3.67/1.80 one = new NullPair(); 3.67/1.80 } else { 3.67/1.80 two = new NullPair(); 3.67/1.80 } 3.67/1.80 3.67/1.80 while (one == null && two == null); 3.67/1.80 } 3.67/1.80 } 3.67/1.80 3.67/1.80 3.67/1.80 public class Random { 3.67/1.80 static String[] args; 3.67/1.80 static int index = 0; 3.67/1.80 3.67/1.80 public static int random() { 3.67/1.80 String string = args[index]; 3.67/1.80 index++; 3.67/1.80 return string.length(); 3.67/1.80 } 3.67/1.80 } 3.67/1.80 3.67/1.80 3.67/1.80 3.67/1.80 ---------------------------------------- 3.67/1.80 3.67/1.80 (1) BareJBCToJBCProof (EQUIVALENT) 3.67/1.80 initialized classpath 3.67/1.80 ---------------------------------------- 3.67/1.80 3.67/1.80 (2) 3.67/1.80 Obligation: 3.67/1.80 need to prove termination of the following program: 3.67/1.80 public class NullPair { 3.67/1.80 NullPair next; 3.67/1.80 3.67/1.80 public static void main(String[] args) { 3.67/1.80 Random.args = args; 3.67/1.80 NullPair one = null; 3.67/1.80 NullPair two = null; 3.67/1.80 int i = Random.random(); 3.67/1.80 if (i == 0) { 3.67/1.80 one = new NullPair(); 3.67/1.80 } else { 3.67/1.80 two = new NullPair(); 3.67/1.80 } 3.67/1.80 3.67/1.80 while (one == null && two == null); 3.67/1.80 } 3.67/1.80 } 3.67/1.80 3.67/1.80 3.67/1.80 public class Random { 3.67/1.80 static String[] args; 3.67/1.80 static int index = 0; 3.67/1.80 3.67/1.80 public static int random() { 3.67/1.80 String string = args[index]; 3.67/1.80 index++; 3.67/1.80 return string.length(); 3.67/1.80 } 3.67/1.80 } 3.67/1.80 3.67/1.80 3.67/1.80 3.67/1.80 ---------------------------------------- 3.67/1.80 3.67/1.80 (3) JBCToGraph (EQUIVALENT) 3.67/1.80 Constructed TerminationGraph. 3.67/1.80 ---------------------------------------- 3.67/1.80 3.67/1.80 (4) 3.67/1.80 Obligation: 3.67/1.80 Termination Graph based on JBC Program: 3.67/1.80 NullPair.main([Ljava/lang/String;)V: Graph of 130 nodes with 0 SCCs. 3.67/1.80 3.67/1.80 3.67/1.80 3.67/1.80 3.67/1.80 3.67/1.80 ---------------------------------------- 3.67/1.80 3.67/1.80 (5) TerminationGraphToSCCProof (SOUND) 3.67/1.80 Proven termination by absence of SCCs 3.67/1.80 ---------------------------------------- 3.67/1.80 3.67/1.80 (6) 3.67/1.80 TRUE 3.67/1.81 EOF