(0) Obligation:
Need to prove time_complexity of the following program:
/**
* A loop using the <tt>continue</tt> statement.
*
* All calls terminate.
*
* Julia + BinTerm prove that all calls terminate
*
* @author <A HREF="mailto:fausto.spoto@univr.it">Fausto Spoto</A>
*/
public class Continue1 {
public static void main(String[] args) {
int i = 0;
while (i < 20) {
i++;
if (i <= 10) continue;
}
}
}
(1) JBCToGraph (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Constructed TerminationGraph.
(2) Obligation:
Termination Graph based on JBC Program:
Continue1.main([Ljava/lang/String;)V: Graph of 53 nodes with 1 SCC.
(3) TerminationGraphToComplexityProof (BOTH CONCRETE BOUNDS(ID, ADD(2)) transformation)
Extracted set of 51 edges for the analysis of TIME complexity. Dropped leaves.
(4) Obligation:
Set of 51 edges based on JBC Program.
Performed SCC analyses:
- Used field analysis yielded the following read fields:
Considered paths: all paths from start
(5) TerminationGraphToComplexityProof (BOTH CONCRETE BOUNDS(ID, ADD(2)) transformation)
Extracted set of 52 edges for the analysis of TIME complexity. Kept leaves.
(6) Obligation:
Set of 52 edges based on JBC Program.
Performed SCC analyses:
- Used field analysis yielded the following read fields:
Considered paths: nonterm paths and paths from start to sinks
(7) JBCToGraph (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Constructed TerminationGraph.
(8) Obligation:
Termination Graph based on JBC Program:
Continue1.main([Ljava/lang/String;)V: Graph of 180 nodes with 0 SCCs.
(9) TerminationGraphToComplexityProof (EQUIVALENT transformation)
Proven constant complexity by absence of SCCs and edges with non-constant weight
(10) BOUNDS(CONSTANT, 171)