Suppose a program P exhibits behavior X— when executed, P will create file “out.txt” in the current folder.
To validate behavior X, we can execute program P in an empty folder and check if the folder contains a file named “out.txt” after P completes execution. Since the file did not exist before the execution of P and did exist after the execution of P, we have evidence suggesting that execution of P created the file. In other words, our supposition is validated because the evidence is consistent with our supposition. However, we do not rule out other possibilities, e.g., a devious background program Q that monitors P and creates the file :)
To verify behavior X, we can monitor the actions performed by P and possibly other programs to ascertain P’s action indeed created the file in the current folder. The sequence of observations from such monitoring can be used to establish/prove the truthfulness of our supposition about P and X. Unlike in the case of validation, we attempt to rule out other possibilities.
Validation is about checking consistency of statements. Verification is about checking truthfulness of statements.