| m0 = n1, m0 < # kar, n0 < # kar, n1 < # kar, n0 ≤ m0, n1 ≤ m0, ∀ n1, n0, kar. n1 < m0 ∧ n0 < m0 ∧ n1 < # kar ∧ n0 < # kar ∧ m0 ≤ # kar → keyset(kar[n0, kar[n1]][n1, kar[n0]], m0) = keyset(kar, m0) ⊦ keyset(kar[n0, kar[n1]][n1, kar[n0]], m0) ++ kar[n0, kar[n1]][n1, kar[n0]][m0] = keyset(kar, m0) ++ kar[m0] |
n0 < # kar, n1 < # kar, n0 ≤ n1, ∀ n, n0, kar. n < n1 ∧ n0 < n1 ∧ n < # kar ∧ n0 < # kar ∧ n1 ≤ # kar → keyset(kar[n0, kar[n]][n, kar[n0]], n1) = keyset(kar, n1) ⊦ keyset(kar[n0, kar[n1]], n1) ++ kar[n0] = keyset(kar, n1) ++ kar[n1]
Used simplifier rules: key-set-write-other: m ≤ n, n < # kar ⊦ keyset(kar[n, ki], m) = keyset(kar, m);% ⊦ m ≤ m; (s)%m < # kar ⊦ kar[m, ki][m] = ki; (s)% ⊦ m < n → (n ≤ m ↔ false); (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ # kar[n, ki] = # kar; (s)% ⊦ m ≤ n → (n ≤ m ↔ m = n); (s)