| ∀ p0, q. (p0 = p ∨ p0 ∈ ps0) ∧ (q = p ∨ q ∈ ps0) ∧ fpathtolink(p0) = fpathtolink(q) → p0 = q, ∀ alink. alink ∈ ls → (∃ p0. (p0 = p ∨ p0 ∈ ps0) ∧ fpathtolink(p0) = alink), ∀ p0. p0 ∈ ps0 → fpathtolink(p0) ∈ ls, ∃ ls0. ls = ls0 ++ fpathtolink(p) ∧ ¬ fpathtolink(p) ∈ ls0, ∀ ps1, fpathtolink, ls. # ps1 < #(ps0 ++ p) → (∀ p, q. p ∈ ps1 ∧ q ∈ ps1 ∧ fpathtolink(p) = fpathtolink(q) → p = q) ∧ (∀ alink. alink ∈ ls → (∃ p. p ∈ ps1 ∧ fpathtolink(p) = alink)) ∧ (∀ p. p ∈ ps1 → fpathtolink(p) ∈ ls) → (# ps1 = # ls ↔ true) ⊦ # ls = 0, # ps0 + 1 = # ls, ls = ∅, p ∈ ps0 |
∀ p0, q. (p0 = p ∨ p0 ∈ ps0) ∧ (q = p ∨ q ∈ ps0) ∧ fpathtolink(p0) = fpathtolink(q) → p0 = q, ∀ p0. p0 ∈ ps0 → fpathtolink(p0) = fpathtolink(p) ∨ fpathtolink(p0) ∈ ls0, ∀ alink. alink = fpathtolink(p) ∨ alink ∈ ls0 → (∃ p0. (p0 = p ∨ p0 ∈ ps0) ∧ fpathtolink(p0) = alink), ∀ ps1, fpathtolink, ls. # ps1 < #(ps0 ++ p) → (∀ p, q. p ∈ ps1 ∧ q ∈ ps1 ∧ fpathtolink(p) = fpathtolink(q) → p = q) ∧ (∀ alink. alink ∈ ls → (∃ p. p ∈ ps1 ∧ fpathtolink(p) = alink)) ∧ (∀ p. p ∈ ps1 → fpathtolink(p) ∈ ls) → (# ps1 = # ls ↔ true) ⊦ # ps0 = # ls0, p ∈ ps0, fpathtolink(p) ∈ ls0
Used simplifier rules: ⊦ alink ∈ ls ++ alink0 ↔ alink = alink0 ∨ alink ∈ ls; (s)% ⊦ m + 1 ≠ 0; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m + n = m + n0 ↔ n = n0; (s)% ⊦ ¬ alink ∈ ls → #(ls ++ alink) = # ls + 1; (s)% ⊦ ∅ ≠ ls ++ alink; (s)