1 ///////////////////////////////////////////////////////////////////////////////
2 // This file is generated automatically using Prop (version 2.3.6),
3 // last updated on Nov 2, 1999.
4 // The original source file is "logic3.ph".
5 ///////////////////////////////////////////////////////////////////////////////
7 #define PROP_REWRITING_USED
8 #define PROP_PRINTER_USED
9 #define PROP_QUARK_USED
11 ///////////////////////////////////////////////////////////////////////////////
13 ///////////////////////////////////////////////////////////////////////////////
14 static const Quark
_l_o_g_i_c_3co_h_Q3("->");
15 static const Quark
_l_o_g_i_c_3co_h_Q4("xor");
16 static const Quark
_l_o_g_i_c_3co_h_Q1("and");
17 static const Quark
_l_o_g_i_c_3co_h_Q2("or");
18 static const Quark
_l_o_g_i_c_3co_h_Q5("<->");
24 #include <AD/strings/quark.h>
28 ///////////////////////////////////////////////////////////////////////////////
30 // Forward class definition for Wff
32 ///////////////////////////////////////////////////////////////////////////////
33 #ifndef datatype_Wff_defined
34 #define datatype_Wff_defined
42 ///////////////////////////////////////////////////////////////////////////////
44 // Base class for datatype Wff
46 ///////////////////////////////////////////////////////////////////////////////
47 class a_Wff
: public TermObj
{
50 tag_Var
= 0, tag_Op
= 1, tag_Not
= 2
54 const Tag_Wff tag__
; // variant tag
56 inline a_Wff(Tag_Wff t__
) : tag__(t__
) {}
59 inline int boxed(const a_Wff
* x
) { return (unsigned long)x
>= 2; }
60 inline int untag(const a_Wff
* x
) { return boxed(x
) ? x
->tag__
+ 2 : (int)x
; }
61 ///////////////////////////////////////////////////////////////////////////////
63 // Pretty printing methods for Wff
65 ///////////////////////////////////////////////////////////////////////////////
67 extern ostream
& operator<<(ostream
&, Wff
);
68 extern PrettyOStream
& operator<<(PrettyOStream
&, Wff
);
69 ///////////////////////////////////////////////////////////////////////////////
71 // Class for datatype constructor Wff::Var
73 ///////////////////////////////////////////////////////////////////////////////
74 class Wff_Var
: public a_Wff
{
78 inline Wff_Var (Quark
const & x_Var
)
79 : a_Wff(tag_Var
), Var(x_Var
)
84 ///////////////////////////////////////////////////////////////////////////////
86 // Class for datatype constructor Wff::Op
88 ///////////////////////////////////////////////////////////////////////////////
89 class Wff_Op
: public a_Wff
{
92 Quark _1
; Wff _2
; Wff _3
;
93 inline Wff_Op (Quark
const & x_1
, Wff x_2
, Wff x_3
)
94 : a_Wff(tag_Op
), _1(x_1
), _2(x_2
), _3(x_3
)
99 ///////////////////////////////////////////////////////////////////////////////
101 // Class for datatype constructor Wff::Not
103 ///////////////////////////////////////////////////////////////////////////////
104 class Wff_Not
: public a_Wff
{
108 inline Wff_Not (Wff x_Not
)
109 : a_Wff(tag_Not
), Not(x_Not
)
114 ///////////////////////////////////////////////////////////////////////////////
116 // Datatype constructor functions for Wff
118 ///////////////////////////////////////////////////////////////////////////////
119 inline a_Wff
* Var (Quark
const & x_Var
)
121 return new Wff_Var (x_Var
);
123 inline a_Wff
* Op (Quark
const & x_1
, Wff x_2
, Wff x_3
)
125 return new Wff_Op (x_1
, x_2
, x_3
);
127 inline a_Wff
* Not (Wff x_Not
)
129 return new Wff_Not (x_Not
);
131 ///////////////////////////////////////////////////////////////////////////////
133 // Downcasting functions for Wff
135 ///////////////////////////////////////////////////////////////////////////////
136 inline Wff_Var
* _Var(const a_Wff
* _x_
) { return (Wff_Var
*)_x_
; }
137 inline Wff_Op
* _Op(const a_Wff
* _x_
) { return (Wff_Op
*)_x_
; }
138 inline Wff_Not
* _Not(const a_Wff
* _x_
) { return (Wff_Not
*)_x_
; }
140 ///////////////////////////////////////////////////////////////////////////////
141 // Definition of law And
142 ///////////////////////////////////////////////////////////////////////////////
144 inline Wff
And(Wff a
, Wff b
)
145 { return Op(_l_o_g_i_c_3co_h_Q1
,a
,b
); }
147 ///////////////////////////////////////////////////////////////////////////////
148 // Definition of law Or
149 ///////////////////////////////////////////////////////////////////////////////
151 inline Wff
Or(Wff a
, Wff b
)
152 { return Op(_l_o_g_i_c_3co_h_Q2
,a
,b
); }
154 ///////////////////////////////////////////////////////////////////////////////
155 // Definition of law Implies
156 ///////////////////////////////////////////////////////////////////////////////
158 inline Wff
Implies(Wff a
, Wff b
)
159 { return Op(_l_o_g_i_c_3co_h_Q3
,a
,b
); }
161 ///////////////////////////////////////////////////////////////////////////////
162 // Definition of law Xor
163 ///////////////////////////////////////////////////////////////////////////////
165 inline Wff
Xor(Wff a
, Wff b
)
166 { return Op(_l_o_g_i_c_3co_h_Q4
,a
,b
); }
168 ///////////////////////////////////////////////////////////////////////////////
169 // Definition of law Equiv
170 ///////////////////////////////////////////////////////////////////////////////
172 inline Wff
Equiv(Wff a
, Wff b
)
173 { return Op(_l_o_g_i_c_3co_h_Q5
,a
,b
); }
182 ------------------------------- Statistics -------------------------------
183 Merge matching rules = yes
184 Number of DFA nodes merged = 0
185 Number of ifs generated = 0
186 Number of switches generated = 0
189 Adaptive matching = disabled
190 Fast string matching = disabled
191 Inline downcasts = disabled
192 --------------------------------------------------------------------------