Difference between revisions of "Separation Logic"

From CVC4
Jump to: navigation, search
Line 1: Line 1:
=Logic=
 
 
CVC4 supports a syntax for separation logic as an extension of the *.smt2 language.  
 
CVC4 supports a syntax for separation logic as an extension of the *.smt2 language.  
 +
 +
 +
=Syntax=
 
Separation logic in CVC4 requires the "all supported" logic:
 
Separation logic in CVC4 requires the "all supported" logic:
 
   (set-logic ALL_SUPPORTED)
 
   (set-logic ALL_SUPPORTED)
  
=Syntax=
 
 
The syntax for the operators of separation logic is summarized in the following table:
 
The syntax for the operators of separation logic is summarized in the following table:
  

Revision as of 12:39, 28 November 2016

CVC4 supports a syntax for separation logic as an extension of the *.smt2 language.


Syntax

Separation logic in CVC4 requires the "all supported" logic:

 (set-logic ALL_SUPPORTED)

The syntax for the operators of separation logic is summarized in the following table:

CVC language SMTLIB language C++ API
Empty heap N/A (emp X Y) em.mkExpr(kind::SEP_EMP, X, Y);
Points-to N/A (pto X Y) em.mkExpr(kind::SEP_PTO, X, Y);
Separation star N/A (sep C1 ... Cn) em.mkExpr(kind::SEP_STAR, C1, ..., Cn);
Magic wand N/A (wand C1 C2) em.mkExpr(kind::SEP_WAND, C1, C2);
Nil element N/A (as nil T) em.mkUniqueVar(T,kind::SEP_NIL);