| ⊦ allslotsfull(ar, get_hash(e, # ar), n, e, false) ∧ htok(ar) ∧ e ≠ ⊥ ∧ ar[n] = ⊥ → htok(ar[n := e]) |
ar[n] = ⊥, e ≠ ⊥, allslotsfull(ar, get_hash(e, # ar), n, e, false), htok(ar), ¬ htok(ar[n := e]) ⊦
| ar[n] = ⊥, e ≠ ⊥, allslotsfull(ar, get_hash(e, # ar), n, e, false), htok(ar), ¬ htok(ar[n := e]) ⊦ |
ar[n] = ⊥, (ar[n := e])[n0] ≠ ⊥, e ≠ ⊥, n0 < # ar, m < # ar, (n0 < get_hash((ar[n := e])[n0], # ar) ⊃ m < n0 ∨ get_hash((ar[n := e])[n0], # ar) ≤ m ;get_hash((ar[n := e])[n0], # ar) ≤ m ∧ m < n0 ), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥) ⊦ (ar[n := e])[m] ≠ (ar[n := e])[n0] ∧ (ar[n := e])[m] ≠ ⊥
Used simplifier rules: htok-def: ⊦ htok(ar) ↔ (∀ n. n < # ar ∧ ar[n] ≠ ⊥ → allslotsfull(ar, get_hash(ar[n], # ar), n, ar[n], false)); allslotsfull-def: ⊦ allslotsfull(ar, n0, n, e, b) ↔ (∀ m. between(n0, m, n, b) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥); between-def: ⊦ between(n0, m, n, b) ↔ n0 = n ∧ b ∨ (n < n0 ⊃ m < n ∨ n0 ≤ m;n0 ≤ m ∧ m < n); ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ # ar[n := a] = # ar; (s)
| ar[n] = ⊥, (ar[n := e])[n0] ≠ ⊥, e ≠ ⊥, n0 < # ar, m < # ar, (n0 < get_hash((ar[n := e])[n0], # ar) ⊃ m < n0 ∨ get_hash((ar[n := e])[n0], # ar) ≤ m ;get_hash((ar[n := e])[n0], # ar) ≤ m ∧ m < n0 ), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥) ⊦ (ar[n := e])[m] ≠ (ar[n := e])[n0] ∧ (ar[n := e])[m] ≠ ⊥ |
ar[n] = ⊥, (ar[n := e])[n0] ≠ ⊥, e ≠ ⊥, m < # ar, n0 < # ar, n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), (n0 < get_hash((ar[n := e])[n0], # ar) ⊃ m < n0 ∨ get_hash((ar[n := e])[n0], # ar) ≤ m ;get_hash((ar[n := e])[n0], # ar) ≤ m ∧ m < n0 ), ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥ ⊦ (ar[n := e])[m] ≠ (ar[n := e])[n0] ∧ (ar[n := e])[m] ≠ ⊥
Used terms: n0
| ar[n] = ⊥, (ar[n := e])[n0] ≠ ⊥, e ≠ ⊥, m < # ar, n0 < # ar, n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), (n0 < get_hash((ar[n := e])[n0], # ar) ⊃ m < n0 ∨ get_hash((ar[n := e])[n0], # ar) ≤ m ;get_hash((ar[n := e])[n0], # ar) ≤ m ∧ m < n0 ), ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥ ⊦ (ar[n := e])[m] ≠ (ar[n := e])[n0] ∧ (ar[n := e])[m] ≠ ⊥ |
ar[n] = ⊥, (ar[n := e])[n0] ≠ ⊥, e ≠ ⊥, n0 < # ar, m < # ar, ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), (n0 < get_hash((ar[n := e])[n0], # ar) ⊃ m < n0 ∨ get_hash((ar[n := e])[n0], # ar) ≤ m ;get_hash((ar[n := e])[n0], # ar) ≤ m ∧ m < n0 ), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥) ⊦ (ar[n := e])[m] ≠ (ar[n := e])[n0] ∧ (ar[n := e])[m] ≠ ⊥
| ar[n] = ⊥, (ar[n := e])[n0] ≠ ⊥, e ≠ ⊥, n0 < # ar, m < # ar, ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), (n0 < get_hash((ar[n := e])[n0], # ar) ⊃ m < n0 ∨ get_hash((ar[n := e])[n0], # ar) ≤ m ;get_hash((ar[n := e])[n0], # ar) ≤ m ∧ m < n0 ), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥) ⊦ (ar[n := e])[m] ≠ (ar[n := e])[n0] ∧ (ar[n := e])[m] ≠ ⊥ |
ar[n] = ⊥, (ar[n := e])[n0] ≠ ⊥, e ≠ ⊥, m < # ar, n0 < # ar, ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥, (n0 < get_hash((ar[n := e])[n0], # ar) ⊃ m < n0 ∨ get_hash((ar[n := e])[n0], # ar) ≤ m ;get_hash((ar[n := e])[n0], # ar) ≤ m ∧ m < n0 ), ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥ ⊦ (ar[n := e])[m] ≠ (ar[n := e])[n0] ∧ (ar[n := e])[m] ≠ ⊥
Used terms: m
| ar[n] = ⊥, (ar[n := e])[n0] ≠ ⊥, e ≠ ⊥, m < # ar, n0 < # ar, ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥, (n0 < get_hash((ar[n := e])[n0], # ar) ⊃ m < n0 ∨ get_hash((ar[n := e])[n0], # ar) ≤ m ;get_hash((ar[n := e])[n0], # ar) ≤ m ∧ m < n0 ), ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥ ⊦ (ar[n := e])[m] ≠ (ar[n := e])[n0] ∧ (ar[n := e])[m] ≠ ⊥ |
ar[n] = ⊥, (ar[n := e])[n0] ≠ ⊥, e ≠ ⊥, n0 < # ar, m < # ar, ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) → ar[m] ≠ e ∧ ar[m] ≠ ⊥, (n0 < get_hash((ar[n := e])[n0], # ar) ⊃ m < n0 ∨ get_hash((ar[n := e])[n0], # ar) ≤ m ;get_hash((ar[n := e])[n0], # ar) ≤ m ∧ m < n0 ), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥) ⊦ (ar[n := e])[m] ≠ (ar[n := e])[n0] ∧ (ar[n := e])[m] ≠ ⊥
| ar[n] = ⊥, (ar[n := e])[n0] ≠ ⊥, e ≠ ⊥, n0 < # ar, m < # ar, ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) → ar[m] ≠ e ∧ ar[m] ≠ ⊥, (n0 < get_hash((ar[n := e])[n0], # ar) ⊃ m < n0 ∨ get_hash((ar[n := e])[n0], # ar) ≤ m ;get_hash((ar[n := e])[n0], # ar) ≤ m ∧ m < n0 ), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥) ⊦ (ar[n := e])[m] ≠ (ar[n := e])[n0] ∧ (ar[n := e])[m] ≠ ⊥ |
⊦ m ≠ n → (ar[n := a])[m] = ar[m]
ar[n] = ⊥, n0 = n, (ar[n := e])[n0] ≠ ⊥, e ≠ ⊥, m < # ar, n0 < # ar, (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), (n0 < get_hash((ar[n := e])[n0], # ar) ⊃ m < n0 ∨ get_hash((ar[n := e])[n0], # ar) ≤ m ;get_hash((ar[n := e])[n0], # ar) ≤ m ∧ m < n0 ), ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥ ⊦ (ar[n := e])[m] ≠ (ar[n := e])[n0] ∧ (ar[n := e])[m] ≠ ⊥
ar[n] = ⊥, ar[n0] ≠ ⊥, e ≠ ⊥, n0 ≠ n, m < # ar, n0 < # ar, (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0), ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥ ⊦ (ar[n := e])[m] ≠ ar[n0] ∧ (ar[n := e])[m] ≠ ⊥
Used terms: ar, n, e, n0
| ⊦ m ≠ n → (ar[n := a])[m] = ar[m] |
| ar[n] = ⊥, n0 = n, (ar[n := e])[n0] ≠ ⊥, e ≠ ⊥, m < # ar, n0 < # ar, (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), (n0 < get_hash((ar[n := e])[n0], # ar) ⊃ m < n0 ∨ get_hash((ar[n := e])[n0], # ar) ≤ m ;get_hash((ar[n := e])[n0], # ar) ≤ m ∧ m < n0 ), ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥ ⊦ (ar[n := e])[m] ≠ (ar[n := e])[n0] ∧ (ar[n := e])[m] ≠ ⊥ |
ar[n] = ⊥, ar[m] ≠ ⊥, ar[m] ≠ e, e ≠ ⊥, n < # ar, m < # ar, (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥) ⊦ (ar[n := e])[m] ≠ e ∧ (ar[n := e])[m] ≠ ⊥
Used simplifier rules: ⊦ m < # ar → (ar[m := a])[m] = a; (s)
| ar[n] = ⊥, ar[m] ≠ ⊥, ar[m] ≠ e, e ≠ ⊥, n < # ar, m < # ar, (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥) ⊦ (ar[n := e])[m] ≠ e ∧ (ar[n := e])[m] ≠ ⊥ |
⊦ m ≠ n → (ar[n := a])[m] = ar[m]
Used terms: ar, n, e, m
| ⊦ m ≠ n → (ar[n := a])[m] = ar[m] |
| ar[n] = ⊥, ar[n0] ≠ ⊥, e ≠ ⊥, n0 ≠ n, m < # ar, n0 < # ar, (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0), ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥ ⊦ (ar[n := e])[m] ≠ ar[n0] ∧ (ar[n := e])[m] ≠ ⊥ |
ar[n] = ⊥, ar[n0] ≠ ⊥, e ≠ ⊥, n0 ≠ n, n0 < # ar, m < # ar, (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) → ar[m] ≠ e ∧ ar[m] ≠ ⊥, (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), ∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥ ⊦ (ar[n := e])[m] ≠ ar[n0] ∧ (ar[n := e])[m] ≠ ⊥
| ar[n] = ⊥, ar[n0] ≠ ⊥, e ≠ ⊥, n0 ≠ n, n0 < # ar, m < # ar, (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) → ar[m] ≠ e ∧ ar[m] ≠ ⊥, (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), ∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥ ⊦ (ar[n := e])[m] ≠ ar[n0] ∧ (ar[n := e])[m] ≠ ⊥ |
ar[n] = ⊥, ar[n0] ≠ ⊥, e ≠ ⊥, n0 ≠ n, m < # ar, n0 < # ar, (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) → ar[m] ≠ e ∧ ar[m] ≠ ⊥, (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥, (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0), ∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥, ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥ ⊦ (ar[n := e])[m] ≠ ar[n0] ∧ (ar[n := e])[m] ≠ ⊥
Used terms: m
| ar[n] = ⊥, ar[n0] ≠ ⊥, e ≠ ⊥, n0 ≠ n, m < # ar, n0 < # ar, (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) → ar[m] ≠ e ∧ ar[m] ≠ ⊥, (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥, (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0), ∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥, ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥ ⊦ (ar[n := e])[m] ≠ ar[n0] ∧ (ar[n := e])[m] ≠ ⊥ |
ar[n] = ⊥, ar[n0] ≠ ⊥, ar[m] ≠ ⊥, ar[m] ≠ ar[n0], e ≠ ⊥, n0 ≠ n, n0 < # ar, m < # ar, (n < get_hash(ar[m], # ar) ⊃ m < n ∨ get_hash(ar[m], # ar) ≤ m;get_hash(ar[m], # ar) ≤ m ∧ m < n) → ar[m] ≠ e, (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), ∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥ ⊦ (ar[n := e])[m] ≠ ar[n0] ∧ (ar[n := e])[m] ≠ ⊥
| ar[n] = ⊥, ar[n0] ≠ ⊥, ar[m] ≠ ⊥, ar[m] ≠ ar[n0], e ≠ ⊥, n0 ≠ n, n0 < # ar, m < # ar, (n < get_hash(ar[m], # ar) ⊃ m < n ∨ get_hash(ar[m], # ar) ≤ m;get_hash(ar[m], # ar) ≤ m ∧ m < n) → ar[m] ≠ e, (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0), ∀ m. (n < get_hash(e, # ar) ⊃ m < n ∨ get_hash(e, # ar) ≤ m;get_hash(e, # ar) ≤ m ∧ m < n) ∧ m < # ar → ar[m] ≠ e ∧ ar[m] ≠ ⊥, ∀ n0. n0 < # ar ∧ ar[n0] ≠ ⊥ → (∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥), ∀ m. (n0 < get_hash(ar[n0], # ar) ⊃ m < n0 ∨ get_hash(ar[n0], # ar) ≤ m;get_hash(ar[n0], # ar) ≤ m ∧ m < n0) ∧ m < # ar → ar[m] ≠ ar[n0] ∧ ar[m] ≠ ⊥ ⊦ (ar[n := e])[m] ≠ ar[n0] ∧ (ar[n := e])[m] ≠ ⊥ |
⊦ m ≠ n → (ar[n := a])[m] = ar[m]
Used terms: ar, n, e, m
| ⊦ m ≠ n → (ar[n := a])[m] = ar[m] |
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.