Skip to content

Commit 3f7ac8c

Browse files
committed
Add Deli spec to README.md table
Signed-off-by: EricSpencer00 <espencer2@luc.edu>
1 parent a7971fd commit 3f7ac8c

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ Here is a list of specs included in this repository which are validated by the C
106106
| [Buffered Random Access File](specifications/braf) | Calvin Loncaric | | | || |
107107
| [Disruptor](specifications/Disruptor) | Nicholas Schultz-Møller | | | || |
108108
| [DAG-based Consensus](specifications/dag-consensus) | Giuliano Losa | | ||| |
109+
| [Deli](specifications/deli) | Eric Spencer | | | || |
109110

110111

111112
## Other Examples

specifications/deli/README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Deli
2+
3+
A TLA⁺ specification of a simple deli ordering system with a ticket-queue model.
4+
5+
The spec models a single worker serving customers in queue order. Customers arrive, receive a ticket number, join an order queue, get assigned to the worker, receive service, and the system resets to serve the next customer. The system cycles through four states: Idle → TakingOrder → PreparingOrder → Serving → ReturnToIdle.
6+
7+
## Key Features
8+
9+
- **Ticket-based ordering**: Customers get monotonically increasing ticket numbers as they arrive
10+
- **Queue discipline**: Customers are served in FIFO order from the queue
11+
- **Worker assignment**: A dedicated worker is assigned in the PrepareOrder phase
12+
- **State machine with return cycle**: Unlike simpler queue models, the system explicitly returns to Idle, enabling liveness properties
13+
14+
## Properties Checked
15+
16+
The specification includes three safety invariants and one liveness property:
17+
18+
1. **TypeOK**: State variables maintain correct types throughout execution
19+
2. **ValidStates**: The system never enters an undefined state
20+
3. **MutualExclusion**: At most one customer-worker pair is in the Serving state at any time
21+
4. **EventuallyIdle**: The system eventually returns to the Idle state (progress/fairness)
22+
23+
The `.tla` file includes formal THEOREM declarations for each property, making the spec suitable for TLC model checking and serving as a test case for the TLC toolchain.

0 commit comments

Comments
 (0)