Expected Cost | +- [f] | 0 | +- [Program] | i :~ {1 : n} | 0:While(i ≥ 1) | Tick(1) | 1:If(m ≥ 1 + i) Then | i :~ {1 : -1 + i} | Else | i :~ {1 : i + -m} | +- While.step | | | +- [Problem] | | 0:While(i ≥ 1) | | Tick(1) | | 1:If(m ≥ 1 + i) Then | | i :~ {1 : -1 + i} | | Else | | i :~ {1 : i + -m} | | | +- [f] | | 0 | | | +- Expected Cost Body | | | | | `- [1 | ⊤] | | | +- linear-template | | | | | `- 1 + [i | i ≥ 0] + [m | m ≥ 0] | | | +- [Norms] | | [[1 | ⊤],[i | i ≥ 0],[m | m ≥ 0]] | | | +- [Invariant] | | i ≥ 1 ∧ m ≥ 1 ==> [1 | ⊤] + h([1 | ⊤],ite(m ≥ 1 + i,[-1 + i | -1 + i ≥ 0],[i + -m | i + -m ≥ 0]),[m | m ≥ 0]) ≼ h([1 | ⊤],[i | i ≥ 0],[m | m ≥ 0]) | | 1 ≥ 1 + i ∧ m ≥ 1 ==> 0 ≼ h([1 | ⊤],[i | i ≥ 0],[m | m ≥ 0]) | | | `- [m ≥ 1] · [i | i ≥ 0] | `- [m ≥ 1] · [n | n ≥ 0]