| len < # zbrar ⊦ look(bv, key, adr, key-range(zbrar, scan(key, zbrar, 0, len), len + 1, ri)) ↔ look(bv, key, adr, ri) |
len < # zbrar ⊦ (bv ↔ key ∈ key-range(zbrar, scan(key, zbrar, 0, len), len + 1, ri)) ∧ (key ∈ key-range(zbrar, scan(key, zbrar, 0, len), len + 1, ri) → adr = key-range(zbrar, scan(key, zbrar, 0, len), len + 1, ri)[key]) ↔ (bv ↔ key ∈ ri) ∧ (key ∈ ri → adr = ri[key])
Used simplifier rules: look: ⊦ look(bv, key, adr, ri) ↔ (bv ↔ key ∈ ri) ∧ (bv → adr = ri[key]);% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic