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