-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
102 lines (77 loc) · 3.75 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# Rainbow, a termination proof certification tool
# See the COPYRIGHTS and LICENSE files.
The aim of Rainbow is to check the correctness of termination
certificates for various existing formats. The certification is
currently done by generating a Coq file based on the CoLoR
library. Coq is a powerful proof assistant and checker (see
http://coq.inria.fr) and CoLoR is a Coq library on rewriting and
termination (see https://github.com/fblanqui/color).
LICENSE: this file describes the license governing this tool.
COPYRIGHTS: this file describes the copyrights holders.
INSTALL: this file describes a compilation procedure.
THANKS: thanks to various people for their comments or help.
TPDB is the Termination Problem Data Base available at
http://dev.aspsimon.org/projects/termcomp/downloads/.
The main program is "convert". See INSTALL to build it. It allows you
to convert one problem/proof file from one format to another one. Do
"convert -h" to learn how to use it. We also provide some useful
scripts in the scripts directory:
- check_coq file.xml: convert a CPF file.xml into file.v and check it with coqc
- rename_tpdb: rename TPDB/CPF files to get valid Coq filenames
Various examples are provided in the directory examples/. Do "[g]make
examples" to compile them.
For checking proofs with Coq, make sure that your ~/.coqrc file
contains the following line, where <dir> is the directory where CoLoR
files have been compiled:
Add Rec LoadPath "<dir>" as CoLoR.
Command for checking a CPF file:
convert -icpf file.cpf -ocoq > file.v && coqc -dont-load-proofs file.v
Or:
check_coq file.xml
-------------------------------------------------------
TPDB termination problems supported by Rainbow
-------------------------------------------------------
- TRS standard
- TRS relative
- TRS modulo equations l=r with Var(l)=Var(r) (e.g. associativity
and commutativity) are translated into TRS relative
- SRS standard
- SRS relative
-------------------------------------------------------
Proof techniques supported by Rainbow
-------------------------------------------------------
- dependency pair transformation with or without marked symbols
- dependency graph decomposition based on unification
- polynomial interpretation
- matrix interpretation (standard, arctic and below-zero)
- argument filtering
- SRS or unary TRS reversal
- RPO
- loops
- root labelling
- flat context closure
See grammar/proof.xsd for details.
-------------------------------------------------------
Termination problems formats supported by Rainbow
-------------------------------------------------------
- the old TPDB format grammar/tpdb.html (file extensions .trs and .srs)
- the new TPDB format grammar/xtc.xsd (file extension .xtc)
- its own format grammar/problem.xsd (file extension .pb)
-------------------------------------------------------
Termination certificates formats supported by Rainbow
-------------------------------------------------------
- the new common format grammar/cpf.xsd (file extension .cpf)
- its own format grammar/proof.xsd (file extension .prf)
-------------------------------------------------------
Translation of TPDB variable names into CoLoR
-------------------------------------------------------
A variable in a TPDB rule (resp. equation) [LHS -> RHS | cond1, ...,
condn] (resp. [LHS == RHS]) is translated in CoLoR into a natural
number that is its leftmost position (starting from 0) in the list of
variables, computed in a depth-first manner, of the term
F(LHS,cond1,..,condn,RHS) (resp. F(LHS,RHS)) where F is some arbitrary
new symbol of the appropriate arity.
For instance, the rule f(y,y,x)->g(x,h(y)) is translated to
f(0,0,2)->g(2,h(0)) since the list of variables of the rule is
[y;y;x;x;y]. And the dependency pairs computed in CoLoR are
f(0,0,2)->g(2,h(0)) and f(0,0,2)->h(0).