% Definición de relaciones familiares

% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre(maria, laura).

% reglas
hermano(X, Y) :- padre(Z, X), padre(Z, Y), madre(W, X), madre(W, Y), X \= Y.
hermana(X, Y) :- hermano(X, Y), mujer(X).
abuelo(X, Y) :- padre(X, Z), padre(Z, Y); padre(X, Z), madre(Z, Y).
abuela(X, Y) :- madre(X, Z), madre(Z, Y); madre(X, Z), padre(Z, Y).

% Predicado para verificar si alguien es mujer
mujer(ana).
mujer(maria).
mujer(laura).


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre(maria, laura).

% reglas
hermano(X, Y) :- padre(Z, X), padre(Z, Y), madre(W, X), madre(W, Y), X \= Y.
hermana(X, Y) :- hermano(X, Y), mujer(X).
abuelo(X, Y) :- padre(X, Z), padre(Z, Y); padre(X, Z), madre(Z, Y).
abuela(X, Y) :- madre(X, Z), madre(Z, Y); madre(X, Z), padre(Z, Y).

% Predicado para verificar si alguien es mujer
mujer(ana).
mujer(maria).
mujer(l


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre(maria, laura).

% reglas
hermano(X, Y) :- padre(Z, X), padre(Z, Y), madre(W, X), madre(W, Y), X \= Y.
hermana(X, Y) :- hermano(X, Y), mujer(X).
abuelo(X, Y) :- padre(X, Z), padre(Z, Y); padre(X, Z), madre(Z, Y).
abuela(X, Y) :- madre(X, Z), madre(Z, Y); madre(X, Z), padre(Z, Y).

% Predicado para verificar si alguien es mujer
mujer(ana


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre(maria, laura).

% reglas
hermano(X, Y) :- padre(Z, X), padre(Z, Y), madre(W, X), madre(W, Y), X \= Y.
hermana(X, Y) :- hermano(X, Y), mujer(X).
abuelo(X, Y) :- padre(X, Z), padre(Z, Y); padre(X, Z), madre(Z, Y).
abuela(X, Y) :- madre(X, Z), madre(Z, Y); madre(X, Z), padre(Z, Y).

% Predicado para verificar si a


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre(maria, laura).

% reglas
hermano(X, Y) :- padre(Z, X), padre(Z, Y), madre(W, X), madre(W, Y), X \= Y.
hermana(X, Y) :- hermano(X, Y), mujer(X).
abuelo(X, Y) :- padre(X, Z), padre(Z, Y); padre(X, Z), madre(Z, Y).
abuela(X, Y) :- madre(X, Z), madre(Z, Y); madre(X, Z), padre(Z, Y).

% Predic


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre(maria, laura).

% reglas
hermano(X, Y) :- padre(Z, X), padre(Z, Y), madre(W, X), madre(W, Y), X \= Y.
hermana(X, Y) :- hermano(X, Y), mujer(X).
abuelo(X, Y) :- padre(X, Z), padre(Z, Y); padre(X, Z), madre(Z, Y).
abuela(X, Y) :- madre(X, Z), madre(


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre(maria, laura).

% reglas
hermano(X, Y) :- padre(Z, X), padre(Z, Y), madre(W, X), madre(W, Y), X \= Y.
hermana(X, Y) :- hermano(X, Y), mujer(X).
abuelo(X, Y) :- padre(X, Z), padre(Z, Y); padre(X, Z), madre(Z, Y


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre(maria, laura).

% reglas
hermano(X, Y) :- padre(Z, X), padre(Z, Y), madre(W, X), madre(W, Y), X \= Y.
hermana(X, Y) :- hermano(X, Y), mujer(X).
abuelo(X, Y) :- padre(X, Z), 


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre(maria, laura).

% reglas
hermano(X, Y) :- padre(Z, X), padre(Z, Y), madre(W, X), madre(W, Y), X \= Y.
hermana(X, Y) :- hermano(X, Y), mu


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre(maria, laura).

% reglas
hermano(X, Y) :- padre(Z, X), padre(Z, Y), madre(W, X), madre(W, Y), X \= Y


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre(maria, laura).

% reglas
hermano(X, Y) :- padre(Z, X), padre(Z, Y),


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre(maria, laura).

% reglas
hermano(X, Y) :- padre(Z, X


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre(maria, laura).

% reglas


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre(maria, laur


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).
madre


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pedro, carlos).


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, maria).
padre(pe


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).
madre(ana, ma


% hechos
padre(juan, maria).
padre(juan, pedro).
madre(ana, pedro).


% hechos
padre(juan, maria).
padre(juan, pedro).
madr


% hechos
padre(juan, maria).
padre(juan


% hechos
padre(juan, mari


% hechos
pa

?- hermano(pedro, maria).
true.

?- abuela(ana, carlos).
true.
 

Prolog online compiler

Write, Run & Share Prolog code online using OneCompiler’s Prolog online compiler for free. It’s a simple and intuitive platform to experiment with logic programming in Prolog. OneCompiler supports standard Prolog syntax, great for learning, prototyping, and practicing logic-based problems.

About Prolog

Prolog (Programming in Logic) is a logic programming language associated with artificial intelligence and computational linguistics. It works through facts, rules, and queries, using a form of symbolic reasoning known as backward chaining. Prolog is declarative, meaning you describe what you want instead of how to compute it.

Sample Code

The following is a simple Prolog program that prints a greeting:

:- initialization(main).

main :-
    write('Hello, World!').

Syntax Basics

Facts

Facts represent basic assertions about the world.

likes(alice, pizza).
likes(bob, pasta).

Rules

Rules define logical relationships using facts.

friends(X, Y) :- likes(X, Z), likes(Y, Z).

Queries

Queries are used to find information based on facts and rules.

?- likes(alice, What).

Operators

OperatorDescription
:-Rule definition
,Logical AND
;Logical OR
=Unification

Lists

member(X, [X|_]).
member(X, [_|T]) :- member(X, T).

Recursion

Prolog heavily relies on recursion.

factorial(0, 1).
factorial(N, F) :-
  N > 0,
  N1 is N - 1,
  factorial(N1, F1),
  F is N * F1.

This guide provides a quick reference to Prolog programming syntax and features. Start writing Prolog code using OneCompiler’s Prolog online compiler today!