| log1.head < # lpt1, valid-indices(lpt1, log1), valid-indices(lpt1, log), valid-indices(replay-log(lpt1, log), log1), valid-indices(replay-log(lpt1, log), log) ⊦ log1 = [], dups(log1), dups(log), dups(log + log1), ∃ log0. log + log1 = log0 + log1.tail ∧ replay-log(lpt1, log) [log1.head, mklp(replay-log(lpt1, log)[log1.head].ref-size, LEB_SIZE, LP_GROUP_NODES, replay-log(lpt1, log)[log1.head].gcheapidx) ] = replay-log(lpt1, log0) |
Used simplifier rules: ⊦ n + nx = n ' + nx; (s)% ⊦ n ' + nx ≠ []; (s)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]%⊦ valid-indices(lpt, nx0 + nx1) ↔ valid-indices(lpt, nx0) ∧ valid-indices(lpt, nx1); (ws)% ⊦ valid-indices(lpt, n ') ↔ n < # lpt; (s)% ⊦ # replay-log(lpt, nx) = # lpt; (s)% ⊦ dups(n ' + nx) ↔ dups(nx) ∨ n ∈ nx; (ws)% ⊦ dups(nx + n ' + nx0) ↔ n ∈ nx ∨ n ∈ nx0 ∨ dups(nx + nx0); (ws)% ⊦ nx + nx0 = nx1 + nx0 ↔ nx = nx1; (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m < n → (n ≤ m ↔ false); (s)%n < # lpt ⊦ ¬ n ∈ nx → replay-log(lpt, nx)[n] = lpt[n]; (s)%⊦ ¬ n ∈ nx → replay-log(lpt, nx + n ') = replay-log(lpt, nx) [n, mklp (lpt[n].ref-size, LEB_SIZE, LP_GROUP_NODES, lpt[n].gcheapidx) ]; (s)%nx ≠ [] ⊦ n = nx.head ∧ nx0 = nx.tail ↔ nx = n + nx0; (elim) Used terms: log1, n, nx