[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,

Specification directory-tree
enrich
   directory-tree-inst
, 
   path
, 
   fidset
with
   

   
   
   functions  . [ . ] : directory-tree × path → directory-tree;
              . [ . ] : directory-tree × path × directory-tree → directory-tree;
              . -- . : directory-tree × path → directory-tree prio 9 left;
              . .fid : directory-tree → fid;
              . .meta : directory-tree → metadata;
              . .entries : directory-tree → entries-tree;
              . .subdirs : directory-tree → stringset;
              . .fid:= . : directory-tree × fid → directory-tree prio 12 left;
              . .meta:= . : directory-tree × metadata → directory-tree prio 12 left;
              . .entries:= . : directory-tree × entries-tree → directory-tree prio 12 left;
              #n . : directory-tree → nat;
              #n . : entries-tree → nat;
   predicates  . ∈ . : path × directory-tree;
               . .dir? : directory-tree;
   
   variables  Ptree : directory-tree → bool;
   
   

   

   axioms count-fnode :  ⊦ #n fnode(fid) = 1;
          used for: s, ls;
          count-dnode :  ⊦ #n dnode(md, sdt) = 1 + #n sdt;
          used for: s, ls;
          count-empty :  ⊦ #n ∅ = 0;
          used for: s, ls;
          count-rec :  ⊦ ¬ str ∈ sdt → #n sdt[str, tree] = #n sdt + #n tree;
          used for: s, ls;
          nil-in :  ⊦ ε ∈ tree;
          used for: s, ls;
          in-fnode :  ⊦ ¬ str ' + p ∈ fnode(fid);
          used for: s, ls;
          in-dnode :  ⊦ str ' + p ∈ dnode(md, sdt) ↔ str ∈ sdt ∧ p ∈ sdt[str];
          used for: s, ls;
          nil-at :  ⊦ tree[ε] = tree;
          used for: s, ls;
          at-dnode :  ⊦ str ∈ sdt → dnode(md, sdt)[str ' + p] = sdt[str][p];
          used for: s, ls;
          nil-put :  ⊦ tree[ε, tree0] = tree0;
          used for: s, ls;
          put-here :  ⊦ dnode(md, sdt)[str ', tree0] = dnode(md, sdt[str, tree0]);
          used for: s, ls;
          put-rec : p ≠ ε ⊦ str ∈ sdt → dnode(md, sdt)[str ' + p, tree0] = dnode(md, sdt[str, sdt[str][p, tree0]]);
          used for: s, ls;
          del-here :  ⊦ dnode(md, sdt) -- str ' = dnode(md, sdt -- str);
          used for: s, ls;
          del-recin : p ≠ ε ⊦ str ∈ sdt → dnode(md, sdt) -- (str ' + p) = dnode(md, sdt[str, sdt[str] -- p]);
          used for: s, ls;
          del-recnotin : p ≠ ε ⊦ ¬ str ∈ sdt → dnode(md, sdt) -- (str ' + p) = dnode(md, sdt);
          used for: s, ls;
          fid :  ⊦ fnode(fid).fid = fid;
          used for: s, ls;
          meta :  ⊦ dnode(md, sdt).meta = md;
          used for: s, ls;
          entries :  ⊦ dnode(md, sdt).entries = sdt;
          used for: s, ls;
          subdirs :  ⊦ str ∈ dnode(md, sdt).subdirs ↔ str ∈ sdt ∧ sdt[str].dir?;
          used for: s, ls;
          isfnode :  ⊦ ¬ fnode(fid).dir?;
          used for: s, ls;
          isdnode :  ⊦ dnode(md, sdt).dir?;
          used for: s, ls;
          setfid :  ⊦ fnode(fid).fid:= fid0 = fnode(fid0);
          used for: s, ls;
          setmeta :  ⊦ dnode(md, sdt).meta:= md0 = dnode(md0, sdt);
          used for: s, ls;
          setentries :  ⊦ dnode(md, sdt).entries:= sdt0 = dnode(md, sdt0);
          used for: s, ls;

   

   
end enrich