• 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
      • Taspi
      • Bitcoin
      • Riscv
      • 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
      • Bigmems
      • Builtins
      • Execloader
      • Aleo
        • Aleobft
          • Aleobft-static
          • Aleobft-stake2
          • Aleobft-dynamic
            • Correctness
              • Unequivocal-accepted-certificates-def-and-init
              • Signer-records
              • Same-committees-def-and-implied
              • Dag-omni-paths
              • Unequivocal-accepted-certificates-next
              • Unequivocal-signed-certificates
              • Nonforking-anchors-def-and-init-and-next
              • Signer-quorum
              • Quorum-intersection
              • Successor-predecessor-intersection
              • Same-owned-certificates
              • Previous-quorum
              • Last-anchor-voters-def-and-init-and-next
              • Certificates-of-validators
              • Committed-redundant-def-and-init-and-next
              • Nonforking-blockchains-def-and-init
              • Fault-tolerance
              • Rounds-in-committees
              • No-self-messages
              • Blockchain-redundant-def-and-init-and-next
              • Backward-closure
                • Backward-closed-p-of-next
                • Backward-closed-p
                • Backward-closed-p-always
                • Backward-closed-p-when-init
              • Accepted-certificate-committee
              • Nonforking-blockchains-next
              • Anchors-extension
              • No-self-endorsed
              • Last-anchor-present
              • Committees-in-system
              • Last-blockchain-round
              • No-self-buffer
              • Dag-certificate-next
              • Omni-paths-def-and-implied
              • Simultaneous-induction
              • Ordered-even-blocks
              • Last-anchor-def-and-init
              • Same-committees
              • Committed-anchors-sequences
              • Last-anchor-next
              • Unequivocal-accepted-certificates
              • Omni-paths
              • Last-anchor-voters
              • Committed-redundant
              • Nonforking-blockchains
              • Nonforking-anchors
              • Blockchain-redundant
            • Definition
          • Aleobft-stake
          • Aleobft-proposals
          • Library-extensions
        • Leo
      • Solidity
      • Paco
      • Concurrent-programs
      • Bls12-377-curves
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
    • Math
    • Testing-utilities
  • Correctness

Backward-closure

Invariant that DAGs are backward-closed.

A validator's DAG is extended via two kinds of events, namely create-certificate and store-certificate.

The first kind of event may only occur if the certificate's author has all the previous certificates in its DAG.

The second kind of event may only occur if the DAG has all the previous certificates. Under that condition, the certificate is moved from the buffer to the DAG. In fact, the purpose of the buffer is to wait until all the previous certificates are in the DAG, since they may be coming out of order with respect to round numbers.

This means that DAGs are always backward-closed: there are no dangling edges. Recall that edges always point backwards (from a round to the round just before it), which justifies the `backward' in `backward-closed'.

Subtopics

Backward-closed-p-of-next
Preservation of the invariant: if the invariant holds in a system state, it also holds in the next system state.
Backward-closed-p
Definition of the invariant: the DAG of each correct validator is backward-closed.
Backward-closed-p-always
The invariant holds in every state reachable from an initial state via a sequence of events.
Backward-closed-p-when-init
Establishment of the invariant: the invariant holds in any initial system state.