# `is_supporting_vote` proofs *Writing down some proofs to prove that `is_supporting_vote` with message's vote is reflected correctly on the block node.* to prove this, we take two consecutive blocks - `blk{slot: 100, block_root: 0xa}` - `blk{slot: 101, block_root: 0xb, parent_root: 0xa}` then we look at the following attestations and apply them to the blocks - `msg{slot: 100, block_root: 0xa}` - `msg{slot: 100, block_root: 0xb}` (This is an invalid attestation that can be ignored) - `msg{slot: 101, block_root: 0xa}` - `msg{slot: 101, block_root: 0xb}` - `msg{slot: 102, block_root: 0xa}` - `msg{slot: 102, block_root: 0xb}` ![Screenshot 2024-06-11 at 1.03.18 PM](https://hackmd.io/_uploads/rkL9pQUHA.png) 1. Apply `msg{slot: 102, block_root: 0xb}` to `blk{slot: 101, block_root: 0xb, parent_root: 0xa}` * Return `true` because `msg.root==blk.root && msg.slot >= blk.slot` 2. Apply `msg{slot: 102, block_root: 0xb}` to `blk{slot: 100, block_root: 0xa}` * Return `true` because * `msg.root!=blk.root` * `msg_blk.slot>blk.slot` * `ancestor_match` 3. Apply `msg{slot: 102, block_root: 0xa}` to `blk{slot: 101, block_root: 0xb, parent_root: 0xa}` * Return `false` because * `msg.root!=blk.root` * `blk.slot>msg_blk.slot` 4. Apply `msg{slot: 102, block_root: 0xa}` to `blk{slot: 100, block_root: 0xa}` * Return `true` because `msg.root==blk.root && msg.slot >= blk.slot` 5. Apply `msg{slot: 101, block_root: 0xb}` to `blk{slot: 101, block_root: 0xb, parent_root: 0xa}` - Return `true` `msg.root==blk.root && msg.slot >= blk.slot` 6. Apply `msg{slot: 101, block_root: 0xb}` to `blk{slot: 100, block_root: 0xa}` * Return `true` because * `msg.root!=blk.root` * `msg_blk.slot>blk.slot` * `ancestor_match` 7. Apply `msg{slot: 101, block_root: 0xa}` to `blk{slot: 101, block_root: 0xb, parent_root: 0xa}` * Return `false` because * `msg.root!=blk.root` * `blk.slot>msg_blk.slot` 8. Apply `msg{slot: 101, block_root: 0xa}` to `blk{slot: 100, block_root: 0xa}` * Return `true` because `msg.root==blk.root && msg.slot >= blk.slot` 9. Apply `msg{slot: 100, block_root: 0xa}` to `blk{slot: 101, block_root: 0xb, parent_root: 0xa}` * Return `false` because * `msg.root!=blk.root` * `blk.slot>msg_blk.slot` 10. Apply `msg{slot: 100, block_root: 0xa}` to `blk{slot: 100, block_root: 0xa}` * Return `true` because `msg.root==blk.root && msg.slot >= blk.slot`