3.84/1.85 YES 3.84/1.86 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar 3.84/1.86 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 3.84/1.86 3.84/1.86 3.84/1.86 termination of the given Bare JBC problem could be proven: 3.84/1.86 3.84/1.86 (0) Bare JBC problem 3.84/1.86 (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] 3.84/1.86 (2) JBC problem 3.84/1.86 (3) JBCToGraph [EQUIVALENT, 147 ms] 3.84/1.86 (4) JBCTerminationGraph 3.84/1.86 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 3.84/1.86 (6) TRUE 3.84/1.86 3.84/1.86 3.84/1.86 ---------------------------------------- 3.84/1.86 3.84/1.86 (0) 3.84/1.86 Obligation: 3.84/1.86 need to prove termination of the following program: 3.84/1.86 package example_4; 3.84/1.86 3.84/1.86 public class Examples { 3.84/1.86 3.84/1.86 int f = 10; 3.84/1.86 3.84/1.86 // usual getter and setter methods 3.84/1.86 public int getF() { 3.84/1.86 return f; 3.84/1.86 } 3.84/1.86 3.84/1.86 public void setF(int f) { 3.84/1.86 this.f = f; 3.84/1.86 } 3.84/1.86 3.84/1.86 } 3.84/1.86 3.84/1.86 3.84/1.86 package example_4; 3.84/1.86 3.84/1.86 /** 3.84/1.86 * @costaContext fields/Examples 3.84/1.86 * 3.84/1.86 */ 3.84/1.86 public class ExamplesCont { 3.84/1.86 3.84/1.86 Examples e; 3.84/1.86 3.84/1.86 public ExamplesCont() { 3.84/1.86 e = new Examples(); 3.84/1.86 } 3.84/1.86 } 3.84/1.86 3.84/1.86 3.84/1.86 package example_4; 3.84/1.86 3.84/1.86 /** 3.84/1.86 * @costaContext example_4/Examples 3.84/1.86 * 3.84/1.86 */ 3.84/1.86 public class Test { 3.84/1.86 public void exampleMethods(ExamplesCont x, Examples y) { 3.84/1.86 int i = 0; 3.84/1.86 3.84/1.86 while (x.e.getF() > 0) { 3.84/1.86 i += y.getF(); 3.84/1.86 x.e.setF(x.e.getF()-1); 3.84/1.86 } 3.84/1.86 } 3.84/1.86 3.84/1.86 public static void main(String[] args) { 3.84/1.86 Test o = new Test(); 3.84/1.86 ExamplesCont x = new ExamplesCont(); 3.84/1.86 Examples y = new Examples(); 3.84/1.86 o.exampleMethods(x,y); 3.84/1.86 } 3.84/1.86 } 3.84/1.86 3.84/1.86 3.84/1.86 3.84/1.86 ---------------------------------------- 3.84/1.86 3.84/1.86 (1) BareJBCToJBCProof (EQUIVALENT) 3.84/1.86 initialized classpath 3.84/1.86 ---------------------------------------- 3.84/1.86 3.84/1.86 (2) 3.84/1.86 Obligation: 3.84/1.86 need to prove termination of the following program: 3.84/1.86 package example_4; 3.84/1.86 3.84/1.86 public class Examples { 3.84/1.86 3.84/1.86 int f = 10; 3.84/1.86 3.84/1.86 // usual getter and setter methods 3.84/1.86 public int getF() { 3.84/1.86 return f; 3.84/1.86 } 3.84/1.86 3.84/1.86 public void setF(int f) { 3.84/1.86 this.f = f; 3.84/1.86 } 3.84/1.86 3.84/1.86 } 3.84/1.86 3.84/1.86 3.84/1.86 package example_4; 3.84/1.86 3.84/1.86 /** 3.84/1.86 * @costaContext fields/Examples 3.84/1.86 * 3.84/1.86 */ 3.84/1.86 public class ExamplesCont { 3.84/1.86 3.84/1.86 Examples e; 3.84/1.86 3.84/1.86 public ExamplesCont() { 3.84/1.86 e = new Examples(); 3.84/1.86 } 3.84/1.86 } 3.84/1.86 3.84/1.86 3.84/1.86 package example_4; 3.84/1.86 3.84/1.86 /** 3.84/1.86 * @costaContext example_4/Examples 3.84/1.86 * 3.84/1.86 */ 3.84/1.86 public class Test { 3.84/1.86 public void exampleMethods(ExamplesCont x, Examples y) { 3.84/1.86 int i = 0; 3.84/1.86 3.84/1.86 while (x.e.getF() > 0) { 3.84/1.86 i += y.getF(); 3.84/1.86 x.e.setF(x.e.getF()-1); 3.84/1.86 } 3.84/1.86 } 3.84/1.86 3.84/1.86 public static void main(String[] args) { 3.84/1.86 Test o = new Test(); 3.84/1.86 ExamplesCont x = new ExamplesCont(); 3.84/1.86 Examples y = new Examples(); 3.84/1.86 o.exampleMethods(x,y); 3.84/1.86 } 3.84/1.86 } 3.84/1.86 3.84/1.86 3.84/1.86 3.84/1.86 ---------------------------------------- 3.84/1.86 3.84/1.86 (3) JBCToGraph (EQUIVALENT) 3.84/1.86 Constructed TerminationGraph. 3.84/1.86 ---------------------------------------- 3.84/1.86 3.84/1.86 (4) 3.84/1.86 Obligation: 3.84/1.86 Termination Graph based on JBC Program: 3.84/1.86 example_4.Test.main([Ljava/lang/String;)V: Graph of 361 nodes with 0 SCCs. 3.84/1.86 3.84/1.86 3.84/1.86 3.84/1.86 3.84/1.86 3.84/1.86 ---------------------------------------- 3.84/1.86 3.84/1.86 (5) TerminationGraphToSCCProof (SOUND) 3.84/1.86 Proven termination by absence of SCCs 3.84/1.86 ---------------------------------------- 3.84/1.86 3.84/1.86 (6) 3.84/1.86 TRUE 4.02/1.89 EOF