| ⊦ dups(vals .nonnullrefs) ↔ (∃ r, m, n. vals[m] = refval(r) ∧ vals[n] = refval(r) ∧ r ≠ jvmref ∧ m ≠ n ∧ ¬ # vals ≤ m ∧ ¬ # vals ≤ n) |
⊦ [] .nonnullrefs = []
dups(vals0 .nonnullrefs) ↔ (∃ r, m, n. vals0[m] = refval(r) ∧ vals0[n] = refval(r) ∧ r ≠ jvmref ∧ m ≠ n ∧ ¬ # vals0 ≤ m ∧ ¬ # vals0 ≤ n) ⊦ dups((val + vals0) .nonnullrefs) ↔ (∃ r, m, n. (val + vals0)[m] = refval(r) ∧ (val + vals0)[n] = refval(r) ∧ r ≠ jvmref ∧ m ≠ n ∧ ¬ # (val + vals0) ≤ m ∧ ¬ # (val + vals0) ≤ n)
[[CONCRETESIMPRULES : ([CSIMPGEN : javavalues generated by [], +;], [CSIMPNAMEDSEQ : list-dup, references, e-01, ⊦ ¬ dups([])], [CSIMPNAMEDSEQ : list-data, javavalues, size-01, ⊦ # [] = 0], [CSIMPNAMEDSEQ : nat, , lez, ⊦ 0 ≤ m])]]