8 |
8 |
9 signature RES_TYPES_SORTS = |
9 signature RES_TYPES_SORTS = |
10 sig |
10 sig |
11 exception ARITIES of string |
11 exception ARITIES of string |
12 val arity_clause: string * (string * string list list) list -> ResClause.arityClause list |
12 val arity_clause: string * (string * string list list) list -> ResClause.arityClause list |
13 val arity_clause_thy: theory -> ResClause.arityClause list list * (string * 'a list) list |
13 val arity_clause_thy: theory -> ResClause.arityClause list |
14 type classrelClauses |
14 type classrelClauses |
15 val classrel_clause: string * string list -> ResClause.classrelClause list |
15 val classrel_clause: string * string list -> ResClause.classrelClause list |
16 val classrel_clauses_classrel: Sorts.classes -> ResClause.classrelClause list list |
16 val classrel_clauses_classrel: Sorts.classes -> ResClause.classrelClause list list |
17 val classrel_clauses_thy: theory -> ResClause.classrelClause list list |
17 val classrel_clauses_thy: theory -> ResClause.classrelClause list |
18 val multi_arity_clause: |
|
19 (string * (string * string list list) list) list -> |
|
20 (string * 'a list) list -> |
|
21 ResClause.arityClause list list * (string * 'a list) list |
|
22 val tptp_arity_clause_thy: theory -> string list list |
|
23 end; |
18 end; |
24 |
19 |
25 structure ResTypesSorts: RES_TYPES_SORTS = |
20 structure ResTypesSorts: RES_TYPES_SORTS = |
26 struct |
21 struct |
27 |
22 |
36 |
31 |
37 fun multi_arity_clause [] expts = ([], expts) |
32 fun multi_arity_clause [] expts = ([], expts) |
38 | multi_arity_clause ((tcon, []) :: tcons_ars) expts = |
33 | multi_arity_clause ((tcon, []) :: tcons_ars) expts = |
39 multi_arity_clause tcons_ars ((tcon, []) :: expts) |
34 multi_arity_clause tcons_ars ((tcon, []) :: expts) |
40 | multi_arity_clause (tcon_ar :: tcons_ars) expts = |
35 | multi_arity_clause (tcon_ar :: tcons_ars) expts = |
41 let val result = multi_arity_clause tcons_ars expts |
36 let val (cls,ary) = multi_arity_clause tcons_ars expts |
42 in ((arity_clause tcon_ar :: fst result), snd result) end; |
37 in ((arity_clause tcon_ar @ cls), ary) end; |
43 |
38 |
44 fun arity_clause_thy thy = |
39 fun arity_clause_thy thy = |
45 let val arities = #arities (Type.rep_tsig (Sign.tsig_of thy)) |
40 let val arities = #arities (Type.rep_tsig (Sign.tsig_of thy)) |
46 in multi_arity_clause (Symtab.dest arities) [] end; |
41 in #1 (multi_arity_clause (Symtab.dest arities) []) end; |
47 |
|
48 fun tptp_arity_clause_thy thy = |
|
49 map (map ResClause.tptp_arity_clause) (#1 (arity_clause_thy thy)); |
|
50 |
42 |
51 |
43 |
52 (* Isabelle classes *) |
44 (* Isabelle classes *) |
53 |
45 |
54 type classrelClauses = ResClause.classrelClause list Symtab.table; |
46 type classrelClauses = ResClause.classrelClause list Symtab.table; |
55 |
47 |
56 val classrel_of = #2 o #classes o Type.rep_tsig o Sign.tsig_of; |
48 val classrel_of = #2 o #classes o Type.rep_tsig o Sign.tsig_of; |
57 val classrel_clause = ResClause.classrelClauses_of; |
49 val classrel_clause = ResClause.classrelClauses_of; |
58 fun classrel_clauses_classrel (C: Sorts.classes) = map classrel_clause (Graph.dest C); |
50 fun classrel_clauses_classrel (C: Sorts.classes) = map classrel_clause (Graph.dest C); |
59 val classrel_clauses_thy = classrel_clauses_classrel o classrel_of; |
51 val classrel_clauses_thy = List.concat o classrel_clauses_classrel o classrel_of; |
60 |
|
61 val tptp_classrel_clauses_thy = |
|
62 map (map ResClause.tptp_classrelClause) o classrel_clauses_thy; |
|
63 |
52 |
64 end; |
53 end; |