| lpt[n] = mklp(n0, n1, LP_GROUP_NODES, n2), n < # avol, abs-gstore(avol, lpt, gstore, ginval) ⊦ abs-gstore(avol, lpt[n, mklp(n0, LEB_SIZE, LP_GROUP_NODES, n2)], gstore, ginval) |
lpt[n] = mklp(n0, n1, LP_GROUP_NODES, n2), n < # avol, ∀ n. (n < # lpt ∧ lpt[n].flags = LP_GROUP_NODES ↔ n ∈ gstore) ∧ (n ∈ gstore ∧ ¬ n ∈ ginval → abs-leb(avol[n], gstore[n], lpt[n])) ∧ (n ∈ gstore → lpt[n].ref-size = gstore[n].ref-size) ⊦ (n3 < # lpt ∧ lpt[n, mklp(n0, LEB_SIZE, LP_GROUP_NODES, n2)][n3].flags = LP_GROUP_NODES ↔ n3 ∈ gstore) ∧ (n3 ∈ gstore ∧ ¬ n3 ∈ ginval → abs-leb(avol[n3], gstore[n3], lpt[n, mklp(n0, LEB_SIZE, LP_GROUP_NODES, n2)][n3])) ∧ (n3 ∈ gstore → lpt[n, mklp(n0, LEB_SIZE, LP_GROUP_NODES, n2)][n3].ref-size = gstore[n3].ref-size)
Used simplifier rules: abs-gstore-def: ⊦ abs-gstore(avol, lpt, gstore, ginval) ↔ (∀ n. (n < # lpt ∧ lpt[n].flags = LP_GROUP_NODES ↔ n ∈ gstore) ∧ ( n ∈ gstore ∧ ¬ n ∈ ginval → abs-leb(avol[n], gstore[n], lpt[n])) ∧ (n ∈ gstore → lpt[n].ref-size = gstore[n].ref-size));% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ # lpt[n, lp] = # lpt; (s)