World's first

End-to-end C project formal verifier

Giolit Program Verifier 7.0

Proof your software can't fail — or see the exact input that breaks it.

Testing tries a few inputs. Giolit proves what happens for all of them — every input, every path, every thread timing across your whole C project. You get proof it can't fail, or the exact input that breaks it.

v7 7.0.0 (trial) · Linux x86-64 · exit codes for CI · SARIF for GitHub & GitLab · C++ SDK

Complete C projects formal verifier

Whole projects, not just single functions.

  • Until now only single functions could be formally verified — Giolit Verifier verifies end-to-end projects spanning multiple files.
  • The C project may include multiple threads or recursions, multiple functions and multiple files.
  • Proof for every input, not a sample — or the real bug with the exact failing input, never a false alarm.
  • Evidence, not opinions: a certificate your auditors can check.

$ v7 a.c b.c -I include -D CONFIG=1

$ v7 --entry=my_func src/*.c

$ Result — 177 benchmarks, 0 wrong answers

PDF certificateresults.jsonSARIF 2.1.0proof.jsonsourcesreproduce.sh

102 programs proven safe · 75 real bugs found with the failing input · overflow, division by zero, array-bounds, pointer safety, memory leaks — automatically on Ubuntu 24.04.

01

Proof for every input

Proves absence of run-time errors in C — overflow, division by zero, array-bounds, pointer safety, memory leaks — for every input, not a sample.

02

Fast answer, or the failing case

Several proof strategies run at once — the first answer wins. You get proof it can't fail, or the exact input that breaks it.

03

Auditable Certificates

Every run yields a PDF certificate or counterexample report with the proof on the control-flow graph, plus JSON, SARIF 2.1.0 and the full proof.

04

Built for Safety Standards

Evidence ready for ISO 26262, DO-178C, IEC 61508 & IEC 62304 reviews — with CI exit codes, SARIF gates and a C++ SDK.

C verification benchmarks

Proven on 177 C benchmarks — zero wrong answers.

Testing samples. Proof covers every input, not a sample — measured here on 177 programs. 75 are real bugs with the exact failing input, never a false alarm. Every benchmark ships in the trial with its known answer and full result bundle, so you can re-run the evidence yourself with v7 file.c. Median verification time is about 10 seconds per benchmark.

177

C benchmarks with known answers

102

programs proven safe (PROVEN)

75

real bugs found with failing input (VIOLATED)

~10s

median verification time per benchmark

Blazing fast

Answers in seconds, not hours.

Proof for every input, not a sample — or the real bug with the exact input that breaks it, never a false alarm — in seconds, with evidence your auditors can check. Several proof strategies run at once, and the first answer wins.

~10s

median per benchmark (177 benchmarks, zero wrong answers)

0.5s

concurrent proof: 2 checks PROVEN (mutex threads)

16s

35-file project proof: 9 checks PROVEN, 4870 lines linked

177 / 0

benchmarks / wrong answers — 102 safe, 75 bugs with failing input

For experts: a portfolio of invariant, contract, Owicki–Gries and CEGAR engines plus random interleavings and byte-exact execution races in parallel — first decision wins. Re-run every benchmark in the trial.

Complete C projects formal verifier

Complete C projects formal verifier — end to end, like your build.

Your whole project, checked the way you build it — proof for every input, not a sample, or the real bug with the exact failing input, never a false alarm, plus evidence your auditors can check. World's first end-to-end C project formal verifier: until now only single functions could be formally verified — Giolit Verifier verifies end-to-end projects spanning multiple files. The C project may include multiple threads or recursions, multiple functions and multiple files. v7 compiles and links all your files exactly as in a normal build — v7 a.c b.c -I include -D CONFIG=1 — verify a single function for every caller with --entry while still linking the whole project.

Multi-file compile + link

Every translation unit with its -I and -D flags, linked end to end — src/*.c with -Iinclude, just like your Makefile.

Multiple threads, proven

POSIX threads, mutexes, C11 atomics and lock-free protocols checked across every timing — races surface with the failing timing. Expert detail: Owicki–Gries proofs.

Recursion with auto contracts

Recursive functions verify against auto requires/ensures contracts instead of unrolling forever.

Multiple functions, every caller

Functions across files verified together; --entry=my_func proves one function for every caller while the full project stays linked.

kvserver scale QA

Proven at kvserver project scale.

kvserver scale QA: ~8,400 lines across 34 modules — 3 clients, 3 workers, monitor, replicator — with 7 planted bug variants and 1070 unit checks. The project certificate below links 35 files / 4870 lines end to end for entry kv_fletcher16_words in 16s: 9 proven / 0 violated, issued under license GIOLIT-PRO-2026-000011.

Small end-to-end projects

Multi-file examples in the trial.

  • Bank transfer — conservation across files — balances preserved end to end
  • Protocol FSM — state-machine safety across translation units
  • Sensor limiter — threshold logic with multi-file sensor pipeline
  • Ring buffer — bounded-buffer correctness with producer/consumer files

What it checks

Every way your code can fail — checked in one run.

If it can crash, leak, or go wrong — it's checked. One run checks all eight run-time error families at once — for every input, every path and every thread interleaving. Each check ends PROVEN, VIOLATED (with the exact failing input and step-by-step trace), UNREACHABLE or UNKNOWN within your --timeout budget. Select a subset anytime with v7 --checks=overflow,valid-deref file.c.

assertionCWE-617assert() false or reach_error() reached
overflowCWE-190Signed + − * << or INT_MIN / −1 out of range
div-by-zeroCWE-369/ or % by zero
shiftCWE-1335Negative or oversized shift amount
array-boundsCWE-787Index outside a declared array
valid-derefCWE-476 / 416Null, dangling or out-of-bounds dereference
valid-freeCWE-415 / 761Double free or free of non-malloc memory
valid-memtrack / valid-memcleanupCWE-401Memory leaks & memory left at exit

Assertions and functional properties ride on top: assert() and reach_error() are verified for every caller — including multithreaded POSIX-threads code with mutexes, C11 atomics and lock-free protocols. Download the trial and run the checks.

The product

Testing tries some cases. Proof covers every case.

Testing checks the inputs you thought of; the verifier checks all of them — all 2³² values of an int, every loop iteration, every schedule of your threads. Giolit Program Verifier brings sound formal reasoning into the software engineering workflow: PROVEN is never wrong (sound over-approximation), and VIOLATED is never a false alarm (every counterexample is replayed on exact C semantics before it is reported).

World's first end-to-end C project formal verifier, built for high-assurance environments — embedded controllers, automotive (ISO 26262), avionics (DO-178C), industrial control (IEC 61508) — the Verifier turns every run into evidence, not opinions: a certificate your auditors can re-check, or the real bug with the exact failing input, never a false alarm.

Detail for experts: PDF certificate or counterexample report with the proof drawn on the control-flow graph, plus JSON, SARIF 2.1.0 and the full proof.

Verification flow

From program to evidence.

01

Source

C program

02

Analyse

Program model

03

Verify

Formal reasoning

04

Check

Evidence

05

Report

Actionable result

What it brings

One run. Every input. Every path. Every thread timing.

Testing samples. Proof covers every input, not a sample — the verifier proves absence of run-time errors instead of sampling for them. You get the real bug with the exact failing input, never a false alarm, plus evidence your auditors can check.

For experts: a portfolio of proof engines (invariants, contracts, Owicki–Gries, CEGAR), random thread interleavings and byte-exact execution race in parallel — first decision wins.

Integer overflow & arithmetic safety

Signed overflow, division by zero and invalid shifts detected for every input value — the classic C run-time errors compilers leave undefined. Expert detail: CWE-190, CWE-369.

Memory safety: bounds, pointers, leaks

Array-bounds violations, null/dangling pointer dereferences, double/invalid free and memory leaks, each with the exact failing input and trace. Expert detail: CWE-787, CWE-476, CWE-401.

Concurrent C verification (POSIX threads, C11 atomics)

Multithreaded programs verified across every timing — mutexes, atomics and lock-free protocols included, with the failing timing when a race exists.

Proof certificates auditors can re-check

PDF certificate or counterexample report with the proof on the control-flow graph. Detail: plus JSON, SARIF 2.1.0 and proof.json.

CI gates & SDK integration

Proof that fits your pipeline: green means proven for every input, red means a real bug with the failing input. Detail: exit codes gate your build (0 proven, 1 violated, 2 unknown), SARIF uploads to GitHub & GitLab, and a C++ SDK (verify_file, unit_check, certify, ci_gate).

Safety-standard evidence (ISO 26262, DO-178C)

Formal proof recognised as evidence by DO-178C, ISO 26262 and IEC 61508 — produced as signed certificates ready for reviews and safety cases.

Designed for

Built for real C projects — big, multi-file, multi-thread.

If it's real C code — one file or dozens, one thread or many — it fits. Sequential C, recursive functions, multithreaded POSIX-threads code, multi-file projects linked as in your build, and single functions verified for every caller with --entry. Inputs are nondeterministic values, entry-function parameters, volatile variables and external data — constrained with __VERIFIER_assume. The trial package demonstrates each class with runnable examples.

Sequential C programsRecursive C functionsMultithreaded C (POSIX threads, mutexes, C11 atomics)Multi-file C projectsSingle functions for every caller (--entry)Assertions & run-time safety properties

Verification outcomes

PROVEN

The selected property is established under the verification model.

VIOLATED

A concrete failing behaviour can be reported when a property does not hold.

UNREACHABLE

The relevant operation cannot be reached from the analysed entry point.

UNKNOWN

The analysis remains undecided within the configured verification budget.

One command

One command. A clear answer: proven, or broken with proof.

No annotations, no harnesses. Point v7 at your C files and get a clear answer per check — proven for every input, or broken with the exact failing input and every step, plus a certificate your auditors can check.

Detail: PDF certificate + JSON, SARIF and proof in --report=DIR with CI-ready exit codes.

ubuntu@24.04 — v7 7.0.0 (trial)

$ tar xzf giolit-verifier-7.0.0-trial.tar.gz && ./install.sh

$ v7 examples/safe.c

[overflow] PROVEN — no signed overflow on any input

[valid-deref] PROVEN — no null/dangling access on any path

VERDICT: PROVEN (exit 0) — certificate.pdf + results.json + report.sarif + proof.json

$ v7 examples/bug.c --report=out

[overflow] VIOLATED — x = 2147483647, x + 1 overflows (trace: main:7 → add:3)

VERDICT: VIOLATED (exit 1) — counterexample report with failing input + every step

$ v7 --license

trial: 982 runs left, 47 days left (uses no runs)

Example certifications

Real certificates: PROVEN or VIOLATED with full evidence.

Proof you can hand to an auditor — or the exact failure, step by step, never a false alarm. Every verification yields a certificate or report with evidence you can re-check. These are real pro-engine outputs, issued under license GIOLIT-PRO-2026-000011: concurrent proof, race violation with the failing timing, and a multi-file project proof linking all files end to end.

Detail: full evidence — PDF + results.json + SARIF 2.1.0 + proof.json + sources + reproduce.sh.

Verification certificate screenshot — concurrent mutex proof, 06_threads_mutex.c, 2 checks PROVEN in 0.5 seconds

PROVEN

Concurrent mutex — all checks proven

2 PROVEN / 0 violated · 0.5s · 1 file · 25 lines

06_threads_mutex.c (entry main)

Download PDF
Verification report screenshot — threads race violation, 07_threads_race.c, 1 violated with failing interleaving in 0.3 seconds

VIOLATED

Threads race — violation found

1 violated + failing interleaving (2 checks: 1 proven, 1 violated) · 0.3s · 1 file · 23 lines

07_threads_race.c (entry main)

Download PDF
Multi-file C project verification certificate screenshot — kvserver entry kv_fletcher16_words, 9 proven in 16 seconds across 35 files

PROVEN

kvserver project — per-function proof

9 proven / 0 violated · 16s · 35 files / 4870 lines

2186 checks: 9 proven, 0 violated, 2177 unreachable · entry kv_fletcher16_words · -DKV_SEQUENTIAL -Iinclude · license GIOLIT-PRO-2026-000011

Download PDF

CI, SARIF & SDK

Proof that fits your pipeline.

Verification belongs in your pipeline, not on a side desk. Green means proven for every input, red means a real bug with the exact failing input, never a false alarm — plus a certificate your auditors can check.

Detail: exit codes gate the build — 0 all proven, 1 violated, 2 unknown, 3 usage error, 4 no license — while --sarif output uploads straight to GitHub code scanning or GitLab. A public C++ SDK (verify_file, unit_check, certify, ci_gate) lets you embed the C verifier in your own tools.

Pipeline snippet

$ v7 src/*.c --timeout=300 --report=proof

$ test $? -eq 0 || exit 1 # fail build on VIOLATED

# upload proof/report.sarif to GitHub code scanning

Exit 0all checks PROVEN — merge with a certificate attached
Exit 1a check VIOLATED — failing input + trace in the report
Exit 2 / 3 / 4unknown in budget, usage error, or no license

Trial terms

System requirements and trial terms: Ubuntu 24.04, 1000 runs, 50 days.

The trial (giolit-verifier-7.0.0-trial.tar.gz) allows 1000 runs within 50 days on one Linux x86-64 computer — Ubuntu 24.04 LTS or newer, LLVM/Clang 18, libc6-dev, libssl3 (LuaLaTeX + qpdf for PDFs). It includes the v7 command, 12 tutorial examples, 177 benchmarks with known answers and every result bundle. v7 --license shows runs and days left without using a run.

FAQ

C verifier FAQ: proof, coverage, trial.

Short answers to the questions every team asks before trusting a C program verifier — what PROVEN means, what it covers, and what the trial includes.

What does Giolit Program Verifier prove about my C code?

01

For every input, every path and every thread interleaving: no failed assertion, no signed integer overflow, no division by zero, no invalid shift, no out-of-bounds array access, no null/dangling pointer dereference, no double/invalid free and no memory leak. Each check ends PROVEN, VIOLATED (with the exact failing input and every step), UNREACHABLE or UNKNOWN within your --timeout budget.

How is this different from testing?

02

Testing checks the inputs you thought of — the verifier covers all of them (all 2³² values of an int, every loop iteration, every thread schedule). PROVEN is never wrong (sound over-approximation) and VIOLATED is never a false alarm (every counterexample is replayed on exact C semantics). You get a PDF certificate with the proof drawn on the control-flow graph, plus JSON, SARIF and proof.json for independent re-checking.

Which C programs and inputs does it handle?

03

Sequential C, recursive functions, multithreaded POSIX-threads code (mutexes, C11 atomics, lock-free protocols), multi-file projects linked as in your build, and single functions verified for every caller with --entry. Inputs are __VERIFIER_nondet_*() values, entry-function parameters, volatile variables and external data — constrained with __VERIFIER_assume(cond).

How do I run it and gate CI?

04

v7 file.c [file.c ...] with --checks, --entry, --timeout and --report=DIR for the PDF + JSON + SARIF + proof bundle. Exit codes gate your build: 0 all proven, 1 violated, 2 unknown, 3 usage error, 4 no license. Upload --sarif to GitHub code scanning or GitLab, or embed via the C++ SDK (verify_file, unit_check, certify, ci_gate).

What is in the trial and what do I need to run it?

05

giolit-verifier-7.0.0-trial.tar.gz: the v7 command, 12 tutorial examples, 177 benchmarks with known answers and every result bundle, plus Tutorial, Product Overview, README and License Terms. Trial = 1000 runs within 50 days on one Linux x86-64 machine (Ubuntu 24.04+, libllvm18, libclang-cpp18, libc6-dev, libssl3; LuaLaTeX + qpdf for PDFs). v7 --license shows runs and days left without using a run.

Which safety standards is it built for?

06

Embedded controllers, automotive (ISO 26262), avionics (DO-178C), industrial control (IEC 61508), medical devices, protocol parsers, security boundaries and libraries with many callers. DO-178C, ISO 26262 and IEC 61508 recognise formal proof as evidence — the verifier produces that evidence as a signed certificate ready for audits and safety cases.

How does end-to-end C project verification work?

07

v7 compiles and links all your files exactly as in a normal build — v7 a.c b.c -I include -D CONFIG=1 — spanning multiple threads (POSIX threads, mutexes, C11 atomics with Owicki-Gries proofs), recursion via auto requires/ensures contracts, and multiple functions across multiple files. Verify one function for every caller with --entry while still linking the whole project. Every run yields full evidence: PDF + results.json + SARIF 2.1.0 + proof.json + sources + reproduce.sh.

What does the kvserver project certificate prove?

08

It links all 35 project files (4870 lines) end to end for entry kv_fletcher16_words: 9 proven / 0 violated in 16s, issued under license GIOLIT-PRO-2026-000011 — a per-function proof for every caller with the full project linked.

Commercial licensing

Prove your C code — start free

Bring Giolit Program Verifier into your high-assurance software workflow. Start with the free 1000-run trial for Ubuntu 24.04 — or talk to us about production licensing for your team and CI.