Preservation of the invariant: if the invariant holds in a system state, it also holds in the next system state.
The only kind of event that may change the set of signed certificates
is
The other kinds of events do not change the sets of signed certificates, and thus it is easy to prove the preservation of the invariant.
Theorem:
(defthm certificate-set-unequivocalp-of-create-next (implies (and (signer-records-p systate) (in signer (correct-addresses systate)) (certificate-set-unequivocalp (signed-certs signer systate)) (create-possiblep cert systate) (no-self-endorsed-p systate)) (certificate-set-unequivocalp (signed-certs signer (create-next cert systate)))))
Theorem:
(defthm unequivocal-signed-certs-p-of-create-next (implies (and (unequivocal-signed-certs-p systate) (signer-records-p systate) (no-self-endorsed-p systate) (create-possiblep cert systate)) (unequivocal-signed-certs-p (create-next cert systate))))
Theorem:
(defthm unequivocal-signed-certs-p-of-accept-next (implies (and (unequivocal-signed-certs-p systate) (accept-possiblep msg systate)) (unequivocal-signed-certs-p (accept-next msg systate))))
Theorem:
(defthm unequivocal-signed-certs-p-of-advance-next (implies (and (unequivocal-signed-certs-p systate) (advance-possiblep val systate)) (unequivocal-signed-certs-p (advance-next val systate))))
Theorem:
(defthm unequivocal-signed-certs-p-of-commit-next (implies (and (unequivocal-signed-certs-p systate) (commit-possiblep val systate)) (unequivocal-signed-certs-p (commit-next val systate))))
Theorem:
(defthm unequivocal-signed-certs-p-of-event-next (implies (and (unequivocal-signed-certs-p systate) (signer-records-p systate) (no-self-endorsed-p systate) (event-possiblep event systate)) (unequivocal-signed-certs-p (event-next event systate))))