| ∀ as, m0, m1, m2. (as ++ @(m0, m1, m2)) | m3 = (as | m3) ∪ (m0 = m3 ⊃ ∅ ++ @(m3, m1, m2);∅) ⊦ (as ++ @(m0, m1, m2)) | (m3 + 1) = (as | (m3 + 1)) ∪ (m0 = m3 + 1 ⊃ ∅ ++ @(m3 + 1, m1, m2);∅) |
Used simplifier rules: m ≠ m0 ⊦ (as ++ @(m0, m1, m2)) | m = as | m; (s)% ⊦ as ∪ ∅ = as; (s)%una: ⊦ (as ∪ as0) ∪ as1 = as ∪ as0 ∪ as1; from specification set-union[node-store]%unc: ⊦ as ∪ as0 = as0 ∪ as; from specification set-union[node-store]% ⊦ (as ++ @(m0, m1, m2)) | m0 = (as | m0) ++ @(m0, m1, m2); (s)% ⊦ (as ++ adr) ∪ as0 = (as ∪ as0) ++ adr; (s) Used formulas: m0 = m3 + 1