-
-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Typechecking crashes with IllegalArgumentException: Unsupported expression
on unbounded quantification (e.g., \A x: P
).
#2816
Comments
IllegalArgumentException: Unsupported expression
on ∀g: (∀h: (((C!WFInductiveDefines(g, S, Def)) ∧ (C!WFInductiveDefines(h, S, Def))) ⇒ (g = h)))
Thank you for the report! Any chance you could provide a minimal reproduction? That would help expedite debugging. |
Nevermind! I can reproduce this on with
The type checker is chocking on the second formula of
|
Yes, sorry I should have dug a little deeper here. A simpler example is to run |
No worries! I found it quickly. This is a great report as is, I was just being greedy in asking for more :D |
Got it Minimal repro---------------------------- MODULE test --------------------------
Foo == \A g: TRUE
================================================================= DagnosisThe crash is an error in the type checker, as the offending case says it should not be reachable: But the root cause of the impact on your work is the fact that we do not support unbounded quantification. See https://apalache.informal.systems/docs/lang/logic.html#unbounded-universal-quantifier. So, e.g., if we add a bound to the quantified
Proposed workaroundTo unblock your work, aiming to reuse as much of In general, the current workaround for this kind of limitation -- i.e. where a TLA+ spec includes some theorems which Apalache does not support -- is to factor the theorems into an extension of the module we mean to check. FixesI am considering at least two fixes two address this report:
PrioritizationSince the functional limitation follows from known and documented unsupported TLA+ expressions, and since we have a known and documented workaround suitable for any practical model checking effort, I think we can classify this as a non-critical UX bug. |
@nano-o Sorry there isn't an easy fix to allow you to use |
IllegalArgumentException: Unsupported expression
on ∀g: (∀h: (((C!WFInductiveDefines(g, S, Def)) ∧ (C!WFInductiveDefines(h, S, Def))) ⇒ (g = h)))
IllegalArgumentException: Unsupported expression
on unbounded quantification
IllegalArgumentException: Unsupported expression
on unbounded quantificationIllegalArgumentException: Unsupported expression
on unbounded quantification (e.g., \A x: P
).
It looks to me like the problematic definitions are only used in TLAPS proofs. So could Apalache just ignore them? |
Ah sorry that's what you are suggesting in Item 2 above. |
Description
I am trying to set things up to model-check Voting.tla with Apalache. I would like to reuse Voting.tla as much as possible, so I created ApaVoting.tla, which instantiates Voting.tla, and ApaVoting.cfg, which substitutes 2 definitions of Voting.tla that are problematic for Apalache. However Apalache crashes as below.
See this PR for context: tlaplus/Examples#112
Impact
I have to duplicate most of Voting.tla in order to analyze with Apalache instead of being able to reuse it. See Voting2.tla and ApaVoting2.tla
The command line parameters used to run the tool
Expected behavior
No error
Log files
System information
0.44.2 build v0.44.2
Linux
17.0.9
Triage checklist (for maintainers)
The text was updated successfully, but these errors were encountered: