Stainless
The facts below are what the maker publishes about Stainless, checked and dated. Our editors have not written about it yet.
The facts
Each one read from Stainless's own pages, with the date it was checked.
Where it runs
- Browser workflow
- The documentation describes running Stainless in GitHub Codespaces, including through a browser.checked 8 Oct 2026
What it does
- Contracts
- It checks user-provided function preconditions and postconditions.checked 8 Oct 2026
- Correctness checks
- It can statically verify that a program conforms to a specification and cannot crash at runtime.checked 7 Oct 2026
- Counterexamples
- When a function does not satisfy its contract, Stainless can return a concrete counterexample.checked 8 Oct 2026
- Editor integration
- The project page links installation instructions for standalone use, Docker, sbt, and Metals.checked 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.checked 8 Oct 2026
- Installation options
- The installation documentation lists standalone releases, Snap, source builds, and an sbt plugin.checked 7 Oct 2026
- Intended users
- The documentation describes using Stainless within an existing sbt project to check Scala code in enabled modules.checked 8 Oct 2026
- Language limits
- The language does not provide a default encoding for concurrency with a shared mutable heap.checked 7 Oct 2026
- License
- The repository states that Stainless is released under the Apache 2.0 license.checked 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.checked 8 Oct 2026
- Purpose
- Stainless is a verification framework and tool for a subset of the Scala programming language.checked 8 Oct 2026
- Runtime requirement
- The installation documentation lists Java 17 JRE as a general requirement.checked 8 Oct 2026
- Safety checks
- It checks array bounds and whether pattern matches cover all possible cases.checked 8 Oct 2026
- Scala subset
- Stainless verifies a Pure Scala fragment and also supports certain imperative features by translating them into Pure Scala concepts.checked 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.checked 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.checked 8 Oct 2026
- Solver support
- Stainless relies on Inox and supports SMT solvers including Z3, cvc5, and Princess.checked 7 Oct 2026
- Supported Scala version
- The repository says the current frontend supports Scala 3.5.0 and later and no longer supports Scala 2.checked 7 Oct 2026
- Termination
- Stainless attempts to prove termination and lets users specify a decreasing measure when automatic checking does not suffice.checked 8 Oct 2026
- Use cases
- The project page reports use in proving compression and decompression algorithms, aspects of file systems, distributed algorithms, type systems, balanced trees, and student assignments.checked 7 Oct 2026
- Who it is for
- The documentation describes Stainless as a tool to help developers build verified Scala software.checked 7 Oct 2026



