Certificates in the system.
(system-certs systate) → certs
We union the DAGs of all correct validators with the certificates in all the messages in the network.
Function:
(defun system-certs (systate) (declare (xargs :guard (system-statep systate))) (let ((__function__ 'system-certs)) (declare (ignorable __function__)) (union (validators-certs (correct-addresses systate) systate) (message-set->certificate-set (get-network-state systate)))))
Theorem:
(defthm certificate-setp-of-system-certs (b* ((certs (system-certs systate))) (certificate-setp certs)) :rule-classes :rewrite)
Theorem:
(defthm in-system-certs-when-in-some-dag (implies (and (in val (correct-addresses systate)) (in cert (validator-state->dag (get-validator-state val systate)))) (in cert (system-certs systate))))
Theorem:
(defthm in-system-certs-when-in-network (implies (in msg (get-network-state systate)) (in (message->certificate msg) (system-certs systate))))
Theorem:
(defthm system-certs-of-system-state-fix-systate (equal (system-certs (system-state-fix systate)) (system-certs systate)))
Theorem:
(defthm system-certs-system-state-equiv-congruence-on-systate (implies (system-state-equiv systate systate-equiv) (equal (system-certs systate) (system-certs systate-equiv))) :rule-classes :congruence)