Interest in formal logic; knowledge of OCaml, or another functional programming language, or the ability and willingness to learn.
No
Propositional Dynamic Logic (PDL) [1] is a logic in which abstract properties about the behaviour of programs can be expressed, in a very general way. Because of its generality it is suitable for checking the behaviour or a wide range of programs and systems, via model checking.
PDL is what is known as a modal logic, meaning that logical formulas are subject to modalities that, in this context, describe the actions of programs. If a modality is applied to a formula, the intended meaning is that the property expressed by the formula will hold after the action of some program (indicated by the modality) is performed.
For example, the formula (x > 4) ⟶ [x++](x > 5) expresses the simple fact that, if the variable x
holds a value greater than 4, then after executing the code x++
incrementing the variable, it will hold a value greater than 5.
Although algorithms already exist for deciding the validity of statements in PDL, recent research [2] has developed a cyclic proof system for PDL that can also be used as the basis for deciding validity, through a process of proof search. The aim of this project would be to implement the proof system within the Cyclist automatic theorem proving framework [3]. Cyclist is a framework, written in the OCaml functional programming language [4], for generating automatic provers from a definition of a cyclic proof system.
Once the cyclic prover is produced for PDL, we would then test it against implementations of the existing algorithms.
[1] https://en.wikipedia.org/wiki/Propositional_dynamic_logic
[2] Simon Docherty, Reuben N. S. Rowe: A Non-wellfounded, Labelled Proof System for Propositional Dynamic Logic. TABLEAUX 2019
[3] https://www.cyclist-prover.org/
[4] https://www.ocaml.org/