| awbuf-inv(fill(mkavolume(m3), unmapped), nobuffer), freelist-cons(fill(mklparray(m3), mklp(0, 0, LP_FREE, 0)), freelist), synced(fill(mkavolume(m3), unmapped)) ⊦ flash-lpt-cons(fill(mklparray(m3), mklp(0, 0, LP_FREE, 0)), ∅, ∅) |
⊦ flash-lpt-cons(lpt0, istore0, gstore0) ↔ lpt-free-unref(lpt0) ∧ (∀ n. n < # lpt0 → (n ∈ istore0 ↔ lpt0[n].flags = LP_INDEX_NODES ∧ lpt0[n].ref-size ≠ 0) ∧ (n ∈ gstore0 ↔ lpt0[n].flags = LP_GROUP_NODES ∧ lpt0[n].ref-size ≠ 0) ∧ (n ∈ istore0 → lpt0[n].ref-size = istore0[n].ref-size) ∧ (n ∈ gstore0 → lpt0[n].ref-size = gstore0[n].ref-size) ∧ (lpt0[n].flags = LP_FREE → lpt0[n].ref-size = 0))
awbuf-inv(fill(mkavolume(m3), unmapped), nobuffer), freelist-cons(fill(mklparray(m3), mklp(0, 0, LP_FREE, 0)), freelist), synced(fill(mkavolume(m3), unmapped)) ⊦ lpt-free-unref(fill(mklparray(m3), mklp(0, 0, LP_FREE, 0))) ∧ (∀ n. n < # fill(mklparray(m3), mklp(0, 0, LP_FREE, 0)) → ( n ∈ ∅ ↔ fill(mklparray(m3), mklp(0, 0, LP_FREE, 0))[n].flags = LP_INDEX_NODES ∧ fill(mklparray(m3), mklp(0, 0, LP_FREE, 0))[n].ref-size ≠ 0) ∧ ( n ∈ ∅ ↔ fill(mklparray(m3), mklp(0, 0, LP_FREE, 0))[n].flags = LP_GROUP_NODES ∧ fill(mklparray(m3), mklp(0, 0, LP_FREE, 0))[n].ref-size ≠ 0) ∧ (n ∈ ∅ → fill(mklparray(m3), mklp(0, 0, LP_FREE, 0))[n].ref-size = (∅)[n].ref-size) ∧ (n ∈ ∅ → fill(mklparray(m3), mklp(0, 0, LP_FREE, 0))[n].ref-size = (∅)[n].ref-size) ∧ (fill(mklparray(m3), mklp(0, 0, LP_FREE, 0))[n].flags = LP_FREE → fill(mklparray(m3), mklp(0, 0, LP_FREE, 0))[n].ref-size = 0))
Used terms: ∅, ∅, fill(mklparray(m3), mklp(0, 0, LP_FREE, 0))