[Imprint][Data Privacy Statement][E-Mail]

Back to main index. View the specification. View theorem base summary, View theorem base listing, the used properties by spec, the dependency list, the symbol table,

Theorem base for Specification directory-tree

This is a listing of all goals defined over the current specification. Axioms are marked yellow, proved theorems green and unproved theorems blue. Click on individual names to get more information on the proof.

Name: Sequent: Type:
nil-in ⊦ ε ∈ tree An Axiom
in-fnode ⊦ ¬ str ' + p ∈ fnode(fid) An Axiom
in-dnode ⊦ str ' + p ∈ dnode(md, sdt) ↔ str ∈ sdt ∧ p ∈ sdt[str] An Axiom
nil-at ⊦ tree[ε] = tree An Axiom
at-dnode ⊦ str ∈ sdt → dnode(md, sdt)[str ' + p] = sdt[str][p] An Axiom
del-here ⊦ dnode(md, sdt) -- str ' = dnode(md, sdt -- str) An Axiom
fid ⊦ fnode(fid).fid = fid An Axiom
meta ⊦ dnode(md, sdt).meta = md An Axiom
isfnode ⊦ ¬ fnode(fid).dir? An Axiom
isdnode ⊦ dnode(md, sdt).dir? An Axiom
setmeta ⊦ dnode(md, sdt).meta:= md0 = dnode(md0, sdt) An Axiom
setfid ⊦ fnode(fid).fid:= fid0 = fnode(fid0) An Axiom
count-rec ⊦ ¬ str ∈ sdt → #n sdt[str, tree] = #n sdt + #n tree An Axiom
count-empty ⊦ #n ∅ = 0 An Axiom
count-dnode ⊦ #n dnode(md, sdt) = 1 + #n sdt An Axiom
count-fnode ⊦ #n fnode(fid) = 1 An Axiom
del-recnotinp ≠ ε ⊦ ¬ str ∈ sdt → dnode(md, sdt) -- (str ' + p) = dnode(md, sdt) An Axiom
del-recinp ≠ ε ⊦ str ∈ sdt → dnode(md, sdt) -- (str ' + p) = dnode(md, sdt[str, sdt[str] -- p]) An Axiom
put-recp ≠ ε ⊦ str ∈ sdt → dnode(md, sdt)[str ' + p, tree0] = dnode(md, sdt[str, sdt[str][p, tree0]]) An Axiom
put-here ⊦ dnode(md, sdt)[str ', tree0] = dnode(md, sdt[str, tree0]) An Axiom
nil-put ⊦ tree[ε, tree0] = tree0 An Axiom
setentries ⊦ dnode(md, sdt).entries:= sdt0 = dnode(md, sdt0) An Axiom
entries ⊦ dnode(md, sdt).entries = sdt An Axiom
subdirs ⊦ str ∈ dnode(md, sdt).subdirs ↔ str ∈ sdt ∧ sdt[str].dir? An Axiom
again-putp ≠ ε ⊦ p ∈ tree ∧ tree[p] = tree0 → tree[p, tree0] = tree A User Theorem
at-delp ≠ ε, q ∈ tree -- p ⊦ p ∈ tree → (tree -- p)[q] = (q ⊑ p ⊃ tree[q] -- restn(# q, p);tree[q]) A User Theorem
at-dnode-same ⊦ dnode(md, sdt[str, tree])[str ' + p] = tree[p] A User Theorem
at-modtree[p] = dnode(md0, sdt0) ⊦ tree.dir? ∧ p ∈ tree ∧ q ∈ tree[p, dnode(md1, sdt1)] → tree[p, dnode(md1, sdt1)][q] = (q ⊑ p ⊃ tree[q][restn(# q, p), dnode(md1, sdt1)];tree[p, dnode(md0, sdt1)][q]) A User Theorem
at-puttree[p] = dnode(md, sdt), q ∈ tree[p, dnode(md, sdt[str, tree0])] ⊦ p ∈ tree ∧ tree.dir? → tree[p, dnode(md, sdt[str, tree0])][q] = (p + str ' ⊑ q ⊃ tree0[restn(# p + 1, q)];(q ⊑ p ⊃ tree[q][restn(# q, p + str '), tree0];tree[q])) A User Theorem
del-fnode ⊦ tree.dir? ∧ p ≠ ε → tree -- p ≠ fnode(fid) A User Theorem
dir-delp ≠ ε ⊦ p ∈ tree → ((tree -- p).dir? ↔ tree.dir?) A User Theorem
dir-elimput ⊦ tree.dir? → tree[str ', tree0] = dnode(tree.meta, tree.entries[str, tree0]) A User Theorem
dir-puttree[p] = dnode(md, sdt) ⊦ tree.dir? ∧ p ∈ tree → tree[p, dnode(md, sdt[str, tree0])].dir? A User Theorem
dir-put2 ⊦ tree.dir? ∧ p ∈ tree → tree[p, dnode(md, sdt)].dir? A User Theorem
dir-put3p ≠ ε ⊦ tree.dir? ∧ parent(p) ∈ tree → tree[p, tree0].dir? A User Theorem
dnode-delp ≠ ε ⊦ dnode(md, sdt) -- p ≠ fnode(fid) A User Theorem
dnode-elimtree.dir? ⊦ md = tree.meta ∧ sdt = tree.entries ↔ tree = dnode(md, sdt) A User Theorem
dnode-elim-strong ⊦ tree.dir? ↔ (∃ md, sdt. tree = dnode(md, sdt)) A User Theorem
dnode-onein ⊦ str ' ∈ tree ↔ (∃ md, sdt. tree = dnode(md, sdt) ∧ str ∈ sdt) A User Theorem
fnode-elim¬ tree.dir? ⊦ fid = tree.fid ↔ tree = fnode(fid) A User Theorem
fnode-elim-strong ⊦ tree.dir? ↔ ¬(∃ fid. tree = fnode(fid)) A User Theorem
fnode-notin ⊦ p ∈ fnode(fid) ↔ p = ε A User Theorem
in-delp ≠ ε ⊦ p ∈ tree → (q ∈ tree -- p ↔ ¬ p ⊑ q ∧ q ∈ tree) A User Theorem
in-dnode-empty ⊦ p ∈ dnode(md, ∅) ↔ p = ε A User Theorem
in-modp ≠ ε ⊦ tree[p] = dnode(md0, sdt) ∧ tree.dir? ∧ p ∈ tree → (q ∈ tree[p, dnode(md1, sdt)] ↔ q ∈ tree[p, dnode(md0, sdt)]) A User Theorem
in-puttree[p] = dnode(md, sdt) ⊦ tree.dir? ∧ p ∈ tree → (q ∈ tree[p, dnode(md, sdt[str, tree0])] ↔ (p + str ' ⊑ q ⊃ restn(# p + 1, q) ∈ tree0;q ∈ tree)) A User Theorem
next-at ⊦ tree.dir? → tree[str ', tree0][str ' + p] = tree0[p] A User Theorem
notdir-notin ⊦ ¬ tree.dir? → (p ∈ tree ↔ p = ε) A User Theorem
notin-del ⊦ p ≠ ε ∧ p ∈ tree → ¬ p ∈ tree -- p A User Theorem
one-atstr ∈ sdt ⊦ dnode(md, sdt)[str '] = sdt[str] A User Theorem
one-ind ⊦ str ' ∈ dnode(md, sdt) ↔ str ∈ sdt A User Theorem
one-inf ⊦ str ' ∈ fnode(fid) ↔ false A User Theorem
one-restnp ≠ ε ⊦ restn(n + 1, p) = restn(n, p.tail) A User Theorem
put-fnode ⊦ p ∈ tree → (tree[p, tree0] = fnode(fid) ↔ p = ε ∧ tree0 = fnode(fid)) A User Theorem
restn-len# p ≤ # q ⊦ restn(# p, q) = ε ↔ # p = # q A User Theorem
same-at ⊦ p ∈ tree → tree[p, tree0][p] = tree0 A User Theorem
same-in ⊦ p ∈ tree → p ∈ tree[p, tree0] A User Theorem
same-put ⊦ p ∈ tree → tree[p, tree0][p, tree1] = tree[p, tree1] A User Theorem
same-put-one ⊦ tree.dir? → tree[str ', tree0][str '] = tree0 A User Theorem
setentries-elim ⊦ tree.dir? → tree.entries:= sdt = dnode(tree.meta, sdt) A User Theorem
setfid-elim ⊦ ¬ tree.dir? → tree.fid:= fid = fnode(fid) A User Theorem
setmeta-elim ⊦ tree.dir? → tree.meta:= md = dnode(md, tree.entries) A User Theorem
split-at ⊦ p ∈ tree → tree[p + q] = tree[p][q] A User Theorem
split-delq ≠ ε ⊦ p ∈ tree → tree -- (p + q) = tree[p, tree[p] -- q] A User Theorem
split-in ⊦ p + q ∈ tree ↔ p ∈ tree ∧ q ∈ tree[p] A User Theorem
split-put ⊦ p ∈ tree → tree[p + q, tree0] = tree[p, tree[p][q, tree0]] A User Theorem
split-restn ⊦ p ⊑ q0 → restn(# p, q0 + q1) = restn(# p, q0) + q1 A User Theorem
tree-ext⊦ tree0 = tree1 ↔ (∀ p. (p ∈ tree0 ↔ p ∈ tree1) ∧ (p ∈ tree0 → (tree0[p].dir? ↔ tree1[p].dir?) ∧ (tree0[p].dir? ⊃ tree0[p].meta = tree1[p].meta;tree0[p].fid = tree1[p].fid))) A User Theorem
tree-induction∀ fid. Ptree(fnode(fid)), ∀ md, sdt. (∀ str. str ∈ sdt → Ptree(sdt[str])) → Ptree(dnode(md, sdt)) ⊦ Ptree(tree) A User Theorem