| ar[m] = ar[n], m ≠ n, n < # ar, m < # ar ⊦ ⦉FINDDUP#(ar; m0, n0)⦊ (ar[m0] = ar[n0] ∧ m0 ≠ n0 ∧ m0 < # ar ∧ n0 < # ar) |
⊦
ar[m] = ar[n], m ≠ n, n < # ar, m < # ar ⊦ ⦉let m1 = 0, bv = false in { n := n0, m := m0, ar0 := ar ; while m1 < # ar0 ∧ ¬ bv do { let n1 = m1 + 1 in while n1 < # ar0 ∧ ¬ bv do if ar0[m1] = ar0[n1] then m := m1, n := n1, bv := true else n1 := n1 + 1 ; m1 := m1 + 1 } }⦊ (ar[m] = ar[n] ∧ m ≠ n ∧ m < # ar ∧ n < # ar)
[[CONCRETESIMPRULES : ()]]