Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| user:fponzi:diving [2024/11/13 20:27] – created fponzi | user:fponzi:diving [2024/12/17 00:59] (current) – removed fponzi | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Diving into tlatools ====== | ||
| - | |||
| - | * TLC.java | ||
| - | * public int process() is like the main method | ||
| - | |||
| - | Model checker.java extends AbstractChecker | ||
| - | |||
| - | does initialization, | ||
| - | |||
| - | '' | ||
| - | |||
| - | ====== Questions: ====== | ||
| - | |||
| - | ===== What is a Trace? ===== | ||
| - | |||
| - | * Stores the sequence of states explored during model checking in a file with the extension '' | ||
| - | * Provides methods to manage and access this trace information. | ||
| - | |||
| - | ===== What’s the high level overview of the dependencies across classes? ===== | ||
| - | |||
| - | ===== What’s the goal for Tool class? ===== | ||
| - | |||
| - | This class provides useful methods for tools like model checker and simulator. It’s instance serves as a spec handle | ||
| - | |||
| - | This is one of two places in TLC, where not all messages are retrieved from the message printer, but constructed just here in the code. | ||
| - | |||
| - | Tool → FastTool → Spec → SpecProcessor→ Sany. | ||
| - | |||
| - | ===== FPSet ===== | ||
| - | |||
| - | Represents a set of 64-bit fingerprints. FPSet is an abstract class. | ||
| - | |||
| - | Type hierarchy: | ||
| - | |||
| - | **FPSet**: Class' | ||
| - | * **MemFPSet** | ||
| - | * MemFPSet1 (marked as deprecated) | ||
| - | * MemFPSet2 | ||
| - | * **NoopFPSet** | ||
| - | * **MultiFPSet** | ||
| - | * **DiskFPSet**: | ||
| - | * NonCheckpointableDiskFPSet | ||
| - | * OffHeapDiskFPSet | ||
| - | * HeapBasedDiskFPSet | ||
| - | * LSBDiskFPSet | ||
| - | * DummyDiskFPSet | ||
| - | * MSBDiskFPSet | ||
| - | * DummyFPSet in TLCServerTestCase | ||
| - | * MemFPSet | ||
| - | * FaultyFPSet | ||
| - | |||
| - | Pratically speaking, | ||
| - | |||
| - | |||
| - | ===== What is TLCState? ===== | ||
| - | |||
| - | TLCState is implemented by a tons of different classes for unknown reason. They were refactored at some point, so just a bunch of classes that extend it still exist: TLCStateMut, | ||
| - | |||
| - | ==== What is TLCStateMut? | ||
| - | |||
| - | represents a TLA+ state, which simply is an assignment of explicit values to all the global variables. This is the mutable version, which means that in-place updates are used for improved performance and reduced allocation. Compared to TLCStateMut, | ||