• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
      • Apt
      • Zfc
      • Acre
      • Milawa
      • Smtlink
      • Abnf
      • Vwsim
      • Isar
      • Pfcs
      • Wp-gen
      • Dimacs-reader
      • Legacy-defrstobj
      • Proof-checker-array
      • Soft
      • C
      • Farray
      • Rp-rewriter
      • Riscv
      • Instant-runoff-voting
      • Imp-language
      • Sidekick
      • Leftist-trees
      • Java
      • 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
            • Dag-omni-paths
              • Dag-omni-paths-round-p-of-next-round
              • Dag-omni-paths-p
                • Dag-omni-paths-round-p
                • Path-from-common-to-cert1-in-dag2
                • Dag-omni-paths-rounds-p
                • Dag-omni-paths-round-p-base-case
                • Path-from-cert2-to-cert1-in-dag2
                • Dag-omni-paths-round-p-step-case
                • Dag-omni-paths-round-p-of-round-delta
                • Dag-omni-paths-p-holds
                • Dag-omni-paths-round-p-holds
              • 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
      • Std
      • Community
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Math
      • Testing-utilities
    • Dag-omni-paths

    Dag-omni-paths-p

    Check if all the certificates that are at least two rounds after a given certificate have a path to that certificate.

    This is the predicate expressing the key property that we prove here, where cert is the certificate with more than f successors' stake. We universally quantify over a generic certificate cert1 whose round is greater than or equal to two plus the round of the given certificate cert. The existence of the path is expressed by saying that path-to-author+round applied to cert1 with the author and round of cert as targets yields exactly cert.

    The certificate cert passed as input is the certificate A in the discussion in dag-omni-paths.

    We prove that if the DAG has at least one certificate at least two rounds after the given one, then the given certificate must be in the DAG, because there is at least one path to it.

    Definitions and Theorems

    Theorem: dag-omni-paths-p-necc

    (defthm dag-omni-paths-p-necc
     (implies
      (dag-omni-paths-p cert dag)
      (implies
           (and (in cert1 dag)
                (>= (certificate->round cert1)
                    (+ 2 (certificate->round cert))))
           (equal (path-to-author+round cert1 (certificate->author cert)
                                        (certificate->round cert)
                                        dag)
                  cert))))

    Theorem: booleanp-of-dag-omni-paths-p

    (defthm booleanp-of-dag-omni-paths-p
      (b* ((yes/no (dag-omni-paths-p cert dag)))
        (booleanp yes/no))
      :rule-classes :rewrite)

    Theorem: in-dag-when-dag-omni-paths-p

    (defthm in-dag-when-dag-omni-paths-p
      (implies (and (certificate-setp dag)
                    (dag-omni-paths-p cert dag)
                    (in cert1 dag)
                    (>= (certificate->round cert1)
                        (+ 2 (certificate->round cert)))
                    cert)
               (in cert dag)))