Definition of the invariant: the signers of every certificate in the DAG of every correct validator form a quorum in the committee for the certificate's round, calculated by the validator from its own blockchain.
Theorem:
(defthm signer-quorum-p-necc (implies (signer-quorum-p systate) (implies (and (in val (correct-addresses systate)) (in cert (validator-state->dag (get-validator-state val systate)))) (validator-signer-quorum-p cert (get-validator-state val systate)))))
Theorem:
(defthm booleanp-of-signer-quorum-p (b* ((yes/no (signer-quorum-p systate))) (booleanp yes/no)) :rule-classes :rewrite)
Theorem:
(defthm signer-quorum-p-of-system-state-fix-systate (equal (signer-quorum-p (system-state-fix systate)) (signer-quorum-p systate)))
Theorem:
(defthm signer-quorum-p-system-state-equiv-congruence-on-systate (implies (system-state-equiv systate systate-equiv) (equal (signer-quorum-p systate) (signer-quorum-p systate-equiv))) :rule-classes :congruence)