| length_of_P = 2, P = pe(3, 5, 2) ', Pdone0 = pe(0, 0, 0) ', Pnew0 = pe(1, 2, 0) ', F = (∅)[0, 0][1, 0][2, 0][3, 1][4, 1][5, 1][1, 2, 2], p = P.head, P0 = P.tail ⊦ ⟨if p.count ≠ 0 ∧ p.first + p.count ≤ p.last then Pdone0 := Pdone0 + pe(p.first, p.first + (p.count - 1), 0) ', Pnew0 := Pnew0 + pe(p.first + p.count, p.last, 0) ', F := F[p.first + p.count, p.last, length_of_P + # Pnew0] else Pdone0 := Pdone0 + p '⟩ ⟨while P0 ≠ [] do let p = P0.head in {P0 := P0.tail; if p.count ≠ 0 ∧ p.first + p.count ≤ p.last then Pdone0 := Pdone0 + pe(p.first, p.first + (p.count - 1), 0) ', Pnew0 := Pnew0 + pe(p.first + p.count, p.last, 0) ', F := F[p.first + p.count, p.last, length_of_P + # Pnew0] else Pdone0 := Pdone0 + p '}⟩ ⟨P0 := Pdone0 + Pnew0⟩ ( P0 = pe(0, 0, 0) ' + pe(3, 4, 0) ' + pe(1, 2, 0) ' + pe(5, 5, 0) ' ∧ F = (∅)[0, 0][1, 2][2, 2][3, 1][4, 1][5, 3]) |
length_of_P = 2, P = pe(3, 5, 2) ', Pdone0 = pe(0, 0, 0) ', Pnew0 = pe(1, 2, 0) ', F = (∅)[0, 0][1, 0][2, 0][3, 1][4, 1][5, 1][1, 2, 2], p = P.head, P0 = P.tail ⊦ ⟨Pdone0 := Pdone0 + pe(p.first, p.first + (p.count - 1), 0) ', Pnew0 := Pnew0 + pe(p.first + p.count, p.last, 0) ', F := F[p.first + p.count, p.last, length_of_P + # Pnew0]⟩ ⟨while P0 ≠ [] do let p = P0.head in {P0 := P0.tail; if p.count ≠ 0 ∧ p.first + p.count ≤ p.last then Pdone0 := Pdone0 + pe(p.first, p.first + (p.count - 1), 0) ', Pnew0 := Pnew0 + pe(p.first + p.count, p.last, 0) ', F := F[p.first + p.count, p.last, length_of_P + # Pnew0] else Pdone0 := Pdone0 + p '}⟩ ⟨P0 := Pdone0 + Pnew0⟩ ( P0 = pe(0, 0, 0) ' + pe(3, 4, 0) ' + pe(1, 2, 0) ' + pe(5, 5, 0) ' ∧ F = (∅)[0, 0][1, 2][2, 2][3, 1][4, 1][5, 3])
[Concretesimprules((Csimpnamedseq(list,partition,first, ⊦ p '.head = p) Csimpnamedseq(partelem,,sel-05, ⊦ pe(m, m0, m1).count = m1) Csimpnamedseq(partelem,,sel-03, ⊦ pe(m, m0, m1).first = m) Csimpnamedseq(nat-basic2,,a, ⊦ (m + n0) + n1 = m + n0 + n1) Csimpnamedseq(nat-basic2,,c, ⊦ m + n = n + m) Csimpnamedseq(partelem,,sel-04, ⊦ pe(m, m0, m1).last = m0)))]