:- module bool.
:- use_module builtin, enum, list, private_builtin.
:- instance (enum:enum(bool : bool)).
bool:(X_4 or Y_5) = Result_6 :-
		bool:or(X_4, Y_5, Result_6).
bool:or((bool:yes), V_4, (bool:yes)).
bool:or((bool:no), Bool_5, Bool_5).
bool:or_list(List_3) = Result_4 :-
		bool:or_list(List_3, Result_4).
bool:(X_4 and Y_5) = Result_6 :-
		bool:and(X_4, Y_5, Result_6).
bool:and((bool:no), V_4, (bool:no)).
bool:and((bool:yes), Bool_5, Bool_5).
bool:and_list(List_3) = Result_4 :-
		bool:and_list(List_3, Result_4).
bool:(not X_3) = Result_4 :-
		bool:not(X_3, Result_4).
bool:not((bool:no), (bool:yes)).
bool:not((bool:yes), (bool:no)).
:- pragma termination_info(bool:or((builtin:in), (builtin:in)) = (builtin:out), finite(0, [no, yes, no]), cannot_loop).
:- pragma termination_info(bool:or((builtin:in), (builtin:in), (builtin:out)), finite(0, [no, yes, no]), cannot_loop).
:- pragma termination_info(bool:or_list((builtin:in)) = (builtin:out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bool:or_list((builtin:in), (builtin:out)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bool:and((builtin:in), (builtin:in)) = (builtin:out), finite(0, [no, yes, no]), cannot_loop).
:- pragma termination_info(bool:and((builtin:in), (builtin:in), (builtin:out)), finite(0, [no, yes, no]), cannot_loop).
:- pragma termination_info(bool:and_list((builtin:in)) = (builtin:out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bool:and_list((builtin:in), (builtin:out)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bool:not((builtin:in)) = (builtin:out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(bool:not((builtin:in), (builtin:out)), finite(0, [no, no]), cannot_loop).
