| ∀ str0. str0 ∈ sdt0[str, tree] → (∀ fid1. # links(fid1, sdt0[str, tree][str0]) = count(fid1, sdt0[str, tree][str0].fids)), ∀ sdt1, fid1, md. # sdt1 < # sdt0[str, tree] → (∀ str. str ∈ sdt1 → (∀ fid1. # links(fid1, sdt1[str]) = count(fid1, sdt1[str].fids))) → # links(fid1, dnode(md, sdt1)) = count(fid1, sdt1.fids) ⊦ #(links(fid1, dnode(md, sdt0)) ∪ (str + links(fid1, tree))) = count(fid1, sdt0.fids) + # links(fid1, tree), str ∈ sdt0 |
∀ str0. str0 ∈ sdt0[str, tree] → (∀ fid1. # links(fid1, sdt0[str, tree][str0]) = count(fid1, sdt0[str, tree][str0].fids)), ∀ sdt1, fid1, md. # sdt1 < # sdt0[str, tree] → (∀ str. str ∈ sdt1 → (∀ fid1. # links(fid1, sdt1[str]) = count(fid1, sdt1[str].fids))) → # links(fid1, dnode(md, sdt1)) = count(fid1, sdt1.fids) ⊦ #(links(fid1, dnode(md, sdt0)) ∪ (str + links(fid1, tree))) = count(fid1, sdt0.fids) + # links(fid1, tree), str ∈ sdt0, ∀ str. str ∈ sdt0 → (∀ fid1. # links(fid1, sdt0[str]) = count(fid1, sdt0[str].fids))
# links(fid1, dnode(md, sdt0)) = count(fid1, sdt0.fids), ∀ str0. str0 ∈ sdt0[str, tree] → (∀ fid1. # links(fid1, sdt0[str, tree][str0]) = count(fid1, sdt0[str, tree][str0].fids)), ∀ sdt1, fid1, md. # sdt1 < # sdt0[str, tree] → (∀ str. str ∈ sdt1 → (∀ fid1. # links(fid1, sdt1[str]) = count(fid1, sdt1[str].fids))) → # links(fid1, dnode(md, sdt1)) = count(fid1, sdt1.fids) ⊦ #(links(fid1, dnode(md, sdt0)) ∪ (str + links(fid1, tree))) = count(fid1, sdt0.fids) + # links(fid1, tree), str ∈ sdt0
Used simplifier rules: ⊦ ¬ str ∈ sdt → # sdt[str, tree] = # sdt + 1; (s)% ⊦ m < n + 1 ↔ ¬ n < m; (s)% ⊦ ¬ n < n; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic[directory-tree-inst]%c: ⊦ m + n = n + m; from specification nat-basic[directory-tree-inst] Used terms: sdt0, fid1, md