This page archives the formal model accompanying the publication:
Back to the main site.
The project developed (see here for a graphical overview) consists of the following important specifications:
inodekey
references an inode by its numberdentrykey
gives the inode number of the containing directory and the name of the file (our model uses the name; in reality a hash value is used).datakey
references a page of data, by the inode number identifying the file and the part number, which says which part of the file the page contains.fs
), the RAM (variable ri
) and the flash index (fi
), and the journal (log
), which in our abstract model is just a list of addresses. It is derived from a specification of lists (with several subspecifications) from the library.fs-cons
and a number of auxiliary predicates (fs-dir-cons
, fs-file-cons
, valid-ino
etc.) specify consistency of the file system. Predicate iso
specifies, when two file systems are isomorphic, i.e. have the same relevant data (used to specify garbage collection). A large number of simplification rules is proved over this specification.FSOP#
, that selects suitable input data (with choose) and calls one of the operations nondeterministically is just to conform to the convention of ASMs which requires one toplevel rule. Note, that although the syntax used is ASM-like, the operations are not executed atomically (as an ASM rule): the semantics of KIV's temporal logic only executes parallel assignments atomically.term-op
prove termination of each operation op
.prepost-op
prove total correctness assertions with suitable pre and postconditions.fscons-op
prove that fs-cons
an invariant of the operations. store-cons-op
and several more are similar for other predicates.log-cons
predicate using the replay#
operation. The theorem base has proof that log-cons
is also an invariant of all operations.