| \A ∀ Act, CS, n, Inp, Outp. CInitto(m0, Act, CS) ∧ CInv(n, Act, CS) ∧ m0 ≤ n → [: Act, Inp, CS, Outp | CRelyto(m0, Act', CS', Act'', CS'') , CGuarto(m0, Act, CS, Act', CS') , CInv(n, Act, CS) , CSPAWN(m0; Act, Inp, CS, Outp) ] CInv(n, Act, CS), n ≠ 0, CInitto(m0 + 1, Act, CS), CInv(n, Act, CS), m0 < n, n0 = m0 + 1, n0 ≠ 0 ⊦ [: Act, Inp, CS, Outp | CRelyto(m0 + 1, Act', CS', Act'', CS'') , CGuarto(m0 + 1, Act, CS, Act', CS') , CInv(n, Act, CS) , CSEQ(n0; Act, Inp, CS, Outp) ∥ CSPAWN(n0 - 1; Act, Inp, CS, Outp) ] CInv(n, Act, CS) |
\A ∀ Act, CS, n, Inp, Outp. CInitto(m0, Act, CS) ∧ CInv(n, Act, CS) ∧ m0 ≤ n → [: Act, Inp, CS, Outp | CRelyto(m0, Act', CS', Act'', CS'') , CGuarto(m0, Act, CS, Act', CS') , CInv(n, Act, CS) , CSPAWN(m0; Act, Inp, CS, Outp) ] CInv(n, Act, CS), n ≠ 0, CInv(n, Act, CS), CInitto(m0 + 1, Act, CS), m0 < n ⊦ [: Act, Inp, CS, Outp | CRelyto(m0 + 1, Act', CS', Act'', CS'') , CGuarto(m0 + 1, Act, CS, Act', CS') , CInv(n, Act, CS) , CSEQ(m0 + 1; Act, Inp, CS, Outp) ∥ CSPAWN(m0; Act, Inp, CS, Outp) ] CInv(n, Act, CS)
Used simplifier rules: succ-01: ⊦ m + 1 ≤ n ↔ m < n; from specification nat%eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat%add-base: ⊦ n + 0 = n; from specification nat-basic2%add-01: ⊦ n ≤ m → m + n0 - n = (m - n) + n0; from specification nat%c: ⊦ m + n = n + m; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%oz: ⊦ m + 1 ≠ 0; from specification nat-basic2