| # gndx = # ndx3, ndx1 = nd + ndx0, transaction-prefix(ndx3 + ndx1, gndx) ⊦ ndx1 = [], ∃ ndx. ndx3 + ndx1 = ndx + ndx0 ∧ (ndx0 = [] → transaction(ndx3 + ndx1, gndx + mkgnode(nd, jmaxino0 + # ndx3, ndx3 = [], # ndx1 = 1) ')) ∧ ( ndx0 ≠ [] → transaction-prefix(ndx3 + ndx1, gndx + mkgnode(nd, jmaxino0 + # ndx3, ndx3 = [], # ndx1 = 1) ') ∧ # ndx3 + 1 = # ndx) ∧ ndx ≠ [] |
# gndx = # ndx3, transaction-prefix(ndx3 + nd ' + ndx0, gndx) ⊦ (ndx0 = [] → transaction(ndx3 + nd ', gndx + mkgnode(nd, jmaxino0 + # ndx3, ndx3 = [], true) ')) ∧ (ndx0 ≠ [] → transaction-prefix(ndx3 + nd ' + ndx0, gndx + mkgnode(nd, jmaxino0 + # ndx3, ndx3 = [], false) '))
Used simplifier rules: ⊦ ndx + nd ' ≠ []; (s)% ⊦ m + n = m + n0 ↔ n = n0; (s)% ⊦ #(ndx + ndx0) = # ndx + # ndx0; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ # ndx = 0 ↔ ndx = []; (s)% ⊦ 1 = m + 1 ↔ m = 0; (s)% ⊦ m +1 = m + 1; (s)% ⊦ #(nd ' + ndx) = (# ndx)+1; (s)% ⊦ # nd ' = 0 +1; (s)% ⊦ ndx + [] = ndx; (s)% ⊦ ndx + ndx0 = ndx1 + ndx0 ↔ ndx = ndx1; (s)%a: ⊦ (ndx + ndx0) + ndx1 = ndx + ndx0 + ndx1; from specification list[node-list]% ⊦ nd ' + ndx ≠ []; (s)% ⊦ nd + ndx = nd ' + ndx; (s)