Skip to main content

Knowledge-System Verification Profile

A knowledge system needs more than a Boolean “verified” field. It must retain what was checked, under which assumptions, by which mechanism, and whether that check completed. This page defines a narrow, reproducible Verum profile and the interface requirements for using it in Noesis. The certificate checker is available; the Noesis adapter and receipt store are integration requirements, not an existing Verum command.

The minimal proof-term profile​

The input is a closed .vproof JSON certificate containing term and claimed_type. The authority is verum_kernel::proof_checker::Certificate::verify, exposed by verum check-proof. Its calculus includes dependent functions, dependent pairs and the implemented identity-type fragment. It has no arbitrary axiom or solver-witness constructor.

At the proof-term level, supported assumptions can be explicit Π binders in a conditional theorem. An unsupported foundation or construction requires a different declared checker profile; a foundation tag cannot extend the inference rules of this one.

Source-to-goal boundary​

A source declaration and a correctly typed kernel term are different inputs. The source bridge enforces the following admission limits:

Entry pointAccepted input or explicit refusal
from_theorem_declParameter-free, premise-free theorem/lemma propositions in the supported proposition vocabulary; generic parameters, value parameters and requires clauses return UnsupportedExpression
elaborate_theoremUses the same goal conversion and requires a supported proof body; unsupported goal translation produces no certificate
from_fn_declSource function-contract conversion returns UnsupportedExpression; signature, result, body relation and connective semantics are not supplied by this bridge
from_refined_typeSource refinement conversion returns UnsupportedExpression; its actual base type and binder are not replaced by Universe(0)
VerificationGoal / from_refinementExplicit formal goal construction remains available; from_refinement requires a caller-supplied kernel Term for the base type and a supported predicate/context

The low-level APIs require correctly scoped formal inputs. They do not establish a translation of an arbitrary source declaration, and constructing a goal does not prove it. Compiler-facing runtime and SMT contract checking are separate routes with their own evidence and trust boundaries.

Boolean literal propositions are outside the source translator's supported encoding. The CLI reports unsupported elaboration as Skipped; a run in which every theorem is skipped fails unless --allow-empty is requested. An admission profile must not use that override to claim proof coverage.

Free proposition atoms may be generalized as opaque formal parameters; this is distinct from translating a declared source parameter's type. Noesis must bind the exact formal claimed_type to its intended statement. A producer's “verified” label does not establish that correspondence. The external proof exporter is another route with partial translations and scaffolds.

The source boundary is implemented in verification_goal.rs and tactic_elaborator.rs.

Certificate.metadata is not inspected for logical acceptance. A theorem name, source path, foundation label or claimed resource count placed there must not grant authority to a consumer.

Reproduce acceptance and rejection​

From a Verum language checkout, select the binary explicitly:

VERUM_BIN="$(command -v verum)"
"$VERUM_BIN" --version
shasum -a 256 "$VERUM_BIN"
"$VERUM_BIN" check-proof \
core/verify/proof_term_examples/identity_at_universe_0.vproof
"$VERUM_BIN" check-proof \
core/verify/proof_term_examples/adversarial/reject_free_variable.vproof

The identity certificate should be accepted. The free-variable certificate should be rejected with an unbound-variable diagnostic. An installation, parsing or process failure is not the expected negative result. When a newly built checker is under evaluation, set VERUM_BIN to that exact binary; a globally installed executable need not contain source changes.

For the checked-in certificate collection and comparison mechanisms:

"$VERUM_BIN" audit --proof-term-library --format json
"$VERUM_BIN" audit --differential-kernel --format json
"$VERUM_BIN" audit --differential-lean-checker --format json

These are distinct checks. The library audit exercises the retained certificates. The in-process comparison includes direct and NbE algorithms and a manifest-backed wrapper around the direct algorithm. The Lean comparison executes Verum's reference checker written in Lean; it does not prove every Verum theorem in Lean's own object logic. Missing foreign tools, skipped inputs and checker disagreements must remain visible in the report. Noesis should require its selected checks to complete before publishing an acceptance receipt.

For source and test ownership, see check_proof.rs, proof_checker.rs and the canonical examples.

Evidence that Noesis must retain​

The following is a consumer contract, separate from the current .vproof wire format. It can be implemented without depending on SYNARC.

RecordRequired meaning
StatementExact formal statement, its encoding, and a stable link to the human-readable claim
EnvironmentAssumptions, definitions, imports and their content identities; the selected logical foundation
ArtifactExact certificate bytes and a content hash; provenance of the producer
Checker profileExecutable identity, checker/calculus version, decoding policy and invocation
Resource policyDeclared limits, observed usage where available, timeout or exhaustion outcome
ResultAccepted by this profile, rejected certificate, or incomplete/unavailable check, with diagnostics
TranslationSource/target statements and the evidence that their intended meanings correspond

A rejected certificate does not prove the negation of its claimed theorem. An incomplete check proves neither the theorem nor its negation. A successful check proves the formal judgment under the profile's assumptions; it does not verify a natural-language gloss or an empirical claim about the world.

Every dependency change creates a new verification context. Results may be reused only when the full statement, environment and policy identities still match, or a checked transport establishes the required preservation. An identical theorem title or citation string is insufficient. Preserve the old receipt for its old context instead of silently rewriting its meaning.

Foundations and translations​

foundation_profile::FoundationDistribution classifies declared framework citations, reports unresolved names and checks a finite collection of known incompatibilities. In particular, the UIP/univalence conflict must be interpreted at the same type/universe scope: UIP for a restricted family of sets is different from asserting UIP for all types in a univalent universe. A category label alone cannot settle that distinction.

Noesis should keep theory environments separate and make interpretations explicit. For a translation T from theory A to theory B, proof preservation requires a justified map from each admitted source derivation A ⊢ p : P to a target derivation B ⊢ T(p) : T(P), with translated assumptions recorded. Faithfulness, conservativity and equivalence are stronger properties and need their own arguments. A target file that introduces T(P) as an axiom has recorded an assumption, not transported its source proof.

Proof export and external-prover replay must therefore be classified by the artifact they actually check: statement scaffolds, formal derivations and conditional metatheory exports have different evidential force.

Resource discipline​

A proof service accepts untrusted artifacts. Limits should cover decoding, term size and depth, conversion, allocations and the outer process. A fuel counter on one reduction routine does not bound the entire verification transaction or its peak RAM. Use process isolation and external resource limits where the selected checker does not provide those guarantees.

The intended contract is monotone in evidence: exhausting a budget grants no new logical authority. A service may retry with a larger budget while retaining the statement and environment. Its receipt must distinguish a bounded attempt from a completed rejection and must not turn a truncated normal form into an asserted normal form.

What this architecture makes possible​

Verum's useful direction is a common, inspectable interface between executable code, proof terms and theory dependencies. For Noesis, that supports several concrete capabilities:

  • Assumption-aware knowledge reuse: preserve which results remain available when a foundation, definition or imported theorem changes.
  • Checked cross-theory work: separate translations of vocabulary from proof-preserving interpretations and retain the obligations of each bridge.
  • Multiple proof producers: humans, tactics, solvers and cognitive agents can propose artifacts through the same admission interface. Their identity does not alter the proof requirement.
  • Bounded, revisable verification: keep unfinished work actionable, reproducible and distinct from established claims.

These are architectural requirements with testable interfaces. Completion means an actual adapter preserves these distinctions through import, checking, storage and retrieval. The profile does not presume a general consistency decider, a universal foundation or automatic proof translation.