Prolog "pred"

Admin User, created Apr 07. 2025
         
/**
* Warranty & Liability
* To the extent permitted by applicable law and unless explicitly
* otherwise agreed upon, XLOG Technologies AG makes no warranties
* regarding the provided information. XLOG Technologies AG assumes
* no liability that any problems might be solved with the information
* provided by XLOG Technologies AG.
*
* Rights & License
* All industrial property rights regarding the information - copyright
* and patent rights in particular - are the sole property of XLOG
* Technologies AG. If the company was not the originator of some
* excerpts, XLOG Technologies AG has at least obtained the right to
* reproduce, change and translate the information.
*
* Reproduction is restricted to the whole unaltered document. Reproduction
* of the information is only allowed for non-commercial uses. Selling,
* giving away or letting of the execution of the library is prohibited.
* The library can be distributed as part of your applications and libraries
* for execution provided this comment remains unchanged.
*
* Restrictions
* Only to be distributed with programs that add significant and primary
* functionality to the library. Not to be distributed with additional
* software intended to replace any components of the library.
*
* Trademarks
* Jekejeke is a registered trademark of XLOG Technologies AG.
*/
/**
* Source of test cases are the following standards:
* - Prolog General Core ISO/IEC 13211-1
*/
runner_file(control, pred, 'ISO 8.8 meta').
/****************************************************************/
/* Predicate Definitions */
/****************************************************************/
/* current_predicate(P) */
runner_pred(current_predicate,1, control, pred, 'ISO 8.8.2.4').
% :- multifile dog/0.
:- dynamic dog/0.
dog.
runner_case(current_predicate,1, control, pred, 'ISO 8.8.2.4, ISO 1') :-
current_predicate(dog/0).
runner_case(current_predicate,1, control, pred, 'ISO 8.8.2.4, ISO 2') :-
current_predicate(current_predicate/1).
elk(X) :- moose(X).
runner_case(current_predicate,1, control, pred, 'ISO 8.8.2.4, ISO 3') :-
current_predicate(elk/A), A==1.
runner_case(current_predicate,1, control, pred, 'ISO 8.8.2.4, ISO 4') :-
\+ current_predicate(ulk/_).
runner_case(current_predicate,1, control, pred, 'ISO 8.8.2.4, ISO 5a') :-
current_predicate(N/1), N==elk, !.
runner_case(current_predicate,1, control, pred, 'ISO 8.8.2.4, ISO 5b') :-
current_predicate(N/1), N==insect, !.
runner_case(current_predicate,1, control, pred, 'ISO 8.8.2.4, ISO 5c') :-
current_predicate(N/1), (N==elk; N==insect),
current_predicate(M/1), M\==N, N==insect, M==elk, !.
runner_case(current_predicate,1, control, pred, 'ISO 8.8.2.4, ISO 5d') :-
current_predicate(N/1), (N==elk; N==insect),
current_predicate(M/1), M\==N, N==elk, M==insect, !.
runner_case(current_predicate,1, control, pred, 'ISO 8.8.2.4, ISO 6') :-
catch(current_predicate(4), error(E,_), true),
E==type_error(predicate_indicator, 4).
/* predicate_property(P, Q) */
runner_pred(predicate_property,2, control, pred, 'MOD 7.2.2.4').
runner_case(predicate_property,2, control, pred, 'MOD 7.2.2.4, XLOG 1') :-
predicate_property(dog/0, dynamic).
runner_case(predicate_property,2, control, pred, 'MOD 7.2.2.4, XLOG 2') :-
predicate_property(current_predicate/1, static).
runner_case(predicate_property,2, control, pred, 'MOD 7.2.2.4, XLOG 3') :-
predicate_property(elk/A,B), A==1, B==static, !.
runner_case(predicate_property,2, control, pred, 'MOD 7.2.2.4, XLOG 4') :-
\+ predicate_property(ulk/_,_).
runner_case(predicate_property,2, control, pred, 'MOD 7.2.2.4, XLOG 5') :-
predicate_property(N/1, P), N==elk, P==static, !.
runner_case(predicate_property,2, control, pred, 'MOD 7.2.2.4, XLOG 6') :-
predicate_property(N/1, P), N==insect, P==(dynamic), !.
runner_case(predicate_property,2, control, pred, 'MOD 7.2.2.4, XLOG 7') :-
predicate_property(N/1, _), (N==elk; N==insect),
predicate_property(M/1, P), M\==N, N==insect, M==elk, P==static, !.
runner_case(predicate_property,2, control, pred, 'MOD 7.2.2.4, XLOG 8') :-
predicate_property(N/1, _), (N==elk; N==insect),
predicate_property(M/1, P), M\==N, N==elk, M==insect, P==(dynamic), !.
runner_case(predicate_property,2, control, pred, 'MOD 7.2.2.4, XLOG 9') :-
catch(predicate_property(foo,_), error(E,_), true),
E==type_error(predicate_indicator, foo).