• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
      • Apt
      • Zfc
      • Acre
      • Milawa
      • Smtlink
      • Abnf
      • Vwsim
      • Isar
      • Wp-gen
      • Dimacs-reader
      • Pfcs
      • Legacy-defrstobj
      • C
      • Proof-checker-array
      • Soft
      • Farray
      • Rp-rewriter
      • Instant-runoff-voting
      • Imp-language
      • Sidekick
      • Ethereum
      • Leftist-trees
      • Java
      • Riscv
      • Taspi
      • Bitcoin
      • Zcash
      • Des
      • X86isa
      • Sha-2
      • Yul
      • Proof-checker-itp13
      • Regex
      • ACL2-programming-language
      • Json
      • Jfkr
      • Equational
      • Cryptography
      • Axe
      • Poseidon
      • Where-do-i-place-my-book
      • 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
    • Same-committees-def-and-implied

    Same-bonded-committees-longer-shorter

    The longer and shorter blockchains calculate the same bonded committees, when they both do.

    This proves most of what we need for our overall proof. The interesting case of the overall proof is when the two blockchains are not equal, but one is longer and the other is shorter. We express this relation using nthcdr here, as in lists-noforkp. We make use of (two instances of) the theorem to expand the committee calculation to include a call of trim-blocks-for-round, and the two theorems that simplify them (for longer and shorter blockchain). We also need, as a local lemma, the fact that the round of the oldest block of the extension is greater than the round of the newest block of the shorter blockchain, but expressed in terms of nth of the longer blockchain. We also need the fact that the rounds are not only ordered, but even: this ensures that there is a gap of at least 2 between two block rounds where one is greater.

    This proof, and its hints, is a bit more complex than ideal. Perhaps it can be simplified and streamlined a bit.

    Definitions and Theorems

    Theorem: same-bonded-committees-longer-shorter

    (defthm same-bonded-committees-longer-shorter
      (implies (and (blocks-orderedp blocks2)
                    (< (len blocks1) (len blocks2))
                    (equal blocks1
                           (nthcdr (- (len blocks2) (len blocks1))
                                   blocks2))
                    (bonded-committee-at-round round blocks1)
                    (bonded-committee-at-round round blocks2))
               (equal (bonded-committee-at-round round blocks1)
                      (bonded-committee-at-round round blocks2))))