Projects
These projects explore the core ideas of verified systems programming on small, self-contained examples before applying those ideas to PL/OS. Each project develops an executable model, precise contracts, and proofs, with agents assisting in implementation and proof construction.
-
A Small Allocator: allocation invariants, finite addresses, freshness, failure, and preservation of unrelated state.
-
A Bounded Queue: representation invariants, circular buffers, refinement, and composition over sequences of operations.
-
A Small RISC Machine: instruction semantics, finite arithmetic, execution traces, loop invariants, and termination.
-
A Small Verified Compiler: source semantics, code generation, branch layout, and compositional compiler correctness.
-
Protected Memory and Isolation: whole-access authorization, failure atomicity, byte frames, and isolation across command sequences.
-
A Cooperative Scheduler: context ownership, live and saved state, scheduling invariants, and simulation across context switches.
We then apply these ideas to components in PL/OS:
-
Verified RISC Lookup: assembly, encoded execution, table representations, calling conventions, and read-only refinement.
-
Persistent RISC Handle Tables: bounded append, exact byte effects, preservation of executable code, and persistent component invariants.
-
A Runnable RISC Queue: encoded dequeue, circular storage, reuse of verified writes, persistent FIFO refinement, and the kernel queue contract.