| ⊦ (as ++ @(m0, m1, m2)) | m = (as | m) ∪ (m0 = m ⊃ ∅ ++ @(m, m1, m2);∅) |
⊦ (as ++ @(m0, m1, m2)) | 0 = (as | 0) ∪ (m0 = 0 ⊃ ∅ ++ @(0, m1, m2);∅)
∀ 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: nat freely generated by 0, +1;;