Skip to content

Add Apalache wrappers and configurations for example specifications#209

Draft
lemmy wants to merge 4 commits intomasterfrom
mku-Apalache
Draft

Add Apalache wrappers and configurations for example specifications#209
lemmy wants to merge 4 commits intomasterfrom
mku-Apalache

Conversation

@lemmy
Copy link
Copy Markdown
Member

@lemmy lemmy commented Apr 22, 2026

For each spec where it was feasible, add:

  • AP.tla -- a non-invasive wrapper module that INSTANCEs the untyped original specification with typed CONSTANTS and VARIABLES, so that apalache-mc typecheck accepts the spec without modifying the source. A few wrappers also shadow polymorphic helpers (Sum, Range, ToSet, ...) with monomorphic versions, or define Val` operators used by the .cfg below to fill in uninterpreted-type constants.

  • AP.cfg -- a TLC-style model configuration adapted for Apalache. Each .cfg drives apalache-mc check for the spec's safety properties (TLC PROPERTIES are intentionally dropped). Constants are either inlined (Int/Bool/Str) or substituted via Const <- ConstVal to attach the right uninterpreted type.

@lemmy lemmy self-assigned this Apr 22, 2026
For each spec where it was feasible, add:

  * AP<Spec>.tla -- a non-invasive wrapper module that INSTANCEs the
    untyped original specification with typed CONSTANTS and VARIABLES,
    so that `apalache-mc typecheck` accepts the spec without modifying
    the source. A few wrappers also shadow polymorphic helpers (`Sum`,
    `Range`, ToSet`, ...) with monomorphic versions, or define
    `<Const>Val` operators used by the .cfg below to fill in
    uninterpreted-type constants.

  * AP<Spec>.cfg -- a TLC-style model configuration adapted for
    Apalache. Each .cfg drives `apalache-mc check` for the spec's
    safety properties (TLC `PROPERTIES` are intentionally dropped).
    Constants are either inlined (Int/Bool/Str) or substituted via
    `Const <- ConstVal` to attach the right uninterpreted type.

Co-authored-by: Claude Code 4.7 <claude@anthropic.com>
Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
lemmy added 3 commits April 22, 2026 10:22
…s for Apalache

Temporarily disable various checks in the CI workflow related to Unicode and manifest validation, as Apalache cannot model-check Unicode-translated specifications. Adjust the model checks to focus solely on Apalache-compatible configurations, specifically restricting checks to AP*.cfg files. This change is part of ongoing efforts to integrate Apalache into the CI process.

Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
`tla_utils.check_model` hard-coded `bin/apalache-mc`, but on Windows
the launcher is `bin/apalache-mc.bat` and `subprocess.run` cannot
spawn `.bat` files via CreateProcess directly. Resolve the launcher
per-platform and route batch files through `cmd.exe /c`.
This was latent because the only symbolic-mode model in CI
(EinsteinRiddle) was always being skipped: `[ ${{ matrix.unicode }} ]`
in CI.yml is truthy for both "true" and "false", so the SKIP entry
was added unconditionally rather than only on the Unicode variant.

Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
Translate`CHECK_DEADLOCK FALSE` into Apalache's `--no-deadlock` CLI flag.

Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

1 participant