Every capability falls out of the same structure.

Corroboration, contradiction, causal prediction, temporal decay, gap analysis — these aren't features bolted onto a database. They're consequences of storing claims instead of facts.

The Claim

A claim is a 7-tuple: who asserted what, about which entities, with what confidence, when, in which namespace.

C = (Subject, Predicate, Object, Provenance, Confidence, Timestamp, Namespace)

Claims are immutable and append-only. The system never modifies or deletes a claim. New information creates new claims. Retraction creates a tombstone — the original is preserved for audit.

The Dual Identity System

Every claim carries two cryptographic identifiers. This is the structural trick that makes corroboration and deduplication automatic.

claim_id

SHA-256( S | P | O | source | timestamp )

The claim's unique identity. No two distinct claims share a claim_id. It answers: who said what, when?

content_id

SHA-256( S | P | O )

The claim's semantic identity — what fact it asserts, regardless of who said it or when. All claims asserting the same triple share a content_id.

Three labs publish "Drug X activates Gene A." Each gets a unique claim_id. But they share a content_id — because they're asserting the same fact. That shared ID is how the engine counts independent sources automatically.

Corroboration

When multiple independent sources assert the same fact, the engine boosts confidence logarithmically. One source gives no boost. Two gives 1.3x. Four gives 1.6x. Eight caps at 1.7x.

boost(n) = min(1.0 + 0.3 × log2(n), 1.7)

"Independent" is real deduplication, not a count of rows. Claims sharing a DOI, PMID, or overlapping provenance chain are grouped into one source. Five papers citing the same upstream study count as one source, not five.

The Predicate Algebra

Predicates have three algebraic properties that enable the engine to reason about claims without domain-specific knowledge.

Opposition — involution

opposite(opposite(P)) = P

Some predicates are opposites: activatesinhibits, causesprevents, promotessuppresses. If both (S, P, O) and (S, opposite(P), O) exist, the engine flags a contradiction and counts the evidence on each side.

Composition — sign arithmetic

compose(P1, P2) → P3

Directional predicates compose like multiplication of signs. This is what powers predict() — the engine walks 2-hop causal chains and composes predicates algebraically to discover novel relationships.

First hopSecond hopComposed resultLogic
activatesactivatesactivatespositive × positive = positive
activatesinhibitsinhibitspositive × negative = negative
inhibitsactivatesinhibitsnegative × positive = negative
inhibitsinhibitsactivatesnegative × negative = positive
preventspreventscausesdouble negative

Symmetry

Some predicates are symmetric: if A interacts_with B, then B interacts_with A. Symmetric predicates don't compose — they represent undirected associations, not causal chains.

Walkthrough: The Algebra in Action

A small pharmacology scenario showing how the capabilities compose.

Build a knowledge base

1

Ingest claims from multiple sources

Three independent labs report that Drug X activates Gene A. Two studies report Gene A inhibits Protein B.

Drug X activates Gene A   ← Nature, Cell, Science
Gene A inhibits Protein B   ← PNAS, JBC
2

Corroboration kicks in automatically

The three papers share a content_id because they assert the same triple. Corroboration boost: 1.48x (3 independent sources).

3

A contradicting paper arrives

A fourth paper says Drug X inhibits Gene A. The engine detects: opposite(activates) = inhibits, same entity pair → contradiction. Evidence ratio: 3 vs 1.

what_if("Drug X inhibits Gene A") → contradicted
4

Causal composition discovers a novel prediction

predict("Drug X") walks 2-hop causal chains and composes predicates:

Drug X activates Gene A inhibits Protein B
compose(activates, inhibits) = inhibits

Prediction: Drug X inhibits Protein B   (gap = true, novel)
5

Time-travel reconstructs the state before the controversy

Snapshot at last week: only "activates" exists. what_if("Drug X activates Gene A") returns supported. Snapshot at today: contradiction exists. Same query returns contested.

No ML model. No training data. No statistical inference. The prediction falls directly out of the composition table. The contradiction falls out of the opposition relation. The corroboration falls out of the dual identity system. Every capability is a consequence of the data structure.

Temporal Decay

Confidence decays exponentially at query time. The stored claim is never modified.

effective_confidence = confidence × 0.5(age / half_life)

Half-lives are configurable per predicate. Operational facts (has_status) decay in 30 days. Durable science (inhibits, binds) decays in 730 days. A fact corroborated by 50 old sources and 1 fresh source may have the fresh source dominate effective confidence — without anyone deleting or updating anything.

Twelve Capabilities from One Structure

Each capability emerges from a structural property of the claim. They compose arbitrarily because they all operate on the same underlying 7-tuple.

Corroboration

Independent sources asserting the same fact strengthen confidence.

From: content_id

Contradiction

Opposing predicates on the same entity pair, weighted by evidence count.

From: opposite predicates

Causal Prediction

2-hop composition discovers novel relationships via predicate algebra.

From: composition table

Temporal Decay

Recent claims outweigh old ones at query time, without mutation.

From: nanosecond timestamps

Provenance Tracing

Trace any conclusion to its source data. Retraction cascades through derivation chains.

From: provenance.chain

Gap Analysis

Detect unknown relationships between known entities — the most actionable missing knowledge.

From: derived graph topology

Hypothetical Reasoning

what_if() evaluates a hypothesis against existing evidence without modifying anything.

From: composition + opposition

Temporal Snapshots

Query the knowledge base at any point in history. All capabilities work on snapshots.

From: append-only + timestamps

Graph Topology

PageRank, betweenness, community detection — all derived from the claim log.

From: derived graph

Regime Detection

Identify inflection points where the rate of knowledge accumulation changes.

From: claim timestamps

Entity Resolution

Normalize variants, merge cross-system identifiers, union-find alias groups.

From: normalization + external_ids

Namespace Isolation

Disjoint partitions with RBAC. Each tenant sees a complete but independent claim space.

From: namespace field

Composition Patterns

These capabilities are individually useful. Their real power is in composition.

Corroborated Causal Prediction

"Find predictions where each step is independently corroborated, and the predicted relationship doesn't already exist." This is the core drug repurposing pattern: Gene A activates Protein B (8 papers) and Protein B inhibits Disease C (3 trials). The predicted Gene A → Disease C is high-confidence because each step is well-sourced.

Historical Contradiction Resolution

"When did this controversy start, and has subsequent evidence resolved it?" Compare snapshots to trace the timeline: at T1 only one side exists; at T2 the opposition appears; at T3 new corroboration shifts the evidence ratio. Provenance tracing identifies which sources drove each phase.

Namespace-Scoped Prediction

"Run predictions within a tenant's data, respecting sensitivity levels." A pharmaceutical company's predictions draw only from their own namespace plus public claims. Predictions requiring restricted data from another tenant are simply invisible — the algebra operates on a reduced but correct claim space.

The Fundamental Insight

Traditional databases store facts and trust them. A claim-native database stores assertions about facts — each carrying provenance, confidence, and a timestamp.

This inversion lets the system reason about why it believes something (provenance), how strongly (confidence × corroboration), whether that belief is contested (contradiction detection), what it might imply (causal composition), and when the belief changed (temporal analysis).

A traditional database could implement any one of these as a feature. But the claim-native model enables arbitrary composition because all 12 capabilities operate on the same underlying structure — the immutable, timestamped, provenanced claim.