Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
user:fponzi:diving [2024/11/13 20:37] – 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 some 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, | ||