How does Narwhal ensure non-equivocation property from just a certificate forming from n-f validators? I know that from quorum intersection and honest validators signing only one message from each validator at each round, one can ensure that Byzantine nodes cannot form two difference certificates at each round.
However, assume we have 4 validators (A,B, C, and D), where D is Byzantine. If D gets signatures from all validators, including itself, it can form two certificates for the same vertex in each round. Suppose they are in round r. D can send a certificate to A and B using A, B, and D signatures and a certificate to C using A, C, and D signatures. Here, A and B receive different information from C; although the content of a vertex is the same, the reference or edges to the vertex are different, which can make the causal history between A and B vs. C different. I think each validator can ask other validators (A and B ask for C) for the certificate of that block to verify that it is matched. However, this results in increased communication complexity.