Unification in Matching Logic

Matching Logic is a framework for specifying programming language semantics and reasoning about programs. Its formulas are called patterns and are built with variables, symbols, connectives and quantifiers. A pattern is a combination of structural components (term patterns), which must be matched, and constraints (predicate patterns) which must be satisfied. Dealing with more than one structural component in a pattern could be cumbersome because it involves multiple matching operations. A source for getting patterns with many structural components is the conjunction of patterns. Here, we propose a method that uses a syntactic unification algorithm to transform conjunctions of structural patterns into equivalent patterns having only one structural component and some additional constraints. We prove the soundness of our approach, we discuss why the approach is not complete and we provide sound strategies to generate certificates for the equivalences.

[1]  Grigore Rosu,et al.  Program Verification by Coinduction , 2018, ESOP.

[2]  Dorel Lucanu,et al.  Verifying Reachability-Logic Properties on Rewriting-Logic Specifications , 2015, Logic, Rewriting, and Concurrency.

[3]  Xiaohong Chen,et al.  Matching μ-Logic , 2019, 2019 34th Annual ACM/IEEE Symposium on Logic in Computer Science (LICS).

[4]  Grigore Rosu,et al.  Matching logic: a new program verification approach. , 2011, ICSE 2011.

[5]  Grigore Rosu,et al.  Semantics-based program verifiers for all languages , 2016, OOPSLA.

[6]  Dorel Lucanu,et al.  Symbolic execution based on language transformation , 2015, Comput. Lang. Syst. Struct..

[7]  Franz Baader,et al.  Unification theory , 1986, Decis. Support Syst..

[8]  Grigore Rosu,et al.  Matching \mu-Logic , 2019 .

[9]  Andrei Arusoaie,et al.  Proving Reachability-Logic Formulas Incrementally , 2016, WRLA.

[10]  Grigore Rosu,et al.  One-Path Reachability Logic , 2013, 2013 28th Annual ACM/IEEE Symposium on Logic in Computer Science.

[11]  Grigore Rosu,et al.  Matching logic: a new program verification approach (NIER track) , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[12]  Grigore Rosu,et al.  From Hoare Logic to Matching Logic Reachability , 2012, FM.

[13]  Grigore Rosu,et al.  Matching μ-Logic , 2017, 2019 34th Annual ACM/IEEE Symposium on Logic in Computer Science (LICS).

[14]  Andrei Voronkov,et al.  Coming to terms with quantified reasoning , 2016, POPL.

[15]  Grigore Rosu,et al.  All-Path Reachability Logic , 2014, RTA-TLCA.

[16]  Claudio V. Russo,et al.  Deriving Probability Density Functions from Probabilistic Functional Programs , 2017, Log. Methods Comput. Sci..

[17]  Alberto Martelli,et al.  An Efficient Unification Algorithm , 1982, TOPL.

[18]  Grigore Rosu,et al.  K-Java , 2015, POPL.

[19]  Dorel Lucanu,et al.  A Certified Procedure for RL Verification , 2017, 2017 19th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (SYNASC).

[20]  Chucky Ellison,et al.  Defining the undefinedness of C , 2015, PLDI.

[21]  Yi Zhang,et al.  A formal verification tool for Ethereum VM bytecode , 2018, ESEC/SIGSOFT FSE.

[22]  Chucky Ellison,et al.  An executable formal semantics of C with applications , 2011, POPL '12.

[23]  Daejun Park,et al.  KJS: a complete formal semantics of JavaScript , 2015, PLDI.

[24]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.