| n < # asar, n < m, m ≤ # asar, ∀ n0, n1. n0 < m ∧ n1 < m ∧ n0 ≠ n1 → asar[n0] ∩ asar[n1] = ∅, ∀ n0. n0 ≠ n ∧ n0 < m → asar[n0] ∩ as = ∅ ⊦ ∀ n0, n1. n0 < m ∧ n1 < m ∧ n0 ≠ n1 → asar[n, as][n0] ∩ asar[n, as][n1] = ∅ |
n0 < # asar, n1 < # asar, n < # asar, n < m, n0 < m, n1 < m, m ≤ # asar, ∀ n0, n1. n0 < m ∧ n1 < m ∧ n0 ≠ n1 → asar[n0] ∩ asar[n1] = ∅, ∀ n0. n0 ≠ n ∧ n0 < m → asar[n0] ∩ as = ∅ ⊦ #(asar[n, as][n1] ∩ asar[n, as][n0]) = 0, n1 = n0, asar[n, as][n1] ∩ asar[n, as][n0] = ∅
Used simplifier rules: size-zero: ⊦ # as ≠ 0 → as ≠ ∅; (forward) from specification set-basic[address-list-set]%size-zero-01: ⊦ as ≠ ∅ → # as ≠ 0; (forward) from specification set-basic[address-list-set]%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat