| ∀ 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 |
∀ alink. alink = fpathtolink(p) ∨ alink ∈ ls0 → (∃ p0. (p0 = p ∨ p0 ∈ ps0) ∧ fpathtolink(p0) = alink), ∀ p0. p0 ∈ ps0 → fpathtolink(p0) = fpathtolink(p) ∨ fpathtolink(p0) ∈ ls0, ∀ p0, q. (p0 = p ∨ p0 ∈ ps0) ∧ (q = p ∨ q ∈ ps0) ∧ fpathtolink(p0) = fpathtolink(q) → p0 = q, ∀ 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, fpathtolink(p) ∈ ls0, p ∈ ps0, (∀ p, q. p ∈ ps0 ∧ q ∈ ps0 ∧ fpathtolink(p) = fpathtolink(q) → p = q) ∧ (∀ alink. alink ∈ ls0 → (∃ p. p ∈ ps0 ∧ fpathtolink(p) = alink)) ∧ (∀ p. p ∈ ps0 → fpathtolink(p) ∈ ls0)
Used simplifier rules: ⊦ ¬ p ∈ ps → #(ps ++ p) = # ps + 1; (s)% ⊦ m < n + 1 ↔ ¬ n < m; (s)% ⊦ ¬ n < n; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic Used terms: ps0, fpathtolink, ls0