3.95/1.86 YES 3.95/1.87 proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar 3.95/1.87 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 3.95/1.87 3.95/1.87 3.95/1.87 termination of the given Bare JBC problem could be proven: 3.95/1.87 3.95/1.87 (0) Bare JBC problem 3.95/1.87 (1) BareJBCToJBCProof [EQUIVALENT, 106 ms] 3.95/1.87 (2) JBC problem 3.95/1.87 (3) JBCToGraph [EQUIVALENT, 122 ms] 3.95/1.87 (4) JBCTerminationGraph 3.95/1.87 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 3.95/1.87 (6) TRUE 3.95/1.87 3.95/1.87 3.95/1.87 ---------------------------------------- 3.95/1.87 3.95/1.87 (0) 3.95/1.87 Obligation: 3.95/1.87 need to prove termination of the following program: 3.95/1.87 public class CyclicPair2 { 3.95/1.87 CyclicPair2 next; 3.95/1.87 3.95/1.87 public static void main(String[] args) { 3.95/1.87 Random.args = args; 3.95/1.87 CyclicPair2 one = new CyclicPair2(); 3.95/1.87 CyclicPair2 two = new CyclicPair2(); 3.95/1.87 int rand = Random.random(); 3.95/1.87 if (rand != 0) { 3.95/1.87 one.next = two; 3.95/1.87 two.next = one; 3.95/1.87 } else { 3.95/1.87 one.next = two; 3.95/1.87 } 3.95/1.87 3.95/1.87 if (rand == 0) { 3.95/1.87 one.run(); 3.95/1.87 } 3.95/1.87 } 3.95/1.87 3.95/1.87 public void run() { 3.95/1.87 CyclicPair2 current = this; 3.95/1.87 while (current != null) 3.95/1.87 current = current.next; 3.95/1.87 } 3.95/1.87 } 3.95/1.87 3.95/1.87 3.95/1.87 public class Random { 3.95/1.87 static String[] args; 3.95/1.87 static int index = 0; 3.95/1.87 3.95/1.87 public static int random() { 3.95/1.87 String string = args[index]; 3.95/1.87 index++; 3.95/1.87 return string.length(); 3.95/1.87 } 3.95/1.87 } 3.95/1.87 3.95/1.87 3.95/1.87 3.95/1.87 ---------------------------------------- 3.95/1.87 3.95/1.87 (1) BareJBCToJBCProof (EQUIVALENT) 3.95/1.87 initialized classpath 3.95/1.87 ---------------------------------------- 3.95/1.87 3.95/1.87 (2) 3.95/1.87 Obligation: 3.95/1.87 need to prove termination of the following program: 3.95/1.87 public class CyclicPair2 { 3.95/1.87 CyclicPair2 next; 3.95/1.87 3.95/1.87 public static void main(String[] args) { 3.95/1.87 Random.args = args; 3.95/1.87 CyclicPair2 one = new CyclicPair2(); 3.95/1.87 CyclicPair2 two = new CyclicPair2(); 3.95/1.87 int rand = Random.random(); 3.95/1.87 if (rand != 0) { 3.95/1.87 one.next = two; 3.95/1.87 two.next = one; 3.95/1.87 } else { 3.95/1.87 one.next = two; 3.95/1.87 } 3.95/1.87 3.95/1.87 if (rand == 0) { 3.95/1.87 one.run(); 3.95/1.87 } 3.95/1.87 } 3.95/1.87 3.95/1.87 public void run() { 3.95/1.87 CyclicPair2 current = this; 3.95/1.87 while (current != null) 3.95/1.87 current = current.next; 3.95/1.87 } 3.95/1.87 } 3.95/1.87 3.95/1.87 3.95/1.87 public class Random { 3.95/1.87 static String[] args; 3.95/1.87 static int index = 0; 3.95/1.87 3.95/1.87 public static int random() { 3.95/1.87 String string = args[index]; 3.95/1.87 index++; 3.95/1.87 return string.length(); 3.95/1.87 } 3.95/1.87 } 3.95/1.87 3.95/1.87 3.95/1.87 3.95/1.87 ---------------------------------------- 3.95/1.87 3.95/1.87 (3) JBCToGraph (EQUIVALENT) 3.95/1.87 Constructed TerminationGraph. 3.95/1.87 ---------------------------------------- 3.95/1.87 3.95/1.87 (4) 3.95/1.87 Obligation: 3.95/1.87 Termination Graph based on JBC Program: 3.95/1.87 CyclicPair2.main([Ljava/lang/String;)V: Graph of 152 nodes with 0 SCCs. 3.95/1.87 3.95/1.87 3.95/1.87 3.95/1.87 3.95/1.87 3.95/1.87 ---------------------------------------- 3.95/1.87 3.95/1.87 (5) TerminationGraphToSCCProof (SOUND) 3.95/1.87 Proven termination by absence of SCCs 3.95/1.87 ---------------------------------------- 3.95/1.87 3.95/1.87 (6) 3.95/1.87 TRUE 4.17/2.35 EOF