| false ∨ n = N +1 ∧ N = N'' +1 until last, Ry(m)(s0, S) ∧ (GInv(s0) → GInv(S)) → (Ry(m)(S', S'') ∧ (GInv(S') → GInv(S''))) -+-> (last ⊃ Po(m)(S);Gr(m)(S, S') ∧ ¬ blocked ∧ (GInv(S) → GInv(S'))), INDHYP-nat(n), GInv(s), ¬ false, boolvar → s = s0 ∧ n = n0, (false ⊃ Po(m)(s);Gr(m)(s, s0) ∧ ¬ boolvar ∧ (GInv(s) → GInv(s0))) ⊦ (false ⊃ Po(m)(s) ∧ GInv(s);Gr(m)(s, s0) ∧ ¬ boolvar ∧ (GInv(s) → GInv(s0))) ∧ ( Ry(m)(s0, S) ∧ (GInv(s0) → GInv(S)) → (Ry(m)(S', S'') ∧ (GInv(S') → GInv(S''))) -+-> (last ⊃ Po(m)(S) ∧ GInv(S);Gr(m)(S, S') ∧ ¬ blocked ∧ (GInv(S) → GInv(S')))) |
(Ry(m)(S', S'') ∧ (GInv(S') → GInv(S''))) -+-> (last ⊃ Po(m)(S);Gr(m)(S, S') ∧ ¬ blocked ∧ (GInv(S) → GInv(S'))), N = N'' + 1 until last, INDHYP-nat(N + 1), GInv(S), Ry(m)(s0, S), GInv(s0), Gr(m)(s, s0), GInv(s) ⊦ (Ry(m)(S', S'') ∧ (GInv(S') → GInv(S''))) -+-> (last ⊃ Po(m)(S) ∧ GInv(S);Gr(m)(S, S') ∧ ¬ blocked ∧ (GInv(S) → GInv(S')))
Used simplifier rules: succ: ⊦ m +1 = m + 1; from specification nat-basic2