Skip to Content
Quint

Quint Launch Event Follow-Up Q&A and Recap

Written by: Gabriela Moreira
Quint launch event cover image

Event Recap

Gabriela Moreira, Lead Developer of Quint, shared the project’s journey and vision. Industry experts Giuliano Losa (Stellar Development Foundation) and Julian Compagni Portis (Neutron) discussed real-world applications of formal methods. The team demonstrated Quint’s capabilities and announced the open-sourcing of its new Rust core, with details available on GitHub.

Addressing Your Questions

On Using Quint Beyond Blockchain

Q: Is Quint suitable for non-blockchain systems like client-server applications?

A: Quint adds value when you need greater confidence about system behavior. It’s particularly useful when concerned that complex interactions between components might create problematic scenarios. The cost-benefit depends on your confidence level in the system’s correctness.

On Asynchronous Communication

Q: Does Quint support asynchronous messaging with buffers?

A: Yes, through general-purpose implementations. The team typically abstracts communication as a global message set. For “at-least-once” delivery models, messages aren’t removed upon consumption, allowing duplicate handling scenarios.

Q: What trends shape the formal methods field, and where does Quint fit?

A: Making formal methods accessible is a widespread goal with varying approaches. PlusCal was made on top of TLA+ to make it more like an imperative language, but it didn’t solve the syntax and the tooling issue, like Quint does. Quint emphasizes that specification writing remains valuable when paired with strong language design and tooling.

On Language Integrations

Q: Will Quint integrate with languages like Haskell?

A: Model-Based Testing is the preferred approach for bridging specification and implementation. Quint provides trace-parsing libraries, currently available for Rust via the itf crate. Python and Haskell libraries could follow based on community demand.

On Counterexample Checking

Q: How does Quint verify properties? Is it bounded?

A: The quint verify command uses Apalache with the Z3 SMT solver for bounded model checking (examining executions up to specified lengths). TLC is available for unbounded checking through a shell script. Seamless TLC integration is planned. While Apalache bounds execution length, it handles unbounded integer variables efficiently through SMT reasoning.

On Code Generation

Q: Can Quint specs be transpiled into target languages?

A: While theoretically possible, practical code generation from specs is challenging since specifications are more abstract than implementations. Model-Based Testing offers a more realistic approach — specifications guide test creation that validate implementation correctness against the spec.

On Model Checker Selection

Q: Is Apalache + Z3 the standard verification approach?

A: No single tool dominates. Both Apalache and TLC excel in different contexts, with performance varying by specification type. Comparison details appear in the documentation.

On Quint’s Self-Verification

Q: Is Quint itself formally verified?

A: No. Most model-checking tools aren’t formally verified. Quint is primarily a compiler, and compiler verification typically requires proof assistants like Coq or Lean.

On Example Coverage

Q: Are there examples of multiple communicating state machines?

A: The team is developing templates for common use cases. Standalone repositories like Malachite and Mysticeti demonstrate communication patterns.

On Lean Integration

Q: Are there plans for Lean integration?

A: A recent post suggests emerging possibilities, though no formal plans exist.

On Model-Based Testing with Rust

Q: Can I test actual Rust implementations using Quint traces?

A: Yes. Write “glue code” that reads Quint traces and invokes corresponding functions. An example demonstrates this approach.

On Community Platforms

Q: Would Slack be better than Telegram?

A: A Zulip stream provides Slack-like structure, though Telegram sees higher activity. The team welcomes community preference guidance.

On Built-in Types

Q: Will Quint add more built-in types or rely on spell-based implementations?

A: The philosophy favors spells (user-defined abstractions) over built-ins to reduce maintenance. Eventually, spells will form a standard library with package management, achieving built-in-like accessibility.

On Type Systems

Q: Does Quint have type checking?

A: Yes. Only state variables and constants require type annotations; everything else uses type inference. An effect system ensures variables are accessed appropriately.

On Rust Project Integration

Q: What’s needed to use Quint with a Rust project?

A: Begin with a Quint model (no boilerplate required). For Model-Based Testing, use the itf library, as demonstrated here.

On Learning Quint

Q: What’s the fastest way to learn Quint?

A: Start with the official website, then write your own spec for any system. Ask questions on Telegram, Zulip, or GitHub Discussions. Contributing examples to the repository provides peer feedback.


Next Steps: Explore the Getting Started tutorial and share feedback in the Telegram community. For specialized assistance, contact audits@informal.systems.

Last updated on