Status
Status
Concrete is real and usable in-tree, but it is still evolving quickly.
This page is the blunt version of the project state.
Works Today
- full compiler pipeline through Core and SSA
- explicit capabilities, ownership, borrows,
defer, traits, FFI, and layout attributes - stdlib foundation with collections, systems modules, formatting, parsing, and reports
- built-in test runner and module-targeted stdlib testing
- audit/report modes for authority, trust, layout, monomorphization, and allocation
- formatter baseline and structured diagnostics
Active Frontier
The current center of gravity is Phase D:
- structured LLVM backend
- stronger SSA/backend contract
- reusable pipeline artifacts
- formalization over validated Core
- source-level contracts (
requires/ensures/invariant) and verification-condition generation — the next step now that the Lean proof workflow has shipped (refinement proofs + spec-drift gate, demonstrated end to end on HMAC-SHA256) and its reusable machinery is factored intoProofKit
Not Done Yet
- structured non-string backend
- full runtime/execution-model definition
- high-integrity profile/subset
- package/dependency model
- maintained editor/LSP-quality workflow
- operational maturity and compatibility policy
Proof Story: Real But Early
The project is serious about proofs, but it is important to separate what exists from what is planned.
What exists today:
- compiler implemented in Lean 4
- validated Core after
CoreCheckas the proof boundary - kernel-checked Lean 4 proofs on selected functions across the five graduated flagships, tied to source by body fingerprints with a spec-drift gate that revokes a
provedclaim when the body changes - a documented, additive provable subset (
ProvableV1, R-1…R-28) covering integer/bool, calls, lets, structs/enums, pattern matching, array read/update, bounded loops (incl. array-element writes), casts, and width-taggedmod/div/bitand/bitor/bitxor/shl/shr/wrapping-add - a reusable proof layer (evaluator fuel monotonicity + bounded counter-loop induction) that makes loop/array proofs systematic, with kernel-checked
bv_decideautomation - full refinement of a real cryptographic primitive against an independent spec: a
BitVec-valued SHA-256/HMAC spec, and a proof that the entire extracted SHA-256/HMAC chain refines it for all inputs in documented bounds. Thehmac_sha256flagship carries 11 registered theorems, kernel-checked (--report check-proofs= 11 verified, 0 failed); nine are full-contract refinements (block-to-words, schedule, round, compression, state serialization, multi-block padded hash, and the outer HMAC). Editing a source body turns the proofstale— regression-verified by perturbing the HMAC ipad constant (11 proved/0 stale → 10 proved/1 stale) - a reusable,
fns-generic Proof Kit (Concrete.ProofKit) harvested from that work, so later proofs import the machinery instead of copying it; see the proof-kit guide
What does not exist yet (planned, not shipped):
- source-level contracts (
requires/ensures/invariant/ghost) and automatic verification-condition generation — see the design in the docs - unbounded / general refinement: the HMAC chain is proved within documented input bounds (
k_len ≤ 128,m_len ≤ 256,len ≤ 375); removing the bounds needs fuel-parametric induction. The proofs are functional-correctness only — not cryptographic security, and not machine-level constant time - whole-compiler formal verification
Those last three are active goals, not shipped claims. The discipline is to separate what is proved from what is planned — see the proof-ladder and contracts docs in the repository.
If You Want The Current Truth
Read: