CPF 3 and CeTA 3

CPF 3

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.

Converter

CeTA 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.

Running certification mode of a competition with CPF 3

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.

  1. assume we are in category CR, and want to check confluence of example.trs via tool.sh

  2. tool.sh is run on example.trs with first-line YES/NO/MAYBE and proof afterwards.

  3. if the tool was successful,

  4. store first line as string in file answer.txt

  5. store proof in file proof.cpf2.xml

  6. until tools do not support CPF 3: convert proof.cpf2.xml to proof.cpf3.xml as described above

  7. if desired, run an XML syntax check as described above

  8. run competition converter tool to convert example.trs to example.input.xml

  9. finally invoke CeTA via

    ceta --inputf example.input.xml --property CR --answerf answer.txt proof.cpf3.xml

  10. (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:

CeTA 3 format of properties

CeTA 3 format of answers