/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.jar /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/benchmark/theBenchmark.jar # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 119 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) TRUE ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class A { public boolean hasSuperType() { return false; } public A getSuperType() { return null; } } public class B extends A { public boolean hasSuperType() { return true; } public A getSuperType() { return new A(); } } public class C extends B { public A getSuperType() { return new B(); } } public class TypeSwitch { public static void main(String[] args) { A x = null; switch (args.length) { case 0: x = new A(); break; case 1: x = new B(); break; case 2: x = new C(); break; } while (x.hasSuperType()) { x = x.getSuperType(); } } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class A { public boolean hasSuperType() { return false; } public A getSuperType() { return null; } } public class B extends A { public boolean hasSuperType() { return true; } public A getSuperType() { return new A(); } } public class C extends B { public A getSuperType() { return new B(); } } public class TypeSwitch { public static void main(String[] args) { A x = null; switch (args.length) { case 0: x = new A(); break; case 1: x = new B(); break; case 2: x = new C(); break; } while (x.hasSuperType()) { x = x.getSuperType(); } } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: TypeSwitch.main([Ljava/lang/String;)V: Graph of 137 nodes with 0 SCCs. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Proven termination by absence of SCCs ---------------------------------------- (6) TRUE