Skip to main content

Glossary

Terms that appear throughout the Verum documentation, with precise meanings.

A

Affine type — A type whose values may be used at most once; the compiler forbids duplication but allows discarding. Declared with type affine T is ....

AOT — Ahead-of-Time compilation. Verum's LLVM backend that produces native binaries. Tier 1 of the two-tier execution model.

Aliasing — Multiple references to the same value. Verum's rules: any number of immutable (&T), or exactly one mutable (&mut T).

Attribute — A compile-time annotation written with @ prefix, such as @derive(Clone) or @verify(formal).

C

Capability — (1) In the context system, a typed effect like Database or Logger. (2) In CBGR, one of eight bits indicating a reference's allowed operations (READ, WRITE, EXECUTE, DELEGATE, REVOKE, BORROWED, MUTABLE, NO_ESCAPE), subject to monotonic attenuation.

CBGR — Capability-Based Generational References. Verum's default memory safety mechanism: ~15 ns runtime check per deref.

Cog — A Verum package. Distributable archive containing VBC, metadata, and optional proof certificates.

Context — A typed capability requested via using [...] and provided via provide. Replaces globals / thread-locals.

Contract — A function specification: where requires, where ensures, loop invariant, decreases.

Cubical — Cubical type theory. Verum's foundation for path types and higher-inductive types with computational univalence.

D

Dependent type — A type that depends on a value. Π-types (function types whose return depends on an argument), Σ-types (pairs whose second depends on the first), path types.

Derive — Automatic generation of protocol implementations via @derive(P).

E

Epoch — A counter in CBGR that prevents generation wraparound. Each thread advances its epoch periodically.

Escape analysis — Compile-time inference of whether a reference can outlive the scope that produced it. Used to promote &T to &checked T.

Execution mode — Interpreter (direct VBC interpretation, instant startup) or AOT (VBC lowered through LLVM for CPU, or MLIR for @device(gpu) code). Verum does not have a JIT tier. See Runtime tiers.

Execution tier — The CBGR safety tier attached to each reference: Tier0_Full (~15 ns), Tier1_Epoch (~8 ns), Tier2_Gen (~3 ns), Tier3_Unchecked (0 ns). Independent of execution mode.

F

FatRef — 32-byte reference for unsized types (slices, dyn).

FFI — Foreign Function Interface. extern "C" blocks; C ABI only.

G

Generation — A 32-bit counter in an allocation's CBGR header, incremented on free. A reference with a stale generation is rejected.

Generic — A type or function parameterised by types, const values, lifetimes, kinds, or contexts.

H

HIT — Higher-Inductive Type. A sum type with path constructors — i.e., constructors that produce equalities, not just values.

HoTT — Homotopy Type Theory. The family of type theories in which path types and univalence are first-class. Verum implements a cubical fragment.

I

Incremental compilation — Re-compiling only the functions whose source or dependencies changed. Verum's default mode.

Invariant — A property that holds at every iteration of a loop, stated with invariant clause.

is — Reserved keyword. Used in type T is ... and as a pattern / type-test operator.

L

Linear type — A type whose values must be used exactly once. Stronger than affine.

LSP — Language Server Protocol. verum lsp implements LSP 3.17.

M

Mathesis — Verum's ∞-topos of formal theories; a research-facing stdlib module.

Meta functionmeta fn — a function that runs at compile time.

MIR — Mid-level IR used during optimisation phases, between AST and VBC.

Module — A .vr file or a directory with mod.vr. Imported with mount.

N

Nursery — A structured-concurrency scope. Owns a set of tasks; does not return until they are all joined or cancelled.

O

Obligation — A proof requirement generated by the verifier, such as "prove xs[i] is in bounds" or "prove the postcondition holds."

Orphan rule — Cross-cog protocol-implementation coherence: an implement P for T is valid only if P or T is from the defining cog.

P

Path typePath<A>(a, b) — a proof that a and b are equal in type A, treated as data that can be transported.

Portfolio (verification) — Running the SMT backend in parallel on the same obligation and cross-validating.

Protocol — A trait / interface. Declared as type P is protocol { ... }.

R

Refinement type — A type plus a predicate that every value must satisfy: Int { self > 0 }.

Refinement reflection — Extending the refinement vocabulary by making @logic functions available as SMT axioms.

S

Semantic honesty — Verum's rule that type names describe meaning, not implementation: List (not Vec), Text (not String).

SMT — Satisfiability Modulo Theories. The class of solvers Verum's verification backend dispatches to. Language-level Verum does not commit to a specific SMT solver; the current implementation bundles Z3 and CVC5 as backends behind the capability router, and a Verum-native solver is on the roadmap.

SSA — Static single assignment form. Used by CBGR analysis.

Structured concurrency — Concurrency organised into lexical scopes (nurseries) that own their tasks' lifetimes.

T

Task — A unit of async execution. Spawned with spawn; joined via a JoinHandle.

Theorem — A proved statement declared with the theorem keyword.

ThinRef — 16-byte reference for sized types.

Tier — See "Execution tier" and "Reference tier."

Transport — Moving a value along a type-level path. Key operation in cubical type theory.

U

Univalence — The axiom "type equivalence is type equality." Verum implements it computationally in its cubical fragment.

V

V-LLSI — Verum Low-Level System Interface. Zero-FFI kernel layer.

VBC — Verum ByteCode. The compiler's unified intermediate representation. Every tier runs on VBC.

VCS — Verum Conformance Suite. The comprehensive language test suite at vcs/.

Z

Z3 — One of the SMT solvers the current verification backend can dispatch to (alongside CVC5). Implementation detail, not a language commitment — see SMT.