• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
      • Apt
      • Zfc
      • Acre
      • Milawa
      • Smtlink
      • Abnf
      • Vwsim
      • Isar
      • Wp-gen
      • Dimacs-reader
      • Pfcs
      • Legacy-defrstobj
      • Proof-checker-array
      • Soft
      • C
      • Farray
      • Rp-rewriter
      • Instant-runoff-voting
      • Imp-language
      • Sidekick
      • Leftist-trees
      • Java
      • Riscv
      • Taspi
      • Bitcoin
      • Des
      • Ethereum
      • X86isa
      • Sha-2
      • Yul
      • Zcash
      • Proof-checker-itp13
      • Regex
      • ACL2-programming-language
      • Json
      • Jfkr
      • Equational
      • Cryptography
      • Poseidon
      • Where-do-i-place-my-book
      • Axe
      • Aleo
        • Aleobft
          • Correctness
            • Unequivocal-dags-def-and-init
            • Same-committees-def-and-implied
              • Trim-blocks-for-round
              • Bonded-committee-at-round-loop-to-trim-blocks-for-round
              • Same-bonded-committees-longer-shorter
              • Same-committees-list-extension-equivalences
              • Trim-blocks-for-round-of-shorter
              • Same-active-committees-when-nofork
              • Trim-blocks-for-round-of-longer
              • Same-committees-p
              • Trim-blocks-for-round-of-append-yields-first
              • Bonded-committee-at-round-to-trim-blocks-for-round
              • Trim-blocks-for-round-no-change
              • Same-active-committees-longer-shorter
              • Same-committees-p-implied
            • Dag-omni-paths
            • Signer-records
            • Unequivocal-dags-next
            • Quorum-intersection
            • Dag-previous-quorum-def-and-init-and-next
            • Unequivocal-signed-certificates
            • Signed-previous-quorum
            • Nonforking-anchors-def-and-init-and-next
            • Successor-predecessor-intersection
            • Fault-tolerance
            • Last-anchor-voters-def-and-init-and-next
            • Signer-quorum
            • Committed-redundant-def-and-init-and-next
            • Nonforking-blockchains-def-and-init
            • Blockchain-redundant-def-and-init-and-next
            • No-self-endorsed
            • Last-anchor-present
            • Anchors-extension
            • Nonforking-blockchains-next
            • Backward-closure
            • Last-blockchain-round
            • Dag-certificate-next
            • Omni-paths-def-and-implied
            • Ordered-blockchain
            • Simultaneous-induction
            • System-certificates
            • Last-anchor-def-and-init
            • Last-anchor-next
            • Dag-previous-quorum
            • Signed-certificates
            • Committed-anchor-sequences
            • Omni-paths
            • Last-anchor-voters
            • Unequivocal-dags
            • Nonforking-blockchains
            • Nonforking-anchors
            • Committed-redundant
            • Same-committees
            • Blockchain-redundant
          • Definition
          • Library-extensions
        • Aleovm
        • Leo
      • Bigmems
      • Builtins
      • Execloader
      • Solidity
      • Paco
      • Concurrent-programs
      • Bls12-377-curves
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
    • Math
    • Testing-utilities
  • Correctness

Same-committees-def-and-implied

Invariant that correct validators calculate the same committees: definition, and proof that it is implied by other invariants.

In the definition of the labeled state transition systems, each validator calculates the (active) committee at each round using its own copy of the blockchain. If blockchains do not fork, then any two correct validators that can both calculate an active committee at a round, will in fact compute the same active committee at that round.

Here we formulate this invariant, and we prove that it is a consequence of the invariant that blockchains do not non fork. We also need the already proved invariant that rounds in blockchains are even and strictly increasing.

If the blockchains of two validators do not fork, either the two blockchains are equal or one extends the other: see nonforking-blockchains-p and lists-noforkp. If the two blockchains are equal, clearly the same committees are calculated from them. If one is an extension of the other, they will still agree on the committees that they both calculate, because those are based only on the the blocks that are common to the two blockchains. The longer blockchain can calculate more committees (at later rounds), but the invariant that we prove here only concerns the committees that both blockchains can calculate.

Our proof fleshes out the details of the argument sketched above, which require some care. The interesting case for the proof is that of a longer blockchain that extends a shorter blockchain, since the case of two equal blockchains is easy. The calculation of the two committees can be rephrased in terms of a trimming operation applied to the blockchains. We define the trimming operation to remove the blocks that are not needed to calculate the (bonded) committee at a given round. Our rephrased calculations of the two committees trims the blockchains not quite at the round for the committee, but at the even round after the last round of the shorter blockchain, which is also the smallest round of the blocks that extend the shorter blockchain to become the longer blockchain (this may be clearer looking at the actual formulas). We show that trimming the shorter blockchain does not change it, and that trimming the longer blockchain yields exactly the shorter blockchain. Thus the two calculations have been reduced to be on equal blockchains, and therefore they must return the same committees. This is all for bonded committees, but the same easily follows for active committees, which are defined in terms of bonded committees.

Here we define the invariant, and we prove that is is implied by other invariants. Elsewhere we prove that this invariant holds in every reachable state.

Subtopics

Trim-blocks-for-round
Trim a blockchain to what is needed to calculate the (bonded) committee at a given round.
Bonded-committee-at-round-loop-to-trim-blocks-for-round
Rephrasing of bonded-committee-at-round in terms of trim-blocks-for-round; part 1 of 2.
Same-bonded-committees-longer-shorter
The longer and shorter blockchains calculate the same bonded committees, when they both do.
Same-committees-list-extension-equivalences
Equivalence between two ways to phrase list extensions.
Trim-blocks-for-round-of-shorter
Result of trimming the shorter blockchain.
Same-active-committees-when-nofork
Two non-forking blockchains calculate the same active committees, when they both do.
Trim-blocks-for-round-of-longer
Result of trimming the longer blockchain.
Same-committees-p
Definition of the invariant: for any two correct validators in the system, if they both calculate an active committee at a round, compute the same active committee at that round.
Trim-blocks-for-round-of-append-yields-first
Trimming an extended blockchain to the smallest round of the extension yields the shorter blockchain.
Bonded-committee-at-round-to-trim-blocks-for-round
Rephrasing of bonded-committee-at-round in terms of trim-blocks-for-round; part 2 of 2.
Trim-blocks-for-round-no-change
Trimming a blockchain to a round after the last one causes no change.
Same-active-committees-longer-shorter
The longer and shorter blockchains calculate the same active committees, when they both do.
Same-committees-p-implied
Proof of the invariant from other invariants.