Manual of DeepSec

The manual of DeepSec is also available in PDF.

Language reference

We describe in details the grammar of DeepSec input files. We use the following notations:

Moreover, we define the following types.

A file is a sequence of declarations (<decl>), process definitions (<proc_def>) and queries (<query>).

Terms and patterns

 <term> ::= <ident>
            | (seq+ <term>)
            | <ident>(seq+ <term>)
 <pattern> ::= =<term>
               | <ident>
               | (seq+ <pattern>)

Declarations

<decl> ::= set semantics = <sem>.
           | fun <ident>/<int> {[private]}.
           | const <ident> {[private]}.
           | free <ident> {[private]}.
           | reduc <term> = <term> (; <term> = <term>)*.
           | reduc <term> -> <term> (; <term> -> <term>)*.

Processes

<proc_def> ::= let <ident>(seq <ident>) = < process >.
<process> ::= 0
               | < ident>(seq <term>)
               | <process> | <process>
               | !^<int> < process>
               | (<process>)
               | in(<term>,ident); <process>
               | out(<term>,<term>); <process>
               | new <ident>; <process>
               | let <pattern> = <term> in <process> {else <process>}
               | if <term> = <term> then <process> {else <process>}

Queries

<query> ::= query trace_equiv (<process>,<process>).
             | query session_equiv (<process>,<process>).
             | query session_incl (<process>,<process>).

Comments

We allow 3 types of comments: