Skip to content
Phillip Allen Lane edited this page Apr 16, 2026 · 3 revisions

What is Castor?

Castor is a tool that bridges the ROSE compiler framework with the Why3 verification framework. Currently, the only supported frontend is C++, but we are looking at more frontends in the future.

Castor in its current state is an in-development tool enabling formal verification of idiomatic C++. C++ can be written with verification conditions embedded in #pragma statements, and Castor will convert the program into a WhyML program which can be verified by the Why3 framework, including automated verification with SMT solvers.

There is currently limited but growing support for C++ features, and a custom verification language for writing verification conditions. These are outlined in this manual.

Table of Contents

  1. Implementation Decisions - Overviews certain implementation decisions made by Castor for C++ features that are left implementation-defined
  2. Supported C++ Features - Outlines the currently supported subset of C++
  3. The Verification Language - Outlines the grammar and basic usage of the verification language
  4. Verification Language Builtins - Outlines certain builtin functions and literals to the verification language to assist in expressing verification conditions
  5. What is Verified? - Explains what all Castor checks in addition to proving VCs

Release

This software manual is released as LLNL-SM-2018190.

Clone this wiki locally