Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| creating:start [2025/03/29 14:11] – Moved introductory material from scanning tutorial into this page ahelwer | creating:start [2025/11/04 20:16] (current) – Added instanceof pattern-matching to Java version requirement justification ahelwer | ||
|---|---|---|---|
| Line 18: | Line 18: | ||
| Developing an intuition of what TLC is doing when it model-checks your spec will enable you to write specifications that make better use of its capabilities. | Developing an intuition of what TLC is doing when it model-checks your spec will enable you to write specifications that make better use of its capabilities. | ||
| And, if you reach the edge of those capabilities - well, you're well-placed to extend TLC to handle it! | And, if you reach the edge of those capabilities - well, you're well-placed to extend TLC to handle it! | ||
| + | |||
| + | This guide was written with the generous support of the [[https:// | ||
| + | |||
| + | ===== Table of Contents ===== | ||
| + | |||
| + | - [[creating: | ||
| + | - [[creating: | ||
| + | - [[creating: | ||
| + | - [[creating: | ||
| + | - [[creating: | ||
| + | - [[creating: | ||
| + | - [[creating: | ||
| + | - [[creating: | ||
| + | - [[creating: | ||
| + | - [[creating: | ||
| ===== Overview ===== | ===== Overview ===== | ||
| Line 24: | Line 39: | ||
| There are two good reasons for this: | There are two good reasons for this: | ||
| - At time of writing, [[codebase: | - At time of writing, [[codebase: | ||
| - | - The high-quality free online textbook [[https:// | + | - The high-quality free online textbook |
| You will need to install the [[https:// | You will need to install the [[https:// | ||
| - | While all code artifacts can be produced entirely by reading this tutorial, if you get out of sync you can find working implementations in [[https:// | + | This tutorial requires Java 21 or higher, for the Java 17 [[https:// |
| + | While all code artifacts can be produced entirely by reading this tutorial, if you get out of sync you can find working implementations in [[https:// | ||
| The tutorial has you construct the TLA⁺ tools from the bottom up. | The tutorial has you construct the TLA⁺ tools from the bottom up. | ||
| Line 44: | Line 60: | ||
| Here is what our minimal language subset includes: | Here is what our minimal language subset includes: | ||
| - | * Named operator definitions | + | * Whole natural numbers |
| - | * Single-line comments like '' | + | * Boolean values |
| - | * Declaration of '' | + | |
| * Finite set literals, like '' | * Finite set literals, like '' | ||
| + | * Parentheses for expression grouping | ||
| + | * '' | ||
| + | * Single-line comments like '' | ||
| + | * The '' | ||
| + | * Some infix operators: '' | ||
| + | * The variable-priming suffix operator | ||
| * Quantification over sets with '' | * Quantification over sets with '' | ||
| * Function construction and application, | * Function construction and application, | ||
| - | * The '' | + | * Named operator definitions like '' |
| - | * Some infix operators: '' | + | * Declaration of '' |
| - | * The variable-priming suffix operator | + | |
| * Vertically-aligned conjunction & disjunction lists | * Vertically-aligned conjunction & disjunction lists | ||
| - | * The '' | ||
| - | * Whole natural numbers like '' | ||
| - | * Boolean values '' | ||
| Notably, we do not use the familiar '' | Notably, we do not use the familiar '' | ||
| Line 97: | Line 114: | ||
| To begin the tutorial, start at page [[creating: | To begin the tutorial, start at page [[creating: | ||
| + | |||
| + | [[creating: | ||