- Notifications
You must be signed in to change notification settings - Fork79
-
I don't find an answer in the document, so I start a discussion hoping someone could help me. It looks like Quint is a syntactic sugar of TLA+ and can be translated into it. I'm a little curious if Quint has any other advantages or features over TLA+, besides being closer to programming languages in syntax and more user-friendly for beginners. |
BetaWas this translation helpful?Give feedback.
All reactions
Replies: 3 comments 1 reply
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
-
Hi,@michwqy! Thank you for starting the discussion. The best place to look for existing documents that address this question would be ourDesign Principles. But I think it's great to have more situated discussions on this important topic. Before addressing your question, let me remark in this:
It is worth clarifying that Quint is analternative surface syntax for expressing
Now, to your question:
We definitely do aim for those two goals! Here are some of the additional value
Lastly, I'd like to note that most of the Quint devs are big fans of TLA+! We Please let us know if you have any more questions, thoughts, or ideas! |
BetaWas this translation helpful?Give feedback.
All reactions
-
Hi@michwqy! Thanks for asking this question.@shonfeder has already covered the large part of our motivation behind Quint. He did not mentioned our initial hypothesis though: It is hard to write a parser for TLA+ and, as result, it makes it hard for engineers to learn its syntax. Basically, we do not want to change the logic of TLA+ too much, but we are aiming at proving an alternative syntax for the logic of TLA+. One relatively major change is that we are using Another hypothesis that we are checking is whether there is a larger community of engineers who are not learning TLA+ just because of its syntax and lack of tool support that they find in the mainstream programming languages. I have also presented some of these points in the talk at the TLA+ Community Meeting 2023. You can checkthe slides. Sure, the slides are not as helpful as seeing a talk. We will probably record a talk in the future. |
BetaWas this translation helpful?Give feedback.
All reactions
-
Thanks very much for your relies@shonfeder@konnov . I wll try to summarize it, because I'm not sure if I get it right. Quint is a newly designed specification language expressing the temporal logic of actions, and it has own simulator and model checking tool. Although Quint can be transpiled into TLA+, there are some syntactic differences between Quint and TLA+. Besides, after reading the slides mentioned by@konnov and the paper metioned in the slides, I have some other questions. Question 1 As far as my personal learning and use experience is concerned, the use of symbolic model detection is faced with a dilemma. For systems with small variable range (or behavior scale), symbolic model checking is significantly slower than explicit model checking. For systems with an unbounded (at least very large) range of variables (or behavioral scale), symbolic model checking is not as effective as testing methods based on satisfiability modulo theories (SMT) (like symbolic execution) or theorem proving. Symbolic Execution can customize the path search strategy and is closer to the programming language (or implementation). Am I right? Or any suggestions for the use of symbolic model checking. Question 2 As mentioned in the slides, there are gaps between design ducuments, formal specification, and implemation codes. Quint provides a syntax closer to programming languages, reducing the gap between the latter two. Are there any other methods to reduce the gaps? Like making specification more easily updated with design or implementation updates. Or model-driven test/ model-based test?
I originally thought this meant that Quint could not only be used for validation, but also be converted into programming languages for execution. |
BetaWas this translation helpful?Give feedback.
All reactions
-
Hi@michwqy, I was going over the discussions and noticed that your questions went unanswered, so I hope it's not too late if I take a stab at answering them. For reference, I'm also an Apalache developer:
Depends on your definition of "significantly", but in terms of human-observable differences, for small examples, both approaches are basically instantaneous, in my experience.
Symbolic model checking, at least in Apalache,IS SMT solving. Originally, people might have understood "symbolic model checking" to be BDD-based, but this is no longer common terminology.
Yes, primarily model-based testing. Quint and Apalache both utilize a common trace-representation format, calledITF, which can be consumed by other tools to basically drive a concrete implementation. There's actually a prototype tool that does exactly this, calledAtomkraft
At present, we have no plans of supporting conversion to programming languages (e.g. Quint -> Python, Quint -> Rust or Quint -> Go, etc.). Quint is executable in the sense that it has its own simulator in Typescript, and REPL, that is, you can take a quint spec, invoke a function or action, and observe the result of the computation. |
BetaWas this translation helpful?Give feedback.