/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, 97 ms]
(2) JBC problem
(3) JBCToGraph [EQUIVALENT, 289 ms]
(4) JBCTerminationGraph
(5) TerminationGraphToSCCProof [SOUND, 0 ms]
(6) TRUE
----------------------------------------
(0)
Obligation:
need to prove termination of the following program:
public class Div extends Node {
public int length() {
return length();
}
}
public class Internal extends Node {
private Node next;
public Internal(Node next) {
this.next = next;
}
public int length() {
return 1 + next.length();
}
}
public class Nil extends Node {
public int length() {
return 0;
}
}
public abstract class Node {
public abstract int length();
}
/**
* An iteration over a list of Internal nodes ending with
* a terminating node Nil.
*
* All calls terminate.
*
* Julia + BinTerm prove that all calls terminate
*
* This example shows termination in the case of virtual calls
* to length().
*
* @author Fausto Spoto
*/
public class Virtual {
public static void main(String[] args) {
Node d = new Div();
Node n = new Nil();
int l = 28; //Integer.parseInt(args[0]);
while (l-- > 0) n = new Internal(n);
n.length();
}
}
----------------------------------------
(1) BareJBCToJBCProof (EQUIVALENT)
initialized classpath
----------------------------------------
(2)
Obligation:
need to prove termination of the following program:
public class Div extends Node {
public int length() {
return length();
}
}
public class Internal extends Node {
private Node next;
public Internal(Node next) {
this.next = next;
}
public int length() {
return 1 + next.length();
}
}
public class Nil extends Node {
public int length() {
return 0;
}
}
public abstract class Node {
public abstract int length();
}
/**
* An iteration over a list of Internal nodes ending with
* a terminating node Nil.
*
* All calls terminate.
*
* Julia + BinTerm prove that all calls terminate
*
* This example shows termination in the case of virtual calls
* to length().
*
* @author Fausto Spoto
*/
public class Virtual {
public static void main(String[] args) {
Node d = new Div();
Node n = new Nil();
int l = 28; //Integer.parseInt(args[0]);
while (l-- > 0) n = new Internal(n);
n.length();
}
}
----------------------------------------
(3) JBCToGraph (EQUIVALENT)
Constructed TerminationGraph.
----------------------------------------
(4)
Obligation:
Termination Graph based on JBC Program:
Virtual.main([Ljava/lang/String;)V: Graph of 704 nodes with 0 SCCs.
----------------------------------------
(5) TerminationGraphToSCCProof (SOUND)
Proven termination by absence of SCCs
----------------------------------------
(6)
TRUE