- Home
- Formal Verification Tools
- Stainless
On the recordRead 8 Oct 202622 facts
Stainless
On the record
- Browser workflow
- The documentation describes running Stainless in GitHub Codespaces, including through a browser.epfl-lara.github.io · read 8 Oct 2026
- Contracts
- It checks user-provided function preconditions and postconditions.epfl-lara.github.io · read 8 Oct 2026
- Correctness checks
- It can statically verify that a program conforms to a specification and cannot crash at runtime.epfl-lara.github.io · read 7 Oct 2026
- Counterexamples
- When a function does not satisfy its contract, Stainless can return a concrete counterexample.epfl-lara.github.io · read 8 Oct 2026
- Editor integration
- The project page links installation instructions for standalone use, Docker, sbt, and Metals.ecocloud.epfl.ch · read 7 Oct 2026
- Installation
- Stainless can be installed from a standalone release, through Snap or the Arch User Repository, built from source, or used as an sbt plugin.epfl-lara.github.io · read 8 Oct 2026
- Installation options
- The installation documentation lists standalone releases, Snap, source builds, and an sbt plugin.epfl-lara.github.io · read 7 Oct 2026
- Intended users
- The documentation describes using Stainless within an existing sbt project to check Scala code in enabled modules.epfl-lara.github.io · read 8 Oct 2026
- Language limits
- The language does not provide a default encoding for concurrency with a shared mutable heap.epfl-lara.github.io · read 7 Oct 2026
- License
- The repository states that Stainless is released under the Apache 2.0 license.github.com · read 8 Oct 2026
- Limitations
- The documentation warns that verification assumes unbounded data types and sufficient stack space, so verified code may still encounter stack or heap overflow at runtime.epfl-lara.github.io · read 8 Oct 2026
- Purpose
- Stainless is a verification framework and tool for a subset of the Scala programming language.github.com · read 8 Oct 2026
- Runtime requirement
- The installation documentation lists Java 17 JRE as a general requirement.epfl-lara.github.io · read 8 Oct 2026
- Safety checks
- It checks array bounds and whether pattern matches cover all possible cases.epfl-lara.github.io · read 8 Oct 2026
- Scala subset
- Stainless verifies a Pure Scala fragment and also supports certain imperative features by translating them into Pure Scala concepts.epfl-lara.github.io · read 7 Oct 2026
- Scala support
- The current repository README says Stainless supports Scala 3.5.0 and later, and no longer supports the Scala 2 frontend.github.com · read 8 Oct 2026
- Solvers
- Stainless uses the Inox backend and can use SMT solvers including Z3 and cvc5; Princess is included as a Scala-based fallback solver.epfl-lara.github.io · read 8 Oct 2026
- Solver support
- Stainless relies on Inox and supports SMT solvers including Z3, cvc5, and Princess.github.com · read 7 Oct 2026