| key-cons(ndx0) ↔ (∀ n. n < # ndx0 → key-cons(ndx0[n].key, ndx0[n])) ⊦ key-cons(nd + ndx0) ↔ (∀ n. n < #(nd + ndx0) → key-cons((nd + ndx0)[n].key, (nd + ndx0)[n])) |
key-cons(ndx0) ↔ (∀ n. n < # ndx0 → key-cons(ndx0[n].key, ndx0[n])) ⊦ key-cons(nd.key, nd) ∧ key-cons(ndx0) ↔ (∀ n. ¬ # ndx0 < n → key-cons((nd ' + ndx0)[n].key, (nd ' + ndx0)[n]))
Used simplifier rules: key-cons-rec: ⊦ key-cons(nd ' + ndx) ↔ ¬ ¬(key-cons(nd.key, nd) ∧ key-cons(ndx));%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m < n + 1 ↔ ¬ n < m; (s)% ⊦ m +1 = m + 1; (s)% ⊦ #(nd ' + ndx) = (# ndx)+1; (s)%a: ⊦ (ndx + ndx0) + ndx1 = ndx + ndx0 + ndx1; from specification list[node-list]% ⊦ nd + ndx = nd ' + ndx; (s)