Repository navigation
Conversation
Instantiation does not distribute over ENABLED, and hence not over WF and SF (Specifying Systems, Section 17.8). tlapm substituted into WF and SF directly. With x <- z, y <- z it proved XY!Fair <=> WF_(XY!vars)(XY!Next), which is false, and from it Spec => XY!Spec. tlapm now expands WF and SF to their definitions in terms of ENABLED, as Section 8.9.4 suggests. Its handling of ENABLED under INSTANCE then binds the primed variables before the substitution. issue69_instantiated_fairness_stest is no longer known. issue69_instantiated_strong_fairness_stest covers SF. Fairness_INSTANCE_test checks that tlapm still proves the correct unfolding of instantiated WF and SF. TLC confirms its lemmas and theorems on a finite model. Fixes Github issue #69 #69 [Bug][Tests] Co-authored-by: Stephan Merz <7482229+muenchnerkindl@users.noreply.github.com> Co-authored-by: Gemini 4 Argon <noreply@google.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
Member
Author
|
CI failure:
|
lemmy
added a commit
that referenced
this pull request
Oct 29, 2026
Instantiation does not distribute over -+->, but tlapm substitutes into its arguments. issue320_instantiated_actplus_stest is the issue's reproducer. The test is marked known. Related to Github issue #320 #320 Related to Github issue #69 #69 Related to Github pull request #321 #321 [Tests] Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
Contributor
|
LGTM, thanks! |
lemmy
added a commit
to tlaplus/Examples
that referenced
this pull request
Oct 30, 2026
tlapm rewrites ENABLED into EnabledWrapper from the TLAPS module when it instantiates a module. If the module with the INSTANCE does not extend TLAPS, ExpandENABLED fails with "Operator EnabledWrapper not found". With tlapm#321, every instantiated WF contains ENABLED, so EWD840_proof hits this bug through TD == INSTANCE SyncTerminationDetection. tlaplus/tlapm#250 tlaplus/tlapm#321 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
lemmy
added a commit
to tlaplus/Examples
that referenced
this pull request
Oct 30, 2026
Instantiation does not distribute over ENABLED, and hence not over WF. The proof of Spec => TD!Spec relied on WF_TD!vars(TD!DetectTermination) matching the fairness conjunct of TD!Spec, which tlapm#321 no longer allows. SyncTerminationDetection now names its fairness condition Fair, and the proof derives TD!Fair from the new lemma SyncTerminationDetection_proof!Fairness, as suggested by Stephan Merz. tlaplus/tlapm#69 tlaplus/tlapm#321 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
lemmy
added a commit
to tlaplus/Examples
that referenced
this pull request
Oct 30, 2026
tlapm rewrites ENABLED into EnabledWrapper from the TLAPS module when it instantiates a module. If the module with the INSTANCE does not extend TLAPS, ExpandENABLED fails with "Operator EnabledWrapper not found". With tlapm#321, every instantiated WF contains ENABLED, so EWD840_proof hits this bug through TD == INSTANCE SyncTerminationDetection. tlaplus/tlapm#250 tlaplus/tlapm#321 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
lemmy
added a commit
to tlaplus/Examples
that referenced
this pull request
Oct 30, 2026
Instantiation does not distribute over ENABLED, and hence not over WF. The proof of Spec => TD!Spec relied on WF_TD!vars(TD!DetectTermination) matching the fairness conjunct of TD!Spec, which tlapm#321 no longer allows. SyncTerminationDetection now names its fairness condition Fair, and the proof derives TD!Fair from the new lemma SyncTerminationDetection_proof!Fairness, as suggested by Stephan Merz. tlaplus/tlapm#69 tlaplus/tlapm#321 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
lemmy
added a commit
to tlaplus/Examples
that referenced
this pull request
Oct 30, 2026
Instantiation does not distribute over ENABLED, and hence not over WF. The proof of Spec => TD!Spec relied on WF_TD!vars(TD!DetectTermination) matching the fairness conjunct of TD!Spec, which tlapm#321 no longer allows. SyncTerminationDetection now names its fairness condition Fair, and the proof derives TD!Fair from the new lemma SyncTerminationDetection_proof!Fairness. Apalache accepts only fairness written out in Spec, so APSyncTerminationDetection.cfg now names Init and Next instead. tlaplus/tlapm#69 tlaplus/tlapm#321 Co-authored-by: Stephan Merz <7482229+muenchnerkindl@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
lemmy
added a commit
to tlaplus/Examples
that referenced
this pull request
Oct 30, 2026
tlapm rewrites ENABLED into EnabledWrapper from the TLAPS module when it instantiates a module. If the module with the INSTANCE does not extend TLAPS, ExpandENABLED fails with "Operator EnabledWrapper not found". With tlapm#321, every instantiated WF contains ENABLED, so EWD998_proof hits this bug through TD == INSTANCE AsyncTerminationDetection. tlaplus/tlapm#250 tlaplus/tlapm#321 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
lemmy
added a commit
to tlaplus/Examples
that referenced
this pull request
Oct 30, 2026
Instantiation does not distribute over ENABLED, and hence not over WF. The proof of Spec => TD!Spec relied on WF_TD!vars(TD!DetectTermination) matching the fairness conjunct of TD!Spec, which tlapm#321 no longer allows. AsyncTerminationDetection now names its fairness condition Fair, and the proof derives TD!Fair from the new lemma AsyncTerminationDetection_proof!Fairness. tlaplus/tlapm#69 tlaplus/tlapm#321 Co-authored-by: Stephan Merz <7482229+muenchnerkindl@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
lemmy
added a commit
to tlaplus/Examples
that referenced
this pull request
Oct 30, 2026
tlapm rewrites ENABLED into EnabledWrapper from the TLAPS module when it instantiates a module. If the module with the INSTANCE does not extend TLAPS, ExpandENABLED fails with "Operator EnabledWrapper not found". With tlapm#321, every instantiated WF contains ENABLED, so EWD840_proof hits this bug through TD == INSTANCE SyncTerminationDetection. tlaplus/tlapm#250 tlaplus/tlapm#321 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
lemmy
added a commit
to tlaplus/Examples
that referenced
this pull request
Oct 30, 2026
Instantiation does not distribute over ENABLED, and hence not over WF. The proof of Spec => TD!Spec relied on WF_TD!vars(TD!DetectTermination) matching the fairness conjunct of TD!Spec, which tlapm#321 no longer allows. SyncTerminationDetection now names its fairness condition Fair, and the proof derives TD!Fair from the new lemma SyncTerminationDetection_proof!Fairness. Apalache accepts only fairness written out in Spec, so APSyncTerminationDetection.cfg now names Init and Next instead. tlaplus/tlapm#69 tlaplus/tlapm#321 Co-authored-by: Stephan Merz <7482229+muenchnerkindl@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
lemmy
added a commit
to tlaplus/Examples
that referenced
this pull request
Oct 30, 2026
tlapm rewrites ENABLED into EnabledWrapper from the TLAPS module when it instantiates a module. If the module with the INSTANCE does not extend TLAPS, ExpandENABLED fails with "Operator EnabledWrapper not found". With tlapm#321, every instantiated WF contains ENABLED, so EWD998_proof hits this bug through TD == INSTANCE AsyncTerminationDetection. tlaplus/tlapm#250 tlaplus/tlapm#321 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
lemmy
added a commit
to tlaplus/Examples
that referenced
this pull request
Oct 30, 2026
Instantiation does not distribute over ENABLED, and hence not over WF. The proof of Spec => TD!Spec relied on WF_TD!vars(TD!DetectTermination) matching the fairness conjunct of TD!Spec, which tlapm#321 no longer allows. AsyncTerminationDetection now names its fairness condition Fair, and the proof derives TD!Fair from the new lemma AsyncTerminationDetection_proof!Fairness. tlaplus/tlapm#69 tlaplus/tlapm#321 Co-authored-by: Stephan Merz <7482229+muenchnerkindl@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
lemmy
marked this pull request as ready for review
October 30, 2026 18:34
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Instantiation does not distribute over ENABLED, and hence not over WF and SF (Specifying Systems, Section 17.8). tlapm substituted into WF and SF directly. With
x <- z, y <- zit provedXY!Fair <=> WF_(XY!vars)(XY!Next), which is false, and from itSpec => XY!Spec. tlapm now expands WF and SF to their definitions in terms of ENABLED, as Section 8.9.4 suggests. Its handling of ENABLED under INSTANCE then binds the primed variables before the substitution.issue69_instantiated_fairness_stestis no longer known.issue69_instantiated_strong_fairness_stestcovers SF.Fairness_INSTANCE_testchecks that tlapm still proves the correct unfolding of instantiated WF and SF. TLC confirms its lemmas and theorems on a finite model.Fixes Github issue #69
#69
[Bug][Tests]