3.83/1.82 YES 3.83/1.83 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar 3.83/1.83 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 3.83/1.83 3.83/1.83 3.83/1.83 termination of the given Bare JBC problem could be proven: 3.83/1.83 3.83/1.83 (0) Bare JBC problem 3.83/1.83 (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] 3.83/1.83 (2) JBC problem 3.83/1.83 (3) JBCToGraph [EQUIVALENT, 101 ms] 3.83/1.83 (4) JBCTerminationGraph 3.83/1.83 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 3.83/1.83 (6) TRUE 3.83/1.83 3.83/1.83 3.83/1.83 ---------------------------------------- 3.83/1.83 3.83/1.83 (0) 3.83/1.83 Obligation: 3.83/1.83 need to prove termination of the following program: 3.83/1.83 public class Sharing { 3.83/1.83 3.83/1.83 private Sharing next; 3.83/1.83 3.83/1.83 public Sharing(Sharing next) { 3.83/1.83 this.next = next; 3.83/1.83 } 3.83/1.83 3.83/1.83 public void iter(Sharing other) { 3.83/1.83 Sharing cursor = this; 3.83/1.83 3.83/1.83 while (cursor != null) { 3.83/1.83 other.next = new Sharing(null); 3.83/1.83 other = other.next; 3.83/1.83 3.83/1.83 cursor = cursor.next; 3.83/1.83 } 3.83/1.83 } 3.83/1.83 3.83/1.83 public static void main(String[] args) { 3.83/1.83 Sharing sh1 = new Sharing(new Sharing(new Sharing(null))); 3.83/1.83 Sharing sh2 = new Sharing(new Sharing(null)); 3.83/1.83 sh2.next.next = sh2; 3.83/1.83 sh1.iter(sh2); 3.83/1.83 } 3.83/1.83 } 3.83/1.83 3.83/1.83 3.83/1.83 ---------------------------------------- 3.83/1.83 3.83/1.83 (1) BareJBCToJBCProof (EQUIVALENT) 3.83/1.83 initialized classpath 3.83/1.83 ---------------------------------------- 3.83/1.83 3.83/1.83 (2) 3.83/1.83 Obligation: 3.83/1.83 need to prove termination of the following program: 3.83/1.83 public class Sharing { 3.83/1.83 3.83/1.83 private Sharing next; 3.83/1.83 3.83/1.83 public Sharing(Sharing next) { 3.83/1.83 this.next = next; 3.83/1.83 } 3.83/1.83 3.83/1.83 public void iter(Sharing other) { 3.83/1.83 Sharing cursor = this; 3.83/1.83 3.83/1.83 while (cursor != null) { 3.83/1.83 other.next = new Sharing(null); 3.83/1.83 other = other.next; 3.83/1.83 3.83/1.83 cursor = cursor.next; 3.83/1.83 } 3.83/1.83 } 3.83/1.83 3.83/1.83 public static void main(String[] args) { 3.83/1.83 Sharing sh1 = new Sharing(new Sharing(new Sharing(null))); 3.83/1.83 Sharing sh2 = new Sharing(new Sharing(null)); 3.83/1.83 sh2.next.next = sh2; 3.83/1.83 sh1.iter(sh2); 3.83/1.83 } 3.83/1.83 } 3.83/1.83 3.83/1.83 3.83/1.83 ---------------------------------------- 3.83/1.83 3.83/1.83 (3) JBCToGraph (EQUIVALENT) 3.83/1.83 Constructed TerminationGraph. 3.83/1.83 ---------------------------------------- 3.83/1.83 3.83/1.83 (4) 3.83/1.83 Obligation: 3.83/1.83 Termination Graph based on JBC Program: 3.83/1.83 Sharing.main([Ljava/lang/String;)V: Graph of 126 nodes with 0 SCCs. 3.83/1.83 3.83/1.83 3.83/1.83 3.83/1.83 3.83/1.83 3.83/1.83 ---------------------------------------- 3.83/1.83 3.83/1.83 (5) TerminationGraphToSCCProof (SOUND) 3.83/1.83 Proven termination by absence of SCCs 3.83/1.83 ---------------------------------------- 3.83/1.83 3.83/1.83 (6) 3.83/1.83 TRUE 3.94/1.86 EOF