• 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
            • 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
              • Pick-successor/predecessor
              • Not-empty-successor-predecessor-author-intersection
              • Pick-successor/predecessor-properties
                • Not-empty-successor-predecessor-intersection
                • Successors+predecessors-same-round
              • 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
    • Successor-predecessor-intersection

    Pick-successor/predecessor-properties

    Key properties of pick-successor/predecessor.

    This combines and generalizes the theorems proved in pick-successor/predecessor, by using stronger hypotheses on the DAGs that imply the specific properties used in those previous theorems. The hypotheses on the DAGs are all invariants, as proved elsewhere. The key properties are that the picked certificate is among the successors of cert1 in the first DAG, among the precedessors of cert2 in the second DAG, and also in both DAGs.

    We prove four lemmas that serve to establish hypotheses in the theorems in pick-successor/predecessor from the more general hypothesis in this theorem.

    Definitions and Theorems

    Theorem: pick-successor/predecessor-properties

    (defthm pick-successor/predecessor-properties
     (implies
      (and
       (certificate-setp dag1)
       (certificate-setp dag2)
       (certificate-set-unequivocalp dag1)
       (certificate-set-unequivocalp dag2)
       (certificate-sets-unequivocalp dag1 dag2)
       (in cert2 dag2)
       (equal (certificate->round cert2)
              (+ 2 (certificate->round cert1)))
       (dag-has-committees-p dag1 blockchain1)
       (dag-has-committees-p dag2 blockchain2)
       (dag-in-committees-p dag1 blockchain1)
       (dag-in-committees-p dag2 blockchain2)
       (same-active-committees-p blockchain1 blockchain2)
       (dag-predecessor-quorum-p dag2 blockchain2)
       (>
         (committee-members-stake
              (cert-set->author-set (successors cert1 dag1))
              (active-committee-at-round (1+ (certificate->round cert1))
                                         blockchain1))
         (committee-max-faulty-stake
              (active-committee-at-round (1+ (certificate->round cert1))
                                         blockchain1))))
      (b* ((cert (pick-successor/predecessor dag1 dag2 cert1 cert2)))
        (and (in cert (successors cert1 dag1))
             (in cert (predecessors cert2 dag2))
             (in cert dag1)
             (in cert dag2)))))