| ⊦ dups(vals .nonnullrefs) ↔ (∃ r, vals0, vals1, vals2. vals = vals0 + (refval(r) + (vals1 + (refval(r) + vals2))) ∧ r ≠ jvmref ∧ ¬ refval(r) ∈ vals0 ∧ ¬ refval(r) ∈ vals1) |
⊦ [] .nonnullrefs = []
dups(vals0 .nonnullrefs) ↔ (∃ r, vals3, vals1, vals2. vals0 = vals3 + (refval(r) + (vals1 + (refval(r) + vals2))) ∧ r ≠ jvmref ∧ ¬ refval(r) ∈ vals3 ∧ ¬ refval(r) ∈ vals1) ⊦ dups((val + vals0) .nonnullrefs) ↔ (∃ r, vals3, vals1, vals2. val + vals0 = vals3 + (refval(r) + (vals1 + (refval(r) + vals2))) ∧ r ≠ jvmref ∧ ¬ refval(r) ∈ vals3 ∧ ¬ refval(r) ∈ vals1)
[[CONCRETESIMPRULES : ([CSIMPGEN : javavalues generated by [], +;], [CSIMPNAMEDSEQ : list-dup, references, e-01, ⊦ ¬ dups([])], [CSIMPNAMEDSEQ : list, javavalues, c, ⊦ val + vals = val ' + vals], [CSIMPNAMEDSEQ : list, javavalues, app-02-ant, ⊦ ¬ vals + vals0 ≠ [] ↔ vals = [] ∧ vals0 = []], [CSIMPNAMEDSEQ : list, javavalues, e, ⊦ val ' ≠ []], [CSIMPNAMEDSEQ : list, javavalues, a, ⊦ (vals + vals0) + vals1 = vals + vals0 + vals1])]]