Transition invariant for cert-with-author+round.
The only kinds of events that change the DAG
are
We need to assume a number of previously proved invariants, which are hypotheses for the preservation of DAG non-equivocation.
The other four kinds of events do not change the DAG, and thus the proof is easy.
Theorem:
(defthm cert-with-author+round-of-create-next (implies (and (system-committees-fault-tolerant-p systate) (no-self-endorsed-p systate) (signer-records-p systate) (signer-quorum-p systate) (unequivocal-dags-p systate) (same-committees-p systate) (in val (correct-addresses systate)) (create-possiblep cert systate) (cert-with-author+round author round (validator-state->dag (get-validator-state val systate)))) (equal (cert-with-author+round author round (validator-state->dag (get-validator-state val (create-next cert systate)))) (cert-with-author+round author round (validator-state->dag (get-validator-state val systate))))))
Theorem:
(defthm cert-with-author+round-of-accept-next (implies (and (system-committees-fault-tolerant-p systate) (signer-quorum-p systate) (unequivocal-signed-certs-p systate) (unequivocal-dags-p systate) (same-committees-p systate) (in val (correct-addresses systate)) (accept-possiblep msg systate) (messagep msg) (cert-with-author+round author round (validator-state->dag (get-validator-state val systate)))) (equal (cert-with-author+round author round (validator-state->dag (get-validator-state val (accept-next msg systate)))) (cert-with-author+round author round (validator-state->dag (get-validator-state val systate))))))
Theorem:
(defthm cert-with-author+round-of-advance-next (implies (advance-possiblep val1 systate) (equal (cert-with-author+round author round (validator-state->dag (get-validator-state val (advance-next val1 systate)))) (cert-with-author+round author round (validator-state->dag (get-validator-state val systate))))))
Theorem:
(defthm cert-with-author+round-of-commit-next (implies (commit-possiblep val1 systate) (equal (cert-with-author+round author round (validator-state->dag (get-validator-state val (commit-next val1 systate)))) (cert-with-author+round author round (validator-state->dag (get-validator-state val systate))))))
Theorem:
(defthm cert-with-author+round-of-event-next (implies (and (system-committees-fault-tolerant-p systate) (no-self-endorsed-p systate) (signer-records-p systate) (unequivocal-signed-certs-p systate) (signer-quorum-p systate) (unequivocal-dags-p systate) (same-committees-p systate) (in val (correct-addresses systate)) (event-possiblep event systate) (cert-with-author+round author round (validator-state->dag (get-validator-state val systate)))) (equal (cert-with-author+round author round (validator-state->dag (get-validator-state val (event-next event systate)))) (cert-with-author+round author round (validator-state->dag (get-validator-state val systate))))))