|
1 %ID: $Id$ |
|
2 %Author: Jia Meng, NICTA |
|
3 %typed combinator reduction for partial-types (include S) |
|
4 |
|
5 %K P Q --> P |
|
6 input_clause(a1,axiom, |
|
7 [++equal(hAPP(hAPP(c_COMBK,P,tc_fun(A,tc_fun(B,A))),Q,tc_fun(B,A)),P)]). |
|
8 |
|
9 |
|
10 %S P Q R --> P R (Q R) |
|
11 input_clause(a2,axiom, |
|
12 [++equal(hAPP(hAPP(hAPP(c_COMBS,P,tc_fun(tc_fun(A,tc_fun(B,C)),tc_fun(tc_fun(A,B),tc_fun(A,C)))),Q,tc_fun(tc_fun(A,B),tc_fun(A,C))),R,tc_fun(A,C)),hAPP(hAPP(P,R,tc_fun(A,tc_fun(B,C))),hAPP(Q,R,tc_fun(A,B)),tc_fun(B,C)))]). |
|
13 |
|
14 %I P --> P |
|
15 input_clause(a3,axiom, |
|
16 [++equal(hAPP(c_COMBI,P,tc_fun(T,T)),P)]). |
|
17 |
|
18 |
|
19 %B P Q R --> P(Q R) |
|
20 input_clause(a4,axiom, |
|
21 [++equal(hAPP(hAPP(hAPP(c_COMBB,P,tc_fun(tc_fun(A,B),tc_fun(tc_fun(C,A),tc_fun(C,B)))),Q,tc_fun(tc_fun(C,A),tc_fun(C,B))),R,tc_fun(C,B)),hAPP(P,hAPP(Q,R,tc_fun(C,A)),tc_fun(A,B)))]). |
|
22 |
|
23 |
|
24 %C P Q R --> P R Q |
|
25 input_clause(a5,axiom, |
|
26 [++equal(hAPP(hAPP(hAPP(c_COMBC,P,tc_fun(tc_fun(A,tc_fun(B,C)),tc_fun(B,tc_fun(A,C)))),Q,tc_fun(B,tc_fun(A,C))),R,tc_fun(A,C)),hAPP(hAPP(P,R,tc_fun(A,tc_fun(B,C))),Q,tc_fun(B,C)))]). |
|
27 |
|
28 %the combinators are all different |
|
29 input_clause(a6,axiom, |
|
30 [--equal(c_COMBI,c_COMBK)]). |
|
31 |
|
32 input_clause(a7,axiom, |
|
33 [--equal(c_COMBI,c_COMBS)]). |
|
34 |
|
35 input_clause(a8,axiom, |
|
36 [--equal(c_COMBI,c_COMBB)]). |
|
37 |
|
38 input_clause(a9,axiom, |
|
39 [--equal(c_COMBI,c_COMBC)]). |
|
40 |
|
41 input_clause(a10,axiom, |
|
42 [--equal(c_COMBK,c_COMBS)]). |
|
43 |
|
44 input_clause(a11,axiom, |
|
45 [--equal(c_COMBK,c_COMBB)]). |
|
46 |
|
47 input_clause(a12,axiom, |
|
48 [--equal(c_COMBK,c_COMBC)]). |
|
49 |
|
50 input_clause(a13,axiom, |
|
51 [--equal(c_COMBS,c_COMBB)]). |
|
52 |
|
53 input_clause(a14,axiom, |
|
54 [--equal(c_COMBS,c_COMBC)]). |
|
55 |
|
56 input_clause(a15,axiom, |
|
57 [--equal(c_COMBB,c_COMBC)]). |
|
58 |
|
59 input_clause(a16,axiom, |
|
60 [--hBOOL(hAPP(hAPP(fequal,X,tc_fun(A,tc_fun(A,tc_bool))),Y,tc_fun(A,tc_bool))), |
|
61 ++equal(X,Y)]). |
|
62 |
|
63 input_clause(a17,axiom, |
|
64 [++hBOOL(hAPP(hAPP(fequal,X,tc_fun(A,tc_fun(A,tc_bool))),Y,tc_fun(A,tc_bool))), |
|
65 --equal(X,Y)]). |
|
66 |
|
67 |