• 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

    Trim-blocks-for-round-of-shorter

    Result of trimming the shorter blockchain.

    This is the counterpart of trim-blocks-for-round-of-longer, but for the shorter blockchain. The result is the same, i.e. the shorter blockchain itself. The core theorem is trim-blocks-for-round-no-change, which is expressed in terms of append, so again we use the list equivalence theorem. We also need to appeal to the theorem that, in an ordered (append blocks1 blocks2), the oldest round of blocks1 is greater than the newest round of blocks2, where we instantiate blocks1 and blocks2 with the appropriate extension and shorter block, as blocks1 and blocks2 have a different meaning in the theorem that we prove here. The appeal to that theorem is necessary to relieve the hypothesis of trim-blocks-for-round-no-change.

    The theorem says that the trimming of the shorter blockchain reduces to the shorter blockchain.

    Definitions and Theorems

    Theorem: trim-blocks-for-round-of-shorter

    (defthm trim-blocks-for-round-of-shorter
     (implies
       (and (blocks-orderedp blocks2)
            (< (len blocks1) (len blocks2))
            (equal blocks1
                   (nthcdr (- (len blocks2) (len blocks1))
                           blocks2)))
       (equal
            (trim-blocks-for-round
                 (block->round (nth (1- (- (len blocks2) (len blocks1)))
                                    blocks2))
                 blocks1)
            (block-list-fix blocks1))))