| n < nused, nused ≤ # zbrar ⊦ look(bv, key, adr, key-range(zbrar, n, nused, ri)) ↔ (key ∈ key-range(zbrar, n, nused, ri) ⊃ look(bv, key, adr, ri);¬ bv) |
n < nused, n < # zbrar, nused ≤ # zbrar, (key ∈ key-range(zbrar, n, nused, ri) ⊃ (bv ↔ key ∈ ri) ∧ adr = ri[key];¬ bv) ⊦ (bv ↔ key ∈ key-range(zbrar, n, nused, ri)) ∧ (key ∈ key-range(zbrar, n, nused, ri) → adr = ri[key])
Used simplifier rules: look: ⊦ look(bv, key, adr, ri) ↔ (bv ↔ key ∈ ri) ∧ (bv → adr = ri[key]);%at-range: ⊦ key ∈ key-range(zbrar, n, nused, ri) ∧ n < nused ∧ nused ≤ # zbrar → key-range(zbrar, n, nused, ri)[key] = ri[key];%in-keyrange-in-ri: n < nused, nused ≤ # zbrar ⊦ key ∈ key-range(zbrar, n, nused, ri) → key ∈ ri;% ⊦ m < n → n ≠ 0; (s)%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic