Propositional Dynamic Logic for Higher-Order Functional Programs

We present an extension of propositional dynamic logic called HOT-PDL for specifying temporal properties of higher-order functional programs. The semantics of HOT-PDL is defined over Higher-Order Traces (HOTs) that model execution traces of higher-order programs. A HOT is a sequence of events such as function calls and returns, equipped with two kinds of pointers inspired by the notion of justification pointers from game semantics: one for capturing the correspondence between call and return events, and the other for capturing higher-order control flow involving a function that is passed to or returned by a higher-order function. To allow traversal of the new kinds of pointers, HOT-PDL extends PDL with new path expressions. The extension enables HOT-PDL to specify interesting properties of higher-order programs, including stack-based access control properties and those definable using dependent refinement types. We show that HOT-PDL model checking of higher-order functional programs over bounded integers is decidable via a reduction to modal \(\mu \)-calculus model checking of higher-order recursion schemes.

[1]  Martin Hofmann,et al.  Abstract interpretation from Büchi automata , 2014, CSL-LICS.

[2]  C.-H. Luke Ong,et al.  On Model-Checking Trees Generated by Higher-Order Recursion Schemes , 2006, 21st Annual IEEE Symposium on Logic in Computer Science (LICS'06).

[3]  Naoki Kobayashi,et al.  Dependent type inference with interpolants , 2009, PPDP '09.

[4]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[5]  C. Aiswarya,et al.  Nested Words for Order-2 Pushdown Systems , 2016, ArXiv.

[6]  R. Alur,et al.  Adding nesting structure to words , 2006, JACM.

[7]  Rajeev Alur,et al.  Visibly pushdown languages , 2004, STOC '04.

[8]  Naoki Kobayashi,et al.  Higher-Order Program Verification via HFL Model Checking , 2017, ESOP.

[9]  Souhei Ito,et al.  Practical Alternating Parity Tree Automata Model Checking of Higher-Order Recursion Schemes , 2013, APLAS.

[10]  César Sánchez,et al.  Regular Linear Temporal Logic , 2007, ICTAC.

[11]  Bernhard Beckert,et al.  Dynamic Logic , 2007, The KeY Approach.

[12]  Eric Koskinen,et al.  A Fixpoint Logic and Dependent Effects for Temporal Property Verification , 2018, LICS.

[13]  Patrick Maxim Rondon,et al.  Liquid types , 2008, PLDI '08.

[14]  Cédric Fournet,et al.  Stack inspection: Theory and variants , 2003, TOPL.

[15]  Samson Abramsky,et al.  Call-by-Value Games , 1997, CSL.

[16]  Andrzej S. Murawski,et al.  Nominal Game Semantics , 2016, Found. Trends Program. Lang..

[17]  Cormac Flanagan,et al.  Temporal higher-order contracts , 2011, ICFP.

[18]  Ryota Suzuki,et al.  Streett Automata Model Checking of Higher-Order Recursion Schemes , 2017, FSCD.

[19]  César Sánchez,et al.  Visibly Rational Expressions , 2012, FSTTCS.

[20]  Yde Venema,et al.  PDL Inside the ?-calculus: A Syntactic and an Automata-theoretic Characterization , 2014, Advances in Modal Logic.

[21]  Pierre Wolper Temporal Logic Can Be More Expressive , 1983, Inf. Control..

[22]  Giuseppe De Giacomo,et al.  Linear Temporal Logic and Linear Dynamic Logic on Finite Traces , 2013, IJCAI.

[23]  C.-H. Luke Ong,et al.  A Type System Equivalent to the Modal Mu-Calculus Model Checking of Higher-Order Recursion Schemes , 2009, 2009 24th Annual IEEE Symposium on Logic In Computer Science.

[24]  P. S. Thiagarajan,et al.  Dynamic Linear Time Temporal Logic , 1997 .

[25]  C.-H. Luke Ong,et al.  On Full Abstraction for PCF: I, II, and III , 2000, Inf. Comput..

[26]  Frank Pfenning,et al.  Dependent types in practical programming , 1999, POPL '99.

[27]  Naoki Kobayashi,et al.  Temporal verification of higher-order functional programs , 2016, POPL.

[28]  César Sánchez,et al.  Visibly Linear Temporal Logic , 2014, IJCAR.

[29]  Moshe Y. Vardi The Rise and Fall of LTL: Invited Presentation at the Second International Symposium on Games, Automata, Logics and Formal Verification , 2011 .

[30]  Tachio Terauchi,et al.  Relatively complete refinement type system for verification of higher-order non-deterministic programs , 2018, Proc. ACM Program. Lang..

[31]  Neil Immerman,et al.  First-Order and Temporal Logics for Nested Words , 2007, 22nd Annual IEEE Symposium on Logic in Computer Science (LICS 2007).

[32]  Nobuko Yoshida,et al.  Game-Theoretic Analysis of Call-by-Value Computation , 1997, Theor. Comput. Sci..

[33]  C. Aiswarya,et al.  Temporal logics for concurrent recursive programs: Satisfiability and model checking , 2011, J. Appl. Log..

[34]  Steven J. Ramsay,et al.  Model Checking Liveness Properties of Higher−Order Functional Programs , 2010 .

[35]  Radha Jagadeesan,et al.  Full Abstraction for PCF , 1994, Inf. Comput..

[36]  Hongwei Xi,et al.  Dependent Types for Program Termination Verification , 2001, Proceedings 16th Annual IEEE Symposium on Logic in Computer Science.

[37]  Eric Koskinen,et al.  Local temporal reasoning , 2014, CSL-LICS.

[38]  Ranjit Jhala,et al.  Refinement types for Haskell , 2014, ICFP.