24 if (a == logic_type::TRUE && b == logic_type::FALSE
25 || b == logic_type::TRUE && a == logic_type::FALSE
26 || a == logic_type::INCONSISTENT
27 || b == logic_type::INCONSISTENT)
28 return logic_type::INCONSISTENT;
29 if (a == logic_type::UNKNOWN)
31 if (b == logic_type::UNKNOWN)
45 if (a == logic_type::FALSE) {
49 if (a == logic_type::UNKNOWN) {
50 if(b == logic_type::FALSE)
return logic_type::UNKNOWN;
51 if(b == logic_type::UNKNOWN)
return logic_type::UNKNOWN;
52 if(b == logic_type::INCONSISTENT)
return logic_type::INCONSISTENT;
53 if(b == logic_type::TRUE)
return logic_type::TRUE;
56 if (a == logic_type::INCONSISTENT) {
57 if(b == logic_type::FALSE)
return logic_type::INCONSISTENT;
58 if(b == logic_type::UNKNOWN)
return logic_type::INCONSISTENT;
59 if(b == logic_type::INCONSISTENT)
return logic_type::INCONSISTENT;
60 if(b == logic_type::TRUE)
return logic_type::TRUE;
63 if (a == logic_type::TRUE) {
64 return logic_type::TRUE;
78 if (a == logic_type::FALSE) {
79 return logic_type::FALSE;
82 if (a == logic_type::UNKNOWN) {
83 if(b == logic_type::FALSE)
return logic_type::FALSE;
84 if(b == logic_type::UNKNOWN)
return logic_type::UNKNOWN;
85 if(b == logic_type::INCONSISTENT)
return logic_type::UNKNOWN;
86 if(b == logic_type::TRUE)
return logic_type::UNKNOWN;
89 if (a == logic_type::INCONSISTENT) {
90 if(b == logic_type::FALSE)
return logic_type::FALSE;
91 if(b == logic_type::UNKNOWN)
return logic_type::UNKNOWN;
92 if(b == logic_type::INCONSISTENT)
return logic_type::INCONSISTENT;
93 if(b == logic_type::TRUE)
return logic_type::INCONSISTENT;
96 if (a == logic_type::TRUE) {
110 if (a == logic_type::FALSE) {
111 return logic_type::TRUE;
114 if (a == logic_type::UNKNOWN) {
115 if(b == logic_type::FALSE)
return logic_type::UNKNOWN;
116 if(b == logic_type::UNKNOWN)
return logic_type::UNKNOWN;
117 if(b == logic_type::INCONSISTENT)
return logic_type::INCONSISTENT;
118 if(b == logic_type::TRUE)
return logic_type::TRUE;
121 if (a == logic_type::INCONSISTENT) {
122 if(b == logic_type::FALSE)
return logic_type::INCONSISTENT;
123 if(b == logic_type::UNKNOWN)
return logic_type::INCONSISTENT;
124 if(b == logic_type::INCONSISTENT)
return logic_type::INCONSISTENT;
125 if(b == logic_type::TRUE)
return logic_type::TRUE;
128 if (a == logic_type::TRUE) {
129 if(b == logic_type::FALSE)
return logic_type::FALSE;
130 if(b == logic_type::UNKNOWN)
return logic_type::UNKNOWN;
131 if(b == logic_type::INCONSISTENT)
return logic_type::INCONSISTENT;
132 if(b == logic_type::TRUE)
return logic_type::TRUE;
142 if (a == logic_type::TRUE) {
143 return logic_type::FALSE;
146 if (a == logic_type::FALSE) {
147 return logic_type::TRUE;
159 if (a == logic_type::TRUE || b == logic_type::TRUE) {
160 return logic_type::TRUE;
163 if (a == logic_type::INCONSISTENT || b == logic_type::INCONSISTENT) {
164 return logic_type::INCONSISTENT;
167 if (a == logic_type::UNKNOWN || b == logic_type::UNKNOWN) {
168 return logic_type::UNKNOWN;
171 return logic_type::FALSE;
181 if (a == logic_type::FALSE) {
185 if (a == logic_type::UNKNOWN) {
186 if(b == logic_type::FALSE)
return logic_type::UNKNOWN;
187 if(b == logic_type::UNKNOWN)
return logic_type::UNKNOWN;
188 if(b == logic_type::INCONSISTENT)
return logic_type::INCONSISTENT;
189 if(b == logic_type::TRUE)
return logic_type::TRUE;
192 if (a == logic_type::INCONSISTENT) {
193 if(b == logic_type::FALSE)
return logic_type::INCONSISTENT;
194 if(b == logic_type::UNKNOWN)
return logic_type::INCONSISTENT;
195 if(b == logic_type::INCONSISTENT)
return logic_type::INCONSISTENT;
196 if(b == logic_type::TRUE)
return logic_type::TRUE;
199 if (a == logic_type::TRUE)
210 if (a == logic_type::TRUE) {
214 if (a == logic_type::INCONSISTENT) {
215 if(b == logic_type::FALSE)
return logic_type::FALSE;
216 if(b == logic_type::UNKNOWN)
return logic_type::UNKNOWN;
217 if(b == logic_type::INCONSISTENT)
return logic_type::INCONSISTENT;
218 if(b == logic_type::TRUE)
return logic_type::INCONSISTENT;
221 if (a == logic_type::UNKNOWN) {
222 if(b == logic_type::FALSE)
return logic_type::FALSE;
223 if(b == logic_type::UNKNOWN)
return logic_type::UNKNOWN;
224 if(b == logic_type::INCONSISTENT)
return logic_type::UNKNOWN;
225 if(b == logic_type::TRUE)
return logic_type::UNKNOWN;
228 if (a == logic_type::FALSE)
239 case Inter4ql::logic_type::FALSE:
240 return std::string(
"false");
241 case Inter4ql::logic_type::TRUE:
242 return std::string(
"true");
243 case Inter4ql::logic_type::UNKNOWN:
244 return std::string(
"unknown");
245 case Inter4ql::logic_type::INCONSISTENT:
246 return std::string(
"inconsistent");
260 return logic_type::INCONSISTENT;
262 return logic_type::FALSE;
264 return logic_type::TRUE;
266 return logic_type::UNKNOWN;
275 if (i == logic_type::TRUE || i == logic_type::INCONSISTENT)
286 if (i == logic_type::FALSE || i == logic_type::INCONSISTENT)
301 if (a == logic_type::INCONSISTENT)
303 if (b == logic_type::UNKNOWN)
static bool is_more_knowledge(logic_type::type a, logic_type::type b)
checks if first logic value contains more informations than the second
Definition: Logic.h:297
Static class for handling four-valued logic operations.
Definition: Logic.h:13
static Inter4ql::logic_type::type create(bool _t, bool _f)
craetes four-valued logic value from two booleans
Definition: Logic.h:258
type
Enumeration type for four-valued logic.
Definition: Types.h:45
static bool is_true(logic_type::type i)
checks if input four-valued logic value is true
Definition: Logic.h:274
static logic_type::type TUP(logic_type::type a, logic_type::type b)
returns upper bound on truth ordering
Definition: Logic.h:158
static logic_type::type OR(logic_type::type a, logic_type::type b)
or logic method - in standard logic terms
Definition: Logic.h:41
static logic_type::type OR_RESULT(logic_type::type a, logic_type::type b)
or method - when you have type a in model and put type b...
Definition: Logic.h:21
static bool is_false(logic_type::type i)
checks if input four-valued logic value is false
Definition: Logic.h:285
Definition: Application.cc:37
static std::string get_logic_name(Inter4ql::logic_type::type t)
converts logic value to string
Definition: Logic.h:237
static logic_type::type AND(logic_type::type a, logic_type::type b)
and logic method
Definition: Logic.h:74
static logic_type::type IMPLICATION(logic_type::type a, logic_type::type b)
implication logic method
Definition: Logic.h:107
static logic_type::type NOT(logic_type::type a)
negates logic value
Definition: Logic.h:141
static logic_type::type MIN(logic_type::type a, logic_type::type b)
returns MIN logic value wrt to f<u<i<t order
Definition: Logic.h:209
static logic_type::type MAX(logic_type::type a, logic_type::type b)
returns MAX logic value wrt to f<u<i<t order
Definition: Logic.h:180