% Socrates is mortal, adapted from Eyelet's input/socrates.pl.
%
% Eyelet uses type('Socrates', 'Man') and a single rule deriving Mortal.
% eyepl keeps the same reasoning shape and emits relation facts.

% Output declarations: query/1 selects the relations written to this example's golden output.
query(type(X0, X1)).
query(is(X0, X1)).

% Program structure: facts set up the scenario, and rules derive the queried conclusions.
type(socrates, man).

% Derivation rules: each rule below contributes one logical step toward the displayed results.
type(X, mortal) :-
  type(X, man).


is(test, true) :-
  type(socrates, mortal).
