Note that CPF 3 has just been fixed with the release of CeTA 3.0.
CPF 3 has several non backwards compatible changes to improve the overall structure of CPF.
<arg>
element around arguments of terms<relativeTerminationProof>
and <trsTerminationProof>
any morexml/cpf2_to_3.xsl
for a detailed list of changesCeTA version 3.0 will no longer accept CPF 2 files, but insists on CPF 3 files. However, all of the current tools produce CPF 2 files. Therefore, this archive contains a converter from CPF 2 to CPF 3; it can be compiled by
cd xml; make
Afterwards
xml/cpf2_to_3.sh [--termIndex] proof.cpf2.xml > proof.cpf3.xml
converts a file from CPF 2 to CPF 3. The optional --termIndex
flag turns on term-indexing. This will slow down the converter,
but results in smaller proofs which are also faster to check by CeTA.
One can always perform a syntactic check on the valid CPF structure of an XML-file proof.cpf3.xml
by
xmllint --huge --noout --schema xml/cpf3.xsd proof.cpf3.xml
The converter successfully converted all CPFs of CoCo 2020–2023 and of termCOMP 2023, so that the resulting CPF 3 files are valid w.r.t. the schema and are certified by CeTA 3.0.
A few CPF 3 examples are included in the examples
-directory here or in the examples
-directory of CeTA 3.0.
CPF and CeTA 3 now have a new mode to take input, property, answer and proof as separate arguments. In this way it is ensured that the tools cannot change the input TRS, etc.
The workflow is as follows.
assume we are in category CR
, and want to check confluence of example.trs
via tool.sh
tool.sh
is run on example.trs
with first-line YES/NO/MAYBE and proof afterwards.
if the tool was successful,
store first line as string in file answer.txt
store proof in file proof.cpf2.xml
until tools do not support CPF 3: convert proof.cpf2.xml
to proof.cpf3.xml
as described above
if desired, run an XML syntax check as described above
run competition converter tool to convert example.trs
to example.input.xml
finally invoke CeTA via
ceta --inputf example.input.xml --property CR --answerf answer.txt proof.cpf3.xml
(one could also use --answer
and then provide a string directly, without
storing the answer in a file answer.txt
; invoke CeTA 3.0 without arguments or
have a look at CeTAs Main.hs
to
see the various options)
So, the only thing that needs to be done by competition organizers is to provide
a trusted converter from the competition format to the CPF input format, see the
file xml/cpf3.xsd
, element <input>
for details:
input/trsInput
input/trsWithSignature
input/twoTrsWithSignature
input/infeasibilityInput
input
SN
RC
or DC
CR
, COM
, INF
YES
or NO
for all binary answers (termination, confluence, etc.)WORST_CASE(?,O(n^d))
for complexity answers with a concrete number d