Certificate Syntax

Certificates use an s-expression based format:

nat  ::=   0 | 1 | 2 | ...
trs  ::=   nat | nat-
gtt  ::=   (root-step(trs+ )) | (gsteps(trs+ )) | (inversegtt)
 |  (uniongttgtt) | (acompgttgtt) | (gcompgttgtt)
 |  (intergttgtt) | (atcgtt) | (gtcgtt) | (acomplementgtt)
pos  ::=   >= | e | >
num  ::=   >= | 1 | >
rr1  ::=   (terms) | (nf(trs+ )) | (infrr2)
 |  (proj(1|2)rr2) | (unionrr1rr1)
 |  (interrr1rr1) | (diffrr1rr1)
rr2  ::=   (gttgttposnum) | (productrr1rr1) | (idrr1)
 |  (unionrr2rr2) | (interrr2rr2) | (diffrr2rr2)
 |  (comprr2rr2) | (inverserr2) | (equality) | (reflclrr2)
 |  (step(trs+ )) | (step=(trs+ )) | (step+(trs+ ))
 |  (step*(trs+ )) | (step!(trs+ )) | (par-step(trs+ ))
 |  (root-step(trs+ )) | (root-step=(trs+ ))
 |  (root-step+(trs+ )) | (root-step*(trs+ ))
 |  (non-root-step(trs+ )) | (non-root-step=(trs+ ))
 |  (non-root-step+(trs+ )) | (non-root-step*(trs+ ))
 |  (meet(trs+ )) | (join(trs+ ))
var  ::=   nat
term  ::=   var
formula  ::=   (rr1rr1term) | (rr2rr2termterm)
 |  (andformula⟩*) | (orformula⟩*) | (notformula)
 |  (forallformula) | (existsformula) | (true) | (false)
 |  (restrictformula(trs+ ))
item  ::=   nat
itemref  ::=   nat
fpos  ::=   (nat+ )
equivalence  ::=   distrib-and-or | distrib-or-and
inference  ::=   (rr1rr1term) | (rr2rr2termterm) | (anditemref⟩*)
 |  (oritemref⟩*) | (notitemref) | (existsitemref)
 |  (renameitemref(var⟩*)) | (nnfitemref)
 |  (replaceitemreffposequivalence)
info  ::=   (sizenatnatnat)
proof  ::=   (iteminferenceformulainfo⟩*)proof
 |  (empty)itemref) | (nonemptyitemref)