How the sequence of committed anchors in a validator state changes (or not) for each transition.
A
A
An
Theorem:
(defthm committed-anchors-of-create-next (implies (and (system-committees-fault-tolerant-p systate) (backward-closed-p systate) (no-self-endorsed-p systate) (signer-records-p systate) (signer-quorum-p systate) (unequivocal-dags-p systate) (same-committees-p systate) (last-anchor-present-p systate) (in val (correct-addresses systate)) (create-possiblep cert systate)) (equal (committed-anchors (get-validator-state val (create-next cert systate))) (committed-anchors (get-validator-state val systate)))))
Theorem:
(defthm committed-anchors-of-accept-next (implies (and (system-committees-fault-tolerant-p systate) (backward-closed-p systate) (signer-quorum-p systate) (unequivocal-signed-certs-p systate) (unequivocal-dags-p systate) (same-committees-p systate) (last-anchor-present-p systate) (in val (correct-addresses systate)) (accept-possiblep msg systate) (messagep msg)) (equal (committed-anchors (get-validator-state val (accept-next msg systate))) (committed-anchors (get-validator-state val systate)))))
Theorem:
(defthm committed-anchors-of-advance-next (implies (and (in val (correct-addresses systate)) (advance-possiblep val1 systate)) (equal (committed-anchors (get-validator-state val (advance-next val1 systate))) (committed-anchors (get-validator-state val systate)))))
Theorem:
(defthm committed-anchors-of-commit-next-last-not-0 (implies (and (last-blockchain-round-p systate) (ordered-blockchain-p systate) (signer-quorum-p systate) (unequivocal-dags-p systate) (last-anchor-present-p systate) (omni-paths-p systate) (in val (correct-addresses systate)) (commit-possiblep val systate) (not (equal (validator-state->last (get-validator-state val systate)) 0))) (equal (committed-anchors (get-validator-state val (commit-next val systate))) (b* (((validator-state vstate) (get-validator-state val systate)) (round (1- vstate.round)) (commtt (active-committee-at-round round vstate.blockchain)) (leader (leader-at-round round commtt)) (anchor (cert-with-author+round leader round vstate.dag)) (anchors (collect-anchors anchor (- round 2) vstate.last vstate.dag vstate.blockchain))) (append anchors (committed-anchors (get-validator-state val systate)))))))
Theorem:
(defthm committed-anchors-of-commit-next-last-0 (implies (and (last-blockchain-round-p systate) (ordered-blockchain-p systate) (signer-quorum-p systate) (unequivocal-dags-p systate) (last-anchor-present-p systate) (omni-paths-p systate) (in val (correct-addresses systate)) (commit-possiblep val systate) (equal (validator-state->last (get-validator-state val systate)) 0)) (equal (committed-anchors (get-validator-state val (commit-next val systate))) (b* (((validator-state vstate) (get-validator-state val systate)) (round (1- vstate.round)) (commtt (active-committee-at-round round vstate.blockchain)) (leader (leader-at-round round commtt)) (anchor (cert-with-author+round leader round vstate.dag)) (anchors (collect-anchors anchor (- round 2) vstate.last vstate.dag vstate.blockchain))) (append anchors (committed-anchors (get-validator-state val systate)))))))
Theorem:
(defthm committed-anchors-of-commit-next-other-val (implies (and (last-blockchain-round-p systate) (ordered-blockchain-p systate) (signer-quorum-p systate) (unequivocal-dags-p systate) (last-anchor-present-p systate) (omni-paths-p systate) (in val1 (correct-addresses systate)) (commit-possiblep val systate) (addressp val) (not (equal val1 val))) (equal (committed-anchors (get-validator-state val1 (commit-next val systate))) (committed-anchors (get-validator-state val1 systate)))))
Theorem:
(defthm committed-anchors-of-commit-next (implies (and (last-blockchain-round-p systate) (ordered-blockchain-p systate) (signer-quorum-p systate) (unequivocal-dags-p systate) (last-anchor-present-p systate) (omni-paths-p systate) (in val1 (correct-addresses systate)) (commit-possiblep val systate) (addressp val)) (equal (committed-anchors (get-validator-state val1 (commit-next val systate))) (if (equal val1 (address-fix val)) (b* (((validator-state vstate) (get-validator-state val1 systate)) (round (1- vstate.round)) (commtt (active-committee-at-round round vstate.blockchain)) (leader (leader-at-round round commtt)) (anchor (cert-with-author+round leader round vstate.dag)) (anchors (collect-anchors anchor (- round 2) vstate.last vstate.dag vstate.blockchain))) (append anchors (committed-anchors (get-validator-state val1 systate)))) (committed-anchors (get-validator-state val1 systate))))))