ラベル Prolog の投稿を表示しています。 すべての投稿を表示
ラベル Prolog の投稿を表示しています。 すべての投稿を表示

2009/11/21

Prolog 数値計算、述語

% X is 1 + 2 + 3.
% X = 6.

% X is 1 + 2, X is 3 + 4.
% false.

 

square(X, Y) :-
    Y is X * X.
/*
square(2, Y).
Y = 4.
square(2, 4).
true.
square(2, 10).
false.
*/

/*
  predicate
  >
  <
  >=
  <=
  =\= 等しくない
  =:= 等しい
*/

 

Prolog 空を飛ぶのは飛行機もしくはスーパーマン

fly(X) :-
    airplane(X).
fly(X) :-
    superman(X).

airplane(jet_plane).
airplane(helicopter).

superman(taro).

/*
fly(jet_plane).
true.

fly(taro).
true.

fly(Y).
Y = jet_plane ;
Y = helicopter ;
Y = taro.
*/

 

Prolog isono家

% 節?
male(namihei).
male(masuo).
male(katuo).
male(tara).
/*
male(X).
X = namihei ;
X = masuo ;
X = katuo ;
X = tara.
*/

female(fune).
female(sazae).
female(wakame).
/*
female(X).
X = fune ;
X = sazae ;
X = wakame.
*/

father_of(namihei, sazae).
father_of(namihei, katuo).
father_of(namihei, wakame).
father_of(masuo, tara).
/*
father_of(X, Y).
X = namihei,
Y = sazae ;
X = namihei,
Y = katuo ;
X = namihei,
Y = wakame ;
X = masuo,
Y = tara.
*/

 

mother_of(fune, sazae).
mother_of(fune, katuo).
mother_of(fune, wakame).
mother_of(sazae, tara).
/*
mother_of(X, Y).
X = fune,
Y = sazae ;
X = fune,
Y = katuo ;
X = fune,
Y = wakame ;
X = sazae,
Y = tara.
*/

 

% XはYの親である
% XがYの父親であるか、XがYの母親である
parent_of(X, Y) :-
    father_of(X, Y).
parent_of(X, Y) :-
    mother_of(X, Y).
/*
parent_of(X, sazae).
X = namihei ;
X = fune ;
false.

parent_of(X, Y).
X = namihei,
Y = sazae ;
X = namihei,
Y = katuo ;
X = namihei,
Y = wakame ;
X = masuo,
Y = tara ;
X = fune,
Y = sazae ;
X = fune,
Y = katuo ;
X = fune,
Y = wakame ;
X = sazae,
Y = tara.
*/

 

% XはYの息子である
% YはXの親であり、かつX
は男性である
suns_of(X, Y) :-
    parent_of(Y, X),
    male(X).
/*
suns_of(X, sazae).
X = tara.

suns_of(X, fune).
X = katuo ;
false.
*/

 

% XはYの娘である
% YはXの親であり、かつXは女性である
daughter_of(X, Y) :-
    parent_of(Y, X),
    female(X).
/*
daughter_of(X, Y).
X = sazae,
Y = namihei ;
X = wakame,
Y = namihei ;
X = sazae,
Y = fune ;
X = wakame,
Y = fune ;
false.
*/

 

% XはYの祖父である
% ZはYの親であり、XはZの父である
grandfather_of(X, Y) :-
    parent_of(Z, Y),
    father_of(X, Z).
/*
grandfather_of(X, Y).
X = namihei,
Y = tara ;
false.
*/

/*
grandfather_of(X, Y).
X = namihei,
Y = tara
*/

 

% XはYの祖母である
% ZはYの親であり、XはZの母
grandmother_of(X, Y) :-
    parent_of(Z, Y),
    mother_of(X, Z).

/*
grandmother_of(X, Y).
X = fune,
Y = tara
*/

 

Prolog 階乗

% 階乗
fact(0, 1).
fact(X, Y) :-
    X > 0,
    X1 is X - 1,
    fact(X1, Y1),
    Y is X * Y1.
fact(5, 120).


% ?- fact(5, Y).
% 120

% 外部ファイルの読み込み
% ['c:/program files/pl/demo/likes.pl'].


% pwd : カレントフォルダ
% ls : カレントフォルダ内のファイルを表示

% comment
/*
  comments
*/

 

Prolog ソクラテスは人間である

% socrates
human(socrates).

mortal(X) :-
    human(X).

/*

mortal(Y).
Y = socrates.

human(Y).
Y = socrates.

human(socrates).
true.

mortal(socrates).
true.

*/

% 終了は
% halt.

*mortal : 死ぬ運命にある、死を免れない

Prolog 階乗

% 階乗
fact(0, 1).
fact(X, Y) :-
    X > 0,
    X1 is X - 1,
    fact(X1, Y1),
    Y is X * Y1.
fact(5, 120).


% ?- fact(5, Y).
% 120

% 外部ファイルの読み込み
% ['c:/program files/pl/demo/likes.pl'].

% ; : 選択(「もしくは」のようなニュアンス?)
% pwd : カレントフォルダ
% ls : カレントフォルダ内のファイルを表示

 

% comment
/*
  comments
*/

 

2009/11/20

Prolog PDF

論理プログラミング言語Prologの基礎

初級Prolog 講座

【Prolog(JunPrologInterpreter)マニュアル】

SWI-Prolog 5.0 Reference Manual

prolog.pdf
DB

SWI-Prolog の使い方

帰納論理プログラミング 第2回 Prolog

Introducing Prolog II

GNU PROLOG MANUAL

The.Art.of.Prolog.Advanced.Programming._1999__.2Ed._0262193388_.

Prolog A Tutorial Introduction

Introduction to Prolog

Prolog入門

Prolog入門(自習用)

A Prolog Interpreter in Python

ebook.The Art of PROLOG - 2nd Edition Advanced Programming Techniques
Logic Progra.0262193388 .zip


Prolog(プロログ)を学ぶ―文化とその実践Prologへの入門 (PrologとAI)