Descent between publications is transitive
ProvedOpenSearchSafety.descends_transFor every payload type V, cluster W and keys (t₁, v₁), (t₂, v₂), (t₃, v₃): if Descends W t₁ v₁ t₂ v₂ and Descends W t₂ v₂ t₃ v₃ then Descends W t₁ v₁ t₃ v₃. Nothing is assumed about W: Descends is the reflexive-transitive closure of Parent, where Parent W t v t' v' says that a publication of key (t', v') was sent with ghost parent (t, v).
import Definitions.Def_OpenSearchSafety open OpenSearchCoordination OpenSearchSafety
theorem OpenSearchSafety.descends_trans {V : Type} (W : Cluster V) (t₁ t₂ t₃ : Nat) (v₁ v₂ v₃ : Int)
(h₁ : Descends W t₁ v₁ t₂ v₂) (h₂ : Descends W t₂ v₂ t₃ v₃) : Descends W t₁ v₁ t₃ v₃ := by sorryRead-back
What the Lean code literally says, in plain math · claude-opus-5-5 (independent sub-agent, blind: Lean code + auditor instructions only)
Read-back: OpenSearchSafety.descends_trans
Notions used
Clusters and publications. A cluster (for an arbitrary payload type ) consists of a coordination state for every natural number and a predicate on messages ("has been sent"); for an arbitrary the sent messages form an arbitrary, possibly infinite, set. Among the messages are the publish requests (Lean .publishRequest src s pt pv): from node , carrying a cluster state — with a term and a version , among other fields — and a ghost parent key . A key is a pair . No other message kind and no node state plays a role in this statement.
Parent and descent. holds iff some has been sent with : a publication of key whose ghost parent is . Descent, Lean Descends W t v t' v', written here — the first key is the ancestor — is the least relation that contains for every key (refl) and contains whenever and (step, which appends a parent step at the descendant end). Equivalently, iff there is a chain with and for each .
1. Declaration
Binders and hypotheses, in order:
- A type (implicit) and a cluster over .
- Natural numbers and integers .
h₁: .h₂: .
Conclusion.
Concatenating a parent chain from to with a parent chain from to yields a parent chain from to .
2. What is not constrained
- There are no parameters , no invariant and no reachability hypothesis: is completely arbitrary (any node states, any set of sent messages, including sets in which descent has cycles or a key has several parents).
- The keys are arbitrary and may coincide; either chain may have length zero.
- The hypotheses are satisfiable (for instance with three equal keys), so the statement is not vacuous; it is a general property of the reflexive–transitive closure defining
Descends, and holds in every cluster.
3. Plain-language summary
In every cluster, descent between (term, version) keys is transitive: if a key descends from a second key, which descends from a third, then the first descends from the third.
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.