A fine protocol fact: the coarse facts plus the operational evidence. An approval, certificate, and
final each carry the signer set S that the coarse theory abstracts away.
- propose {P : Type u_1} {Wave : Type u_2} {Hash : Type u_3} (w : Wave) (h : Hash) : TfineFact P Wave Hash
- qApprove {P : Type u_1} {Wave : Type u_2} {Hash : Type u_3} (w : Wave) (h : Hash) (signers : Finset P) : TfineFact P Wave Hash
- certThresh {P : Type u_1} {Wave : Type u_2} {Hash : Type u_3} (w : Wave) (h : Hash) (signers : Finset P) : TfineFact P Wave Hash
- final {P : Type u_1} {Wave : Type u_2} {Hash : Type u_3} (w : Wave) (h : Hash) (signers : Finset P) : TfineFact P Wave Hash
- finalLeader {P : Type u_1} {Wave : Type u_2} {Hash : Type u_3} (w : Wave) (h : Hash) : TfineFact P Wave Hash
- orderedPrefix {P : Type u_1} {Wave : Type u_2} {Hash : Type u_3} (hs : List Hash) : TfineFact P Wave Hash
Instances For
Equations
- One or more equations did not get rendered due to their size.
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.propose w h) (CordialMiners.TfineFact.qApprove w_1 h_1 signers) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.propose w h) (CordialMiners.TfineFact.certThresh w_1 h_1 signers) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.propose w h) (CordialMiners.TfineFact.final w_1 h_1 signers) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.propose w h) (CordialMiners.TfineFact.finalLeader w_1 h_1) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.propose w h) (CordialMiners.TfineFact.orderedPrefix hs) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.qApprove w h signers) (CordialMiners.TfineFact.propose w_1 h_1) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.qApprove w h signers) (CordialMiners.TfineFact.certThresh w_1 h_1 signers_1) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.qApprove w h signers) (CordialMiners.TfineFact.final w_1 h_1 signers_1) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.qApprove w h signers) (CordialMiners.TfineFact.finalLeader w_1 h_1) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.qApprove w h signers) (CordialMiners.TfineFact.orderedPrefix hs) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.certThresh w h signers) (CordialMiners.TfineFact.propose w_1 h_1) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.certThresh w h signers) (CordialMiners.TfineFact.qApprove w_1 h_1 signers_1) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.certThresh w h signers) (CordialMiners.TfineFact.final w_1 h_1 signers_1) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.certThresh w h signers) (CordialMiners.TfineFact.finalLeader w_1 h_1) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.certThresh w h signers) (CordialMiners.TfineFact.orderedPrefix hs) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.final w h signers) (CordialMiners.TfineFact.propose w_1 h_1) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.final w h signers) (CordialMiners.TfineFact.qApprove w_1 h_1 signers_1) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.final w h signers) (CordialMiners.TfineFact.certThresh w_1 h_1 signers_1) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.final w h signers) (CordialMiners.TfineFact.finalLeader w_1 h_1) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.final w h signers) (CordialMiners.TfineFact.orderedPrefix hs) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.finalLeader w h) (CordialMiners.TfineFact.propose w_1 h_1) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.finalLeader w h) (CordialMiners.TfineFact.qApprove w_1 h_1 signers) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.finalLeader w h) (CordialMiners.TfineFact.certThresh w_1 h_1 signers) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.finalLeader w h) (CordialMiners.TfineFact.final w_1 h_1 signers) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.finalLeader w h) (CordialMiners.TfineFact.orderedPrefix hs) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.orderedPrefix hs) (CordialMiners.TfineFact.propose w h) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.orderedPrefix hs) (CordialMiners.TfineFact.qApprove w h signers) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.orderedPrefix hs) (CordialMiners.TfineFact.certThresh w h signers) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.orderedPrefix hs) (CordialMiners.TfineFact.final w h signers) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.orderedPrefix hs) (CordialMiners.TfineFact.finalLeader w h) = isFalse ⋯
- CordialMiners.instDecidableEqTfineFact.decEq (CordialMiners.TfineFact.orderedPrefix a) (CordialMiners.TfineFact.orderedPrefix b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
The abstraction on facts: forget the signer-set evidence, keep the coarse shape.
Equations
- CordialMiners.alphaFact (CordialMiners.TfineFact.propose w h) = CordialMiners.TrecFact.propose w h
- CordialMiners.alphaFact (CordialMiners.TfineFact.qApprove w h signers) = CordialMiners.TrecFact.qApprove w h
- CordialMiners.alphaFact (CordialMiners.TfineFact.certThresh w h signers) = CordialMiners.TrecFact.certThresh w h
- CordialMiners.alphaFact (CordialMiners.TfineFact.final w h signers) = CordialMiners.TrecFact.final w h
- CordialMiners.alphaFact (CordialMiners.TfineFact.finalLeader w h) = CordialMiners.TrecFact.finalLeader w h
- CordialMiners.alphaFact (CordialMiners.TfineFact.orderedPrefix hs) = CordialMiners.TrecFact.orderedPrefix hs
Instances For
A fine state is the finite set of fine facts established so far.
Equations
- CordialMiners.TfineState P Wave Hash = Finset (CordialMiners.TfineFact P Wave Hash)
Instances For
The abstraction on states: take the image of every fine fact under alphaFact.
Equations
Instances For
The abstraction of the empty fine state is the empty coarse state.
The abstraction commutes with insertion: abstracting a state with one more fact is the abstract state with that fact's coarse shadow inserted.
The fine step relation mirrors the coarse one but threads the signer-set evidence: an approval,
certificate, or final records the witnessing signers S.
- propose {P : Type u_1} {Wave : Type u_2} {Hash : Type u_3} [DecidableEq P] [DecidableEq Wave] [DecidableEq Hash] (s : TfineState P Wave Hash) (w : Wave) (h : Hash) : s.Step (insert (TfineFact.propose w h) s)
- qapprove {P : Type u_1} {Wave : Type u_2} {Hash : Type u_3} [DecidableEq P] [DecidableEq Wave] [DecidableEq Hash] (s : TfineState P Wave Hash) (w : Wave) (h : Hash) (S : Finset P) : TfineFact.propose w h ∈ s → s.Step (insert (TfineFact.qApprove w h S) s)
- certify {P : Type u_1} {Wave : Type u_2} {Hash : Type u_3} [DecidableEq P] [DecidableEq Wave] [DecidableEq Hash] (s : TfineState P Wave Hash) (w : Wave) (h : Hash) (S : Finset P) : TfineFact.qApprove w h S ∈ s → s.Step (insert (TfineFact.certThresh w h S) s)
- finalize {P : Type u_1} {Wave : Type u_2} {Hash : Type u_3} [DecidableEq P] [DecidableEq Wave] [DecidableEq Hash] (s : TfineState P Wave Hash) (w : Wave) (h : Hash) (S : Finset P) : TfineFact.certThresh w h S ∈ s → s.Step (insert (TfineFact.final w h S) s)
- finalLead {P : Type u_1} {Wave : Type u_2} {Hash : Type u_3} [DecidableEq P] [DecidableEq Wave] [DecidableEq Hash] (s : TfineState P Wave Hash) (w : Wave) (h : Hash) (S : Finset P) : TfineFact.final w h S ∈ s → s.Step (insert (TfineFact.finalLeader w h) s)
- order {P : Type u_1} {Wave : Type u_2} {Hash : Type u_3} [DecidableEq P] [DecidableEq Wave] [DecidableEq Hash] (s : TfineState P Wave Hash) (hs : List Hash) : s.Step (insert (TfineFact.orderedPrefix hs) s)
Instances For
Forward simulation (the refinement): every fine step is matched by a coarse step on the abstracted states, or it leaves the abstraction unchanged (when the fact's coarse shadow was already present, e.g. a second certificate for the same value with different signers). The coarse precondition is always met because the fine precondition's coarse shadow lies in the abstracted state.
Reachability transfers along the abstraction: the abstraction of any fine-reachable state is coarse-reachable. Steps that change the abstraction become coarse steps; steps that do not are absorbed (the abstract state stays put).
The coarse causal well-formedness lifts to the fine theory: every fine-reachable state abstracts to a causally well-formed coarse state. The proof-friendly coarse safety therefore governs the evidence-carrying operational theory.