| m2 < # ar1 ∧ ¬ bv0, bv0 ⊃ (ar1[m1] = ar1[n2] ∧ m1 ≠ n2 ∧ m1 < # ar1 ∧ n2 < # ar1) ; (∀ m1. m1 < m2 → (∀ n. m1 < n ∧ n < # ar1 → ar1[m1] ≠ ar1[n])), m2 ≤ # ar1, ar1 = ar, ∃ m, n. ar1[m] = ar1[n] ∧ m ≠ n ∧ m < # ar1 ∧ n < # ar1, m2 = m0 ⊦ ⦉let n1 = m2 + 1 in while n1 < # ar1 ∧ ¬ bv0 do if ar1[m2] = ar1[n1] then m1 := m2, n2 := n1, bv0 := true else n1 := n1 + 1⦊ ⦉m2 := m2 + 1⦊ ( (bv0 ⊃ (ar1[m1] = ar1[n2] ∧ m1 ≠ n2 ∧ m1 < # ar1 ∧ n2 < # ar1); (∀ m1. m1 < m2 → (∀ n. m1 < n ∧ n < # ar1 → ar1[m1] ≠ ar1[n]))) ∧ m2 ≤ # ar1 ∧ ar1 = ar ∧ (∃ m, n. ar1[m] = ar1[n] ∧ m ≠ n ∧ m < # ar1 ∧ n < # ar1) ∧ # ar - m2 < # ar - m0) |
m2 < # ar1 ∧ ¬ bv0, bv0 ⊃ (ar1[m1] = ar1[n2] ∧ m1 ≠ n2 ∧ m1 < # ar1 ∧ n2 < # ar1) ; (∀ m1. m1 < m2 → (∀ n. m1 < n ∧ n < # ar1 → ar1[m1] ≠ ar1[n])), m2 ≤ # ar1, ar1 = ar, ∃ m, n. ar1[m] = ar1[n] ∧ m ≠ n ∧ m < # ar1 ∧ n < # ar1, m2 = m0, n = m2 + 1 ⊦ ⦉while n < # ar1 ∧ ¬ bv0 do if ar1[m2] = ar1[n] then m1 := m2, n2 := n, bv0 := true else n := n + 1⦊ ⦉m2 := m2 + 1⦊ ( (bv0 ⊃ (ar1[m1] = ar1[n2] ∧ m1 ≠ n2 ∧ m1 < # ar1 ∧ n2 < # ar1); (∀ m1. m1 < m2 → (∀ n. m1 < n ∧ n < # ar1 → ar1[m1] ≠ ar1[n]))) ∧ m2 ≤ # ar1 ∧ ar1 = ar ∧ (∃ m, n. ar1[m] = ar1[n] ∧ m ≠ n ∧ m < # ar1 ∧ n < # ar1) ∧ # ar - m2 < # ar - m0)
[[CONCRETESIMPRULES : ()]]