• 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
      • Instant-runoff-voting
      • Imp-language
      • Sidekick
      • Leftist-trees
      • Java
      • Taspi
      • Riscv
      • 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
          • Definition
            • Initialization
            • Transitions
              • Transitions-accept
              • Transitions-create
              • Dags
                • Path-to-author+round
                • Successors
                • Certificate-causal-history
                • Dag-in-committees-p
                • Paths-in-unequivocal-closed-dags
                • Predecessors
                • Unequivocal-previous-certificates
                • Certificate-previous-in-dag-p
                • Certificates-dag-paths-p
                • Causal-histories-in-unequivocal-closed-dags
                • Dag-predecessor-quorum-p
                • Path-to-previous
                  • Dag-has-committees-p
                  • Path-to-author+round-set-to-path-to-author+round
                  • Dag-closedp
                  • Path-to-author+round-transitive
                  • Path-to-author+round-to-cert-with-author+round
                  • In-of-certificate-causal-history
                  • Path-to-predecessor
                  • Path-from-successor
                  • Certificate-causal-history-subset-when-path
                  • Path-to-head-of-predecessors
                  • Dag-no-prodecessors-round-1-p
                • Events-possiblep
                • Elections
                • Events-next
                • Event-next
                • Transitions-commit
                • Event-possiblep
                • Transitions-advance
                • Blockchains
                • Anchors
              • States
              • Events
              • Reachability
            • 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
    • Dags

    Path-to-previous

    In an unequivocal DAG, there is always a path between a certificate and each of its predecessors.

    This should be intuitive, since paths arise precisely from the edges of the DAG.

    Here cert1 is a generic certificate and cert is one of its predecessors, as characterized by being in the immediately preceding round and by being authored by one of the authors referenced in cert1.

    We use path-to-author+round-set-to-path-to-author+round to prove this theorem, because when path-to-author+round is opened, it exposes path-to-author+round-set. We also need path-to-author+round-of-self, applied to the certificate in the set of predecessors.

    Definitions and Theorems

    Theorem: path-to-previous

    (defthm path-to-previous
      (implies
           (and (certificate-setp dag)
                (certificate-set-unequivocalp dag)
                (in cert dag)
                (in cert1 dag)
                (equal (certificate->round cert1)
                       (1+ (certificate->round cert)))
                (in (certificate->author cert)
                    (certificate->previous cert1)))
           (equal (path-to-author+round cert1 (certificate->author cert)
                                        (certificate->round cert)
                                        dag)
                  cert)))