Formal system with a set of logical rules for reasoning rigorously about the correctness of computer programs