(* Goal verification framework - Propositional Logic *) \ \This theory is an instance of the general classical logic for atoms that are natural numbers.\ theory Gvf_PL imports Gvf_Logic begin \ \Define the type for propositional logic formulas.\ type_synonym \\<^sub>L = \nat \\<^sub>P\ \ \We parse the type for natural numbers to the general logic type and create a type synonym for this instance.\ \ \Truth and falsity are defined.\ abbreviation Truth\<^sub>L :: \\\<^sub>L\ (\\\<^sub>L\) where \\\<^sub>L \ \<^bold>\ (Atom 0) \<^bold>\ (Atom 0)\ abbreviation Falsity\<^sub>L :: \\\<^sub>L\ (\\\<^sub>L\) where \\\<^sub>L \ \<^bold>\ \\<^sub>L\ \ \Since we base the definition on a simple tautology, we can only define this for one instance of the general classical logic as we need to be able to specify atoms.\ section \Semantics\ \ \The semantics is easily obtained from the definition for general classical logic.\ abbreviation semantics\<^sub>L :: \(nat \ bool) \ \\<^sub>L \ bool\ where \semantics\<^sub>L f p \ semantics\<^sub>P f p\ \ \The semantics of PL is computed the same as for the general case with the interpretation being a function from natural numbers (proposition identifiers) to truth values.\ \ \The soundness result is easily proved from the general case.\ theorem soundness\<^sub>L: \\\<^sub>P p \ semantics\<^sub>L f p\ using soundness\<^sub>P by fastforce \ \Entailment for propositional logic.\ abbreviation entails :: \\\<^sub>L set \ \\<^sub>L set \ bool\ (infix \\\<^sub>L#\ 50) where \\ \\<^sub>L# \ \ \ \\<^sub>P# \\ \ \Cleaner notation for entailment for of singleton rhs.\ abbreviation entails_singleton :: \\\<^sub>L set \ \\<^sub>L \ bool\ (infix \\\<^sub>L\ 50) where \\ \\<^sub>L \ \ \ \\<^sub>P \\ end