| P = pe(0, 2, 1) ' + pe(3, 5, 2) ', F = (∅)[0, 0][1, 0][2, 0][3, 1][4, 1][5, 1], length_of_P = # P, Pnew = [], Pdone = [], F1 = F ∧ P1 = P ⊦ ⟨while P1 ≠ [] do let p = P1.head in {P1 := P1.tail; if p.count ≠ 0 ∧ p.first + p.count ≤ p.last then Pdone := Pdone + pe(p.first, p.first + p.count -1, 0), Pnew := Pnew + pe(p.first + p.count, p.last, 0), F1 := F1[p.first + p.count, p.last, length_of_P + # Pnew] else Pdone := Pdone + p}⟩ ⟨P1 := Pdone + Pnew⟩ ( P1 = pe(0, 0, 0) ' + pe(3, 4, 0) ' + pe(1, 2, 0) ' + pe(5, 5, 0) ' ∧ F1 = (∅)[0, 0][1, 2][2, 2][3, 1][4, 1][5, 3]) |
P1 = pe(0, 2, 1) ' + pe(3, 5, 2) ', length_of_P = 2, F1 = (∅)[0, 0][1, 0][2, 0][3, 1][4, 1][5, 1], Pdone = [], Pnew = [] ⊦ ⟨while P1 ≠ [] do let p = P1.head in {P1 := P1.tail; if p.count ≠ 0 ∧ p.first + p.count ≤ p.last then Pdone := Pdone + pe(p.first, p.first + (p.count - 1), 0) ', Pnew := Pnew + pe(p.first + p.count, p.last, 0) ', F1 := F1[p.first + p.count, p.last, length_of_P + # Pnew] else Pdone := Pdone + p '}⟩ ⟨P1 := Pdone + Pnew⟩ ( P1 = pe(0, 0, 0) ' + pe(3, 4, 0) ' + pe(1, 2, 0) ' + pe(5, 5, 0) ' ∧ F1 = (∅)[0, 0][1, 2][2, 2][3, 1][4, 1][5, 3])
[Concretesimprules((Csimpnamedseq(list,partition,in-17, ⊦ p ∈ p0 ' ↔ p = p0) Csimpnamedseq(list,partition,in-append, ⊦ p ∈ P + P0 ↔ ¬ ¬(p ∈ P ∨ p ∈ P0)) Csimpnamedforward(list,partition,in-14, ⊦ p ' + P = P0 → p ∈ P0) Csimpnamedforward(list,partition,in-15, ⊦ P + p ' = P0 → p ∈ P0) Csimpnamedseq(list,partition,Last, ⊦ P + p = P + p ') Csimpnamedseq(nat,,pred-03, ⊦ n -1 = n - 1) Csimpnamedseq(list,partition,a, ⊦ (P + P0) + P1 = P + P0 + P1) Csimpnamedseq(nat-basic2,,c, ⊦ m + n = n + m) Csimpnamedseq(nat-basic2,,a, ⊦ (m + n0) + n1 = m + n0 + n1) Csimpnamedseq(list,partition,len-02, ⊦ # p ' = 0 +1) Csimpnamedseq(list,partition,len, ⊦ #(P + P0) = # P + # P0)))]