Basic idea: if and everyone follows the protocol, then the verifier will accept. Usually called “completeness” for historical reasons, but can also be called “correctness”.

Definition

Formally: If , then This property just makes sure that the protocol actually works day-to-day in the absence of any attacks. It serves as a nontriviality condition (e.g., a protocol that has the prover send nothing and the verifier just output every time would be considered ZK and sound.).

Completeness says nothing about security. A protocol where the verifier always just outputs 1 every time is complete but not sound.