File: ccl_inferencedoc.h

package info (click to toggle)
eprover 2.6%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 21,288 kB
  • sloc: ansic: 331,111; csh: 12,026; python: 10,178; awk: 5,825; makefile: 461; sh: 389
file content (211 lines) | stat: -rw-r--r-- 6,778 bytes parent folder | download
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
/*-----------------------------------------------------------------------

File  : ccl_inferencedoc.h

Author: Stephan Schulz

Contents

  Functions and constants for reporting on the proof process.

  Copyright 1998, 1999 by the author.
  This code is released under the GNU General Public Licence and
  the GNU Lesser General Public License.
  See the file COPYING in the main E directory for details..
  Run "eprover -h" for contact information.

Changes

<1> Tue Jan  5 15:27:37 MET 1999
    Partially new, partially lifted from ccl_clauses.[ch]

-----------------------------------------------------------------------*/

#ifndef CCL_INFERENCEDOC

#define CCL_INFERENCEDOC

#include <ccl_clausepos.h>
#include <ccl_formula_wrapper.h>

/*---------------------------------------------------------------------*/
/*                    Data type declarations                           */
/*---------------------------------------------------------------------*/


typedef enum
{
   inf_noinf,
   inf_initial,
   inf_quote,
   inf_evalgc,
   inf_paramod,
   inf_sim_paramod,
   inf_efactor,
   inf_factor,
   inf_eres,
   inf_split,
   inf_simplify_reflect,
   inf_context_simplify_reflect,
   inf_ac_resolution,
   inf_condense,
   inf_minimize,
   inf_rewrite,

   inf_fof_simpl,
   inf_fof_split_equiv,
   inf_fof_nnf,
   inf_fof_intro_def,
   inf_fof_apply_def,
   inf_shift_quantors,
   inf_fof_distrib,
   inf_annotate_question,
   inf_eval_answers,
   inf_var_rename,
   inf_skolemize_out,
   inf_neg_conjecture,
   inf_unroll_fool
}InfType;

typedef enum
{
   no_format,
   lop_format,
   pcl_format,
   tstp_format,
   tptp_format,
   xml_format
}OutputFormatType;


#define PCL_QUOTE  NULL
#define PCL_EVALGC "evalgc"
#define PCL_ER     "er"
#define PCL_PM     "pm"
#define PCL_SPM    "spm"
#define PCL_EF     "ef"
#define PCL_OF     "of"
#define PCL_SAT    "cdclpropres"
#define PCL_SPLIT  "split"
#define TSTP_SPLIT_REFINED "esplit"
#define TSTP_SPLIT_BASE    "split"
#define PCL_RW     "rw"
#define PCL_SR     "sr"
#define PCL_CSR    "csr"
#define PCL_ACRES  "ar"
#define PCL_CN     "cn"
#define PCL_CONDENSE "condense"

#define PCL_SC     "split_conjunct"
#define PCL_SE     "split_equiv"
#define PCL_FS     "fof_simplification"
#define PCL_NNF    "fof_nnf"
#define PCL_ID     "introduced"
#define PCL_ID_DEF "introduced(definition)"
#define PCL_AD     "apply_def"
#define PCL_SQ     "shift_quantors"
#define PCL_VR     "variable_rename"
#define PCL_SK     "skolemize"
#define PCL_DSTR   "distribute"
#define PCL_ANNOQ  "add_answer_literal"
#define PCL_EVANS  "eval_answer_literal"
#define PCL_NC     "assume_negation"
#define PCL_FU     "fool_unroll"
#define PCL_EBV    "eliminate_boolean_vars"
#define PCL_DYN_CNF "dynamic cnf"
#define PCL_FLEX_RESOLVE "flex_resolve"
#define PCL_ARG_CONG "arg_cong"
#define PCL_NEG_EXT "neg_ext"
#define PCL_POS_EXT "pos_ext"
#define PCL_EXT_SUP "ext_sup"
#define PCL_EXT_EQRES "ext_eqres"
#define PCL_INV_REC "recongize_injectivity"


/*---------------------------------------------------------------------*/
/*                Exported Functions and Variables                     */
/*---------------------------------------------------------------------*/

extern OutputFormatType DocOutputFormat;
extern bool             PCLFullTerms;
extern bool             PCLStepCompact;
extern int              PCLShellLevel;

char*  PCLTypeStr(FormulaProperties type);

void    DocClauseCreation(FILE* out, long level, Clause_p clause,
                          InfType op, Clause_p parent1,
                          Clause_p parent2, char* comment);
#define DocClauseCreationDefault(clause, op, parent1, parent2)\
        DocClauseCreation(GlobalOut, OutputLevel, (clause),\
             (op), (parent1), (parent2), NULL)

void    DocClauseFromForm(FILE* out, long level, Clause_p clause,
                          WFormula_p parent);

void    DocClauseModification(FILE* out, long level, Clause_p clause, InfType
           op, Clause_p partner, Sig_p sig, char* comment);
#define DocClauseModificationDefault(clause, op, partner)\
        DocClauseModification(GlobalOut, OutputLevel, (clause), (op),\
           (partner), NULL, NULL)

void    DocClauseQuote(FILE* out, long level, long target_level,
             Clause_p clause, char* comment, Clause_p
             opt_partner);

#define DocClauseQuoteDefault(target_level, clause, comment)\
        DocClauseQuote(GlobalOut, OutputLevel, (target_level),\
             (clause), (comment), NULL)

void    DocClauseRewrite(FILE* out, long level, ClausePos_p rewritten,
          Term_p old_term, char* comment);

#define DocClauseRewriteDefault(rewritten, old_term)\
        DocClauseRewrite(GlobalOut, OutputLevel, (rewritten),\
          (old_term), NULL);
void    DocClauseEqUnfold(FILE* out, long level, Clause_p rewritten,
           ClausePos_p demod, PStack_p demod_pos);


void    DocFormulaCreation(FILE* out, long level, WFormula_p formula,
                           InfType op, WFormula_p parent1,
                           WFormula_p parent2, char* comment);

#define DocFormulaCreationDefault(formula, op, parent1, parent2)\
        DocFormulaCreation(GlobalOut, OutputLevel, (formula),\
        (op), (parent1), (parent2), NULL)

void    DocFormulaModification(FILE* out, long level, WFormula_p form,
                                InfType op, char* comment);

#define DocFormulaModificationDefault(form, op)\
        DocFormulaModification(GlobalOut, OutputLevel, (form), (op), NULL)

void    DocFormulaIntroDefs(FILE* out, long level, WFormula_p form,
                            PStack_p def_list, char* comment);
#define DocFormulaIntroDefsDefault(form, def_list)\
        DocFormulaIntroDefs(GlobalOut, OutputLevel, (form), (def_list), NULL)


void    DocIntroSplitDef(FILE* out, long level, WFormula_p form);

#define DocIntroSplitDefDefault(form)\
        DocIntroSplitDef(GlobalOut, OutputLevel, (form))

void    DocIntroSplitDefRest(FILE* out, long level, Clause_p clause,
                             WFormula_p parent, char* comment);
#define DocIntroSplitDefRestDefault(clause, parent)\
        DocIntroSplitDefRest(GlobalOut, OutputLevel, (clause), (parent), NULL)

void    DocClauseApplyDefs(FILE* out, long level, Clause_p clause,
                           long parent_id, PStack_p def_ids,
                           char* comment);
#define DocClauseApplyDefsDefault(clause, parent_id, def_ids)\
        DocClauseApplyDefs(GlobalOut, OutputLevel, (clause), \
                           (parent_id), (def_ids), NULL)

#endif

/*---------------------------------------------------------------------*/
/*                        End of File                                  */
/*---------------------------------------------------------------------*/