pemrograman logika dengan prolog - telkom...

175
Pemrograman Logika dengan Prolog Kuliah Logika Matematika Semester Ganjil 2015-2016 MZI Fakultas Informatika Telkom University FIF Tel-U November 2015 MZI (FIF Tel-U) Pemrograman Logika November 2015 1 / 69

Upload: duongmien

Post on 07-Feb-2018

314 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemrograman Logika dengan PrologKuliah Logika Matematika Semester Ganjil 2015-2016

MZI

Fakultas InformatikaTelkom University

FIF Tel-U

November 2015

MZI (FIF Tel-U) Pemrograman Logika November 2015 1 / 69

Page 2: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Acknowledgements I

Slide ini disusun berdasarkan materi yang terdapat pada sumber-sumber berikut:

1 Logic Programming with Prolog, Edisi 2, 2013, oleh Max Bramer.2 Discrete Mathematics and Its Applications (Bab 1), Edisi 7, 2012, oleh K. H.Rosen.

3 Discrete Mathematics with Applications (Bab 3), Edisi 4, 2010, oleh S. S.Epp.

4 Mathematical Logic for Computer Science (Bab 5, 6), Edisi 2, 2000, oleh M.Ben-Ari.

5 Slide kuliah Logika Komputasional (Computational Logic) di Fasilkom UIoleh L. Y. Stefanus.

6 Slide kuliah Pemrograman Logika di ILLC, Universitas of Amsterdam oleh U.Endriss.

7 Slide kuliah Pemrograman Fungsional di Fasilkom UI oleh A. Azurat.8 Slide kuliah Logika Matematika di Telkom University oleh A. Rakhmatsyah,B. Purnama.

MZI (FIF Tel-U) Pemrograman Logika November 2015 2 / 69

Page 3: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Acknowledgements II

Beberapa gambar dapat diambil dari sumber-sumber di atas. Slide ini ditujukanuntuk keperluan akademis di lingkungan FIF Telkom University. Jika Andamemiliki saran/ pendapat/ pertanyaan terkait materi dalam slide ini, silakan kirimemail ke <pleasedontspam>@telkomuniversity.ac.id.

MZI (FIF Tel-U) Pemrograman Logika November 2015 3 / 69

Page 4: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Bahasan

1 Apa itu Prolog

2 Tatacara Instalasi Prolog

3 Pemakaian Interpreter Interaktif

4 Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

5 Konstruksi Aturan (Rules) Sederhana pada Prolog

6 Representasi Kuantor pada Prolog

7 Kesamaan dan Ketaksamaan Term pada Prolog

8 Tugas Kelompok

MZI (FIF Tel-U) Pemrograman Logika November 2015 4 / 69

Page 5: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Apa itu Prolog

Bahasan

1 Apa itu Prolog

2 Tatacara Instalasi Prolog

3 Pemakaian Interpreter Interaktif

4 Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

5 Konstruksi Aturan (Rules) Sederhana pada Prolog

6 Representasi Kuantor pada Prolog

7 Kesamaan dan Ketaksamaan Term pada Prolog

8 Tugas Kelompok

MZI (FIF Tel-U) Pemrograman Logika November 2015 5 / 69

Page 6: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Apa itu Prolog

Epigram

A language that doesn’t affect the way you think about programming,is not worth knowing

(Alan Jay Perlis, first recipient of Turing Award)

(Diambil dari Alan Perlis Quotes)

MZI (FIF Tel-U) Pemrograman Logika November 2015 6 / 69

Page 7: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Apa itu Prolog

Rumpun Bahasa Pemrograman

Bahasa imperatif (imperative language): bahasa yang menekankan bagaimanacara melakukan komputasi sebagai suatu aksi/ tindakan

Bahasa struktural (structural language): C, pascal, Ada, Fortran, Python,Matlab/ Octave

Bahasa berorientasi objek (object oriented): C++, Java

Bahasa dekriptif (descriptive language): bahasa yang menekankan apa yangdilakukan dalam komputasi

Bahasa pemrograman logika (logic programming): Prolog, Flora, Logtalk

Bahasa pemrograman fungsional (functional programming): Haskell, ML

MZI (FIF Tel-U) Pemrograman Logika November 2015 7 / 69

Page 8: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Apa itu Prolog

Rumpun Bahasa Pemrograman

Bahasa imperatif (imperative language): bahasa yang menekankan bagaimanacara melakukan komputasi sebagai suatu aksi/ tindakan

Bahasa struktural (structural language): C, pascal, Ada, Fortran, Python,Matlab/ Octave

Bahasa berorientasi objek (object oriented): C++, Java

Bahasa dekriptif (descriptive language): bahasa yang menekankan apa yangdilakukan dalam komputasi

Bahasa pemrograman logika (logic programming): Prolog, Flora, Logtalk

Bahasa pemrograman fungsional (functional programming): Haskell, ML

MZI (FIF Tel-U) Pemrograman Logika November 2015 7 / 69

Page 9: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Apa itu Prolog

Bahasa Imperatif vs Bahasa Deskriptif

Pada bahasa imperatif:

perintah dirangkai dengan penyambung “;”atau indensasi (indentation)

perintah dikendalikan dengan kondisi seleksi (dengan if-then-else ataucase-of statement) atau repetisi (dengan for loop, while loop, atauperintah repeat-until)

program merupakan rangkaian perintah untuk mengubah nilai dari beberapavariabel (state)

Pada bahasa deskriptif —pemrograman logika:

program adalah sekumpulan ekspresi

program terdiri dari fakta (facts) dan aturan-aturan tertentu (rules)

komputasi adalah suatu deduksi atau inferensi

program tidak memakai assignment sebagai operator dasar seperti dalam Catau pascal

MZI (FIF Tel-U) Pemrograman Logika November 2015 8 / 69

Page 10: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Apa itu Prolog

Bahasa Imperatif vs Bahasa Deskriptif

Pada bahasa imperatif:

perintah dirangkai dengan penyambung “;”atau indensasi (indentation)

perintah dikendalikan dengan kondisi seleksi (dengan if-then-else ataucase-of statement) atau repetisi (dengan for loop, while loop, atauperintah repeat-until)

program merupakan rangkaian perintah untuk mengubah nilai dari beberapavariabel (state)

Pada bahasa deskriptif —pemrograman logika:

program adalah sekumpulan ekspresi

program terdiri dari fakta (facts) dan aturan-aturan tertentu (rules)

komputasi adalah suatu deduksi atau inferensi

program tidak memakai assignment sebagai operator dasar seperti dalam Catau pascal

MZI (FIF Tel-U) Pemrograman Logika November 2015 8 / 69

Page 11: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Apa itu Prolog

Mengapa Perlu Belajar Pemrograman Logika?

Pemrograman logika dengan Prolog perlu dipelajari karena:

Prolog mudah diterapkan untuk kasus komputasi simbolik (komputasinon-numerik)

Prolog mudah dan cocok diterapkan untuk pemecahan masalah yangmenyangkut kondisi suatu objek atau relasi antara beberapa objek

Prolog mudah dan cocok diterapkan untuk menggambarkan proses penalaran(reasoning) yang diperlukan dalam kecerdasan buatan (artificial intelligence)

Karena alasan-alasan ini, Prolog dapat diterapkan dalam bidang kecerdasanbuatan, pemrosesan bahasa alami (natural language processing), dan basis data(database).

Prolog kurang cocok untuk:

komputasi yang memerlukan presisi numerik yang tinggi (contohnyakomputasi grafis)

komputasi yang memerlukan portabilitas yang tinggi (contohnya komputasipengiriman pesan real-time)

MZI (FIF Tel-U) Pemrograman Logika November 2015 9 / 69

Page 12: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Apa itu Prolog

Mengapa Perlu Belajar Pemrograman Logika?

Pemrograman logika dengan Prolog perlu dipelajari karena:

Prolog mudah diterapkan untuk kasus komputasi simbolik (komputasinon-numerik)

Prolog mudah dan cocok diterapkan untuk pemecahan masalah yangmenyangkut kondisi suatu objek atau relasi antara beberapa objek

Prolog mudah dan cocok diterapkan untuk menggambarkan proses penalaran(reasoning) yang diperlukan dalam kecerdasan buatan (artificial intelligence)

Karena alasan-alasan ini, Prolog dapat diterapkan dalam bidang kecerdasanbuatan, pemrosesan bahasa alami (natural language processing), dan basis data(database).

Prolog kurang cocok untuk:

komputasi yang memerlukan presisi numerik yang tinggi (contohnyakomputasi grafis)

komputasi yang memerlukan portabilitas yang tinggi (contohnya komputasipengiriman pesan real-time)

MZI (FIF Tel-U) Pemrograman Logika November 2015 9 / 69

Page 13: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Apa itu Prolog

Sejarah Prolog

Prolog merupakan akronim dari Programming in Logic.Prolog dikembangkan antara tahun 1972-1973 oleh Alain Colmerauer danPhillipe Roussel di Aix-Marseille Université, Prancis.

Tujuan pengembangan Prolog pada saat itu adalah untuk pemrosesan bahasaalami (bahasa manusia).

Saat ini Prolog merupakan bahasa pemrograman logika yang paling banyakdiajarkan di dunia.

Prolog juga sudah digunakan di dunia industri, salah satunya oleh IBM danApache.

MZI (FIF Tel-U) Pemrograman Logika November 2015 10 / 69

Page 14: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Apa itu Prolog

Meet Watson: The Supercomputer

Watson adalah sebuah (super) komputer yang memiliki kemampuan untukmenjawab pertanyaan dalam bahasa alami (bahasa manusia) yang dikembangkanoleh IBM DeepQA project. Kecerdasan buatan yang diterapkan pada Watsondibuat dengan bahasa pemrograman Prolog.

MZI (FIF Tel-U) Pemrograman Logika November 2015 11 / 69

Page 15: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Apa itu Prolog

Watson dalam kuis Jeopardy!. Sumber:.Wikipedia: Watson (Computer)

MZI (FIF Tel-U) Pemrograman Logika November 2015 12 / 69

Page 16: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Tatacara Instalasi Prolog

Bahasan

1 Apa itu Prolog

2 Tatacara Instalasi Prolog

3 Pemakaian Interpreter Interaktif

4 Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

5 Konstruksi Aturan (Rules) Sederhana pada Prolog

6 Representasi Kuantor pada Prolog

7 Kesamaan dan Ketaksamaan Term pada Prolog

8 Tugas Kelompok

MZI (FIF Tel-U) Pemrograman Logika November 2015 13 / 69

Page 17: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Tatacara Instalasi Prolog

Perangkat Lunak Pendukung

Source file yang diperlukan untuk instalasi dapat diunduh dari beberapa tautanberikut:

Amzi! Prolog (http://www.amzi.com/products/prolog_products.htm).

Logic Programming Associates Prolog (http://www.lpa.co.uk).

SWI-Prolog (http://www.swi-prolog.org/).

Visual Prolog (http://www.visual-prolog.com/).

W-Prolog (http://waitaki.otago.ac.nz/∼michael/wp/).Dalam slide kuliah ini, program Prolog ditulis dalam syntax SWI-Prolog. Semuaprogram pada slide kuliah ini dijalankan pada SWI-Prolog 64-bit versi 7.2.2 yangtelah diuji coba pada sistem operasi Windows 7 64-bit dan Linux Ubuntu 14.0464-bit. SWI-Prolog adalah salah satu versi Prolog yang paling sederhana danpaling mudah untuk digunakan dalam mempelajari pemrograman logika denganProlog. SWI-Prolog dapat dijalankan pada sistem operasi Windows, Linux,maupun Macintosh.

MZI (FIF Tel-U) Pemrograman Logika November 2015 14 / 69

Page 18: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Tatacara Instalasi Prolog

SWI Prolog dan Prolog Programming Contest

Pada tahun 2013, SWI-Prolog adalah satu-satunya varian Prolog yang bolehdigunakan dalam Prolog Programming Contest. Acara ini merupakan acaratahunan yang diadakan bersamaan dengan ICLP (International Conference onLogic Programming).

MZI (FIF Tel-U) Pemrograman Logika November 2015 15 / 69

Page 19: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Tatacara Instalasi Prolog

Instalasi SWI-Prolog —Windows dan Macintosh

Untuk sistem operasi Windows dan Macintosh, file instalasi dapat diunduh dihttp://www.swi-prolog.org/download/stable. Untuk sistem operasiWindows XP/ Vista/ 7/ 8 baik 32 maupun 64-bit, instalasi dapat dilakukandengan mudah seperti instalasi program pada umumnya. Direktori instalasi dapatdisesuaikan dengan kebutuhan, contohnya di C:\Program Files\swipl. Instalasitelah diujicoba dan berjalan cukup lancar pada sistem operasi Windows 7 64-bit.

MZI (FIF Tel-U) Pemrograman Logika November 2015 16 / 69

Page 20: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Tatacara Instalasi Prolog

Instalasi SWI-Prolog —Linux (Ubuntu)

Untuk sistem operasi Linux Ubuntu, instalasi SWI-Prolog dapat dilakukan via PPA(Personal Package Archive). Buka terminal, kemudian ketik perintah-perintahberikut:

% sudo apt-add-repository ppa:swi-prolog/stable% sudo apt-get update% sudo apt-get install swi-prolog

Setelah instalasi, maka kita dapat menjalankan SWI-Prolog melalui terminaldengan mengetikkan perintah-perintah berikut:

% swipl?- emacs.

Perintah ?- emacs. berfungsi untuk menjalankan GUI pada Linux yang serupadengan GUI pada Windows.

MZI (FIF Tel-U) Pemrograman Logika November 2015 17 / 69

Page 21: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Tatacara Instalasi Prolog

Ilustrasi pemakaian GUI untuk SWI-Prolog pada Linux Ubuntu.

MZI (FIF Tel-U) Pemrograman Logika November 2015 18 / 69

Page 22: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Tatacara Instalasi Prolog

Ilustrasi GUI untuk SWI-Prolog pada Linux Ubuntu.

MZI (FIF Tel-U) Pemrograman Logika November 2015 19 / 69

Page 23: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Tatacara Instalasi Prolog

Instalasi SWI-Prolog —Linux (Distro Lain)

Untuk sistem operasi Linux dengan distro selain Ubuntu, instalasi dapat dilakukandengan meninjau tautanhttp://www.swi-prolog.org/build/LinuxDistro.txt.

MZI (FIF Tel-U) Pemrograman Logika November 2015 20 / 69

Page 24: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Tatacara Instalasi Prolog

Tentang SWI-Prolog

Diambil dari http://www.swi-prolog.org/:

SWI-Prolog offers a comprehensive free Prolog environment. Since itsstart in 1987, SWI-Prolog development has been driven by the needs ofreal world applications. SWI-Prolog is widely used in research andeducation as well as commercial applications. Join over a million userswho have downloaded SWI-Prolog.

SWI merupakan akronim dari Sociaal-Wetenschappelijke Informatica (“SocialScience Informatics”), merupakan nama lain dari grup riset Human-ComputerStudies di University of Amsterdam, Belanda. SWI-Prolog ditulis oleh JanWielemaker.

MZI (FIF Tel-U) Pemrograman Logika November 2015 21 / 69

Page 25: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Bahasan

1 Apa itu Prolog

2 Tatacara Instalasi Prolog

3 Pemakaian Interpreter Interaktif

4 Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

5 Konstruksi Aturan (Rules) Sederhana pada Prolog

6 Representasi Kuantor pada Prolog

7 Kesamaan dan Ketaksamaan Term pada Prolog

8 Tugas Kelompok

MZI (FIF Tel-U) Pemrograman Logika November 2015 22 / 69

Page 26: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Pemakaian Interpreter Interaktif

Ketika Anda membuka interpreter SWI-Prolog, maka Anda akan melihat prompt:

1 ?-

Ketikkan perintah berikut pada SWI-Prolog:write(’Hello World’),nl,write(’Welcome to Prolog’),nl.

1 ?-write(’Hello World’),nl,write(’Welcome to Prolog’),nl.

SWI-Prolog akan mengeluarkan:

Hello WorldWelcome to Prologtrue.

write dan nl adalah dua contoh built-in-predicate (BIP) pada SWI-prolog,write(’x’) berfungsi untuk mengeluarkan tulisan x dan nl berfungsi untukmemindahkan keluaran berikutnya ke baris yang baru. Perintah pada Prologharus diakhiri oleh tanda titik (.).

MZI (FIF Tel-U) Pemrograman Logika November 2015 23 / 69

Page 27: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Pemakaian Interpreter Interaktif

Ketika Anda membuka interpreter SWI-Prolog, maka Anda akan melihat prompt:

1 ?-

Ketikkan perintah berikut pada SWI-Prolog:write(’Hello World’),nl,write(’Welcome to Prolog’),nl.

1 ?-write(’Hello World’),nl,write(’Welcome to Prolog’),nl.

SWI-Prolog akan mengeluarkan:

Hello WorldWelcome to Prologtrue.

write dan nl adalah dua contoh built-in-predicate (BIP) pada SWI-prolog,write(’x’) berfungsi untuk mengeluarkan tulisan x dan nl berfungsi untukmemindahkan keluaran berikutnya ke baris yang baru. Perintah pada Prologharus diakhiri oleh tanda titik (.).

MZI (FIF Tel-U) Pemrograman Logika November 2015 23 / 69

Page 28: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Aritmetika pada Interpreter Interaktif

Aritmetika sederhana dapat dilakukan pada SWI-Prolog sebagai berikut.

1 ?- X is 1+2.

X = 3.2 ?- X is 3-7.X = -4.3 ?- X is 2*3.X = 6.4 ?- X is 7/3.X = 2.3333333333333335.5 ?- X is 3^2. [Operasi xy juga dapat ditulis x ∗ ∗y]X = 9.6 ?- X is 3+5*2.X = 13.7 ?- X = 3*3.X = 3*3.

Kalkulasi aritmetika pada SWI-Prolog dilakukan dengan predikat is. Tanda =pada Prolog digunakan untuk memeriksa kesamaan term.

MZI (FIF Tel-U) Pemrograman Logika November 2015 24 / 69

Page 29: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Aritmetika pada Interpreter Interaktif

Aritmetika sederhana dapat dilakukan pada SWI-Prolog sebagai berikut.

1 ?- X is 1+2.X = 3.2 ?- X is 3-7.

X = -4.3 ?- X is 2*3.X = 6.4 ?- X is 7/3.X = 2.3333333333333335.5 ?- X is 3^2. [Operasi xy juga dapat ditulis x ∗ ∗y]X = 9.6 ?- X is 3+5*2.X = 13.7 ?- X = 3*3.X = 3*3.

Kalkulasi aritmetika pada SWI-Prolog dilakukan dengan predikat is. Tanda =pada Prolog digunakan untuk memeriksa kesamaan term.

MZI (FIF Tel-U) Pemrograman Logika November 2015 24 / 69

Page 30: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Aritmetika pada Interpreter Interaktif

Aritmetika sederhana dapat dilakukan pada SWI-Prolog sebagai berikut.

1 ?- X is 1+2.X = 3.2 ?- X is 3-7.X = -4.3 ?- X is 2*3.

X = 6.4 ?- X is 7/3.X = 2.3333333333333335.5 ?- X is 3^2. [Operasi xy juga dapat ditulis x ∗ ∗y]X = 9.6 ?- X is 3+5*2.X = 13.7 ?- X = 3*3.X = 3*3.

Kalkulasi aritmetika pada SWI-Prolog dilakukan dengan predikat is. Tanda =pada Prolog digunakan untuk memeriksa kesamaan term.

MZI (FIF Tel-U) Pemrograman Logika November 2015 24 / 69

Page 31: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Aritmetika pada Interpreter Interaktif

Aritmetika sederhana dapat dilakukan pada SWI-Prolog sebagai berikut.

1 ?- X is 1+2.X = 3.2 ?- X is 3-7.X = -4.3 ?- X is 2*3.X = 6.4 ?- X is 7/3.

X = 2.3333333333333335.5 ?- X is 3^2. [Operasi xy juga dapat ditulis x ∗ ∗y]X = 9.6 ?- X is 3+5*2.X = 13.7 ?- X = 3*3.X = 3*3.

Kalkulasi aritmetika pada SWI-Prolog dilakukan dengan predikat is. Tanda =pada Prolog digunakan untuk memeriksa kesamaan term.

MZI (FIF Tel-U) Pemrograman Logika November 2015 24 / 69

Page 32: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Aritmetika pada Interpreter Interaktif

Aritmetika sederhana dapat dilakukan pada SWI-Prolog sebagai berikut.

1 ?- X is 1+2.X = 3.2 ?- X is 3-7.X = -4.3 ?- X is 2*3.X = 6.4 ?- X is 7/3.X = 2.3333333333333335.5 ?- X is 3^2. [Operasi xy juga dapat ditulis x ∗ ∗y]

X = 9.6 ?- X is 3+5*2.X = 13.7 ?- X = 3*3.X = 3*3.

Kalkulasi aritmetika pada SWI-Prolog dilakukan dengan predikat is. Tanda =pada Prolog digunakan untuk memeriksa kesamaan term.

MZI (FIF Tel-U) Pemrograman Logika November 2015 24 / 69

Page 33: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Aritmetika pada Interpreter Interaktif

Aritmetika sederhana dapat dilakukan pada SWI-Prolog sebagai berikut.

1 ?- X is 1+2.X = 3.2 ?- X is 3-7.X = -4.3 ?- X is 2*3.X = 6.4 ?- X is 7/3.X = 2.3333333333333335.5 ?- X is 3^2. [Operasi xy juga dapat ditulis x ∗ ∗y]X = 9.6 ?- X is 3+5*2.

X = 13.7 ?- X = 3*3.X = 3*3.

Kalkulasi aritmetika pada SWI-Prolog dilakukan dengan predikat is. Tanda =pada Prolog digunakan untuk memeriksa kesamaan term.

MZI (FIF Tel-U) Pemrograman Logika November 2015 24 / 69

Page 34: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Aritmetika pada Interpreter Interaktif

Aritmetika sederhana dapat dilakukan pada SWI-Prolog sebagai berikut.

1 ?- X is 1+2.X = 3.2 ?- X is 3-7.X = -4.3 ?- X is 2*3.X = 6.4 ?- X is 7/3.X = 2.3333333333333335.5 ?- X is 3^2. [Operasi xy juga dapat ditulis x ∗ ∗y]X = 9.6 ?- X is 3+5*2.X = 13.7 ?- X = 3*3.

X = 3*3.

Kalkulasi aritmetika pada SWI-Prolog dilakukan dengan predikat is. Tanda =pada Prolog digunakan untuk memeriksa kesamaan term.

MZI (FIF Tel-U) Pemrograman Logika November 2015 24 / 69

Page 35: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Aritmetika pada Interpreter Interaktif

Aritmetika sederhana dapat dilakukan pada SWI-Prolog sebagai berikut.

1 ?- X is 1+2.X = 3.2 ?- X is 3-7.X = -4.3 ?- X is 2*3.X = 6.4 ?- X is 7/3.X = 2.3333333333333335.5 ?- X is 3^2. [Operasi xy juga dapat ditulis x ∗ ∗y]X = 9.6 ?- X is 3+5*2.X = 13.7 ?- X = 3*3.X = 3*3.

Kalkulasi aritmetika pada SWI-Prolog dilakukan dengan predikat is. Tanda =pada Prolog digunakan untuk memeriksa kesamaan term.

MZI (FIF Tel-U) Pemrograman Logika November 2015 24 / 69

Page 36: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Lebih Jauh Tentang Operator Aritmetika Prolog

Pada prolog, operator aritmetika yang digunakan adalah: +, −, ∗, /, //, danmod. Operator // berarti pembagian bilangan bulat (operator div).

1 ?- X is 9/4.

X = 2.25.2 ?- X is 9//4.X = 2.3 ?- X is 9 mod 4.X = 1.

MZI (FIF Tel-U) Pemrograman Logika November 2015 25 / 69

Page 37: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Lebih Jauh Tentang Operator Aritmetika Prolog

Pada prolog, operator aritmetika yang digunakan adalah: +, −, ∗, /, //, danmod. Operator // berarti pembagian bilangan bulat (operator div).

1 ?- X is 9/4.X = 2.25.2 ?- X is 9//4.

X = 2.3 ?- X is 9 mod 4.X = 1.

MZI (FIF Tel-U) Pemrograman Logika November 2015 25 / 69

Page 38: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Lebih Jauh Tentang Operator Aritmetika Prolog

Pada prolog, operator aritmetika yang digunakan adalah: +, −, ∗, /, //, danmod. Operator // berarti pembagian bilangan bulat (operator div).

1 ?- X is 9/4.X = 2.25.2 ?- X is 9//4.X = 2.3 ?- X is 9 mod 4.

X = 1.

MZI (FIF Tel-U) Pemrograman Logika November 2015 25 / 69

Page 39: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Lebih Jauh Tentang Operator Aritmetika Prolog

Pada prolog, operator aritmetika yang digunakan adalah: +, −, ∗, /, //, danmod. Operator // berarti pembagian bilangan bulat (operator div).

1 ?- X is 9/4.X = 2.25.2 ?- X is 9//4.X = 2.3 ?- X is 9 mod 4.X = 1.

MZI (FIF Tel-U) Pemrograman Logika November 2015 25 / 69

Page 40: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Perbandingan Nilai Numerik pada SWI-Prolog

Perbandingan Nilai Numerik pada SWI-Prolog dapat dilakukan sebagai berikut.

1 ?- 1 < 2.

true.2 ?- 3-2 > 3+2.false.3 ?- 3+2 =:= 6-1. [tanda =:= berarti kesamaan numerik]true.4 ?- 3+2 =\= 3-2. [tanda =\= berarti ketidaksamaan numerik]true.5 ?- 3+2 >= 3-2.true.6 ?- 3+2 =< 3-2.false.7 ?- 3+2 => 3-2.ERROR: Syntax error: Operator expectedERROR: 3+2ERROR: ** here **ERROR: => 3-2.

MZI (FIF Tel-U) Pemrograman Logika November 2015 26 / 69

Page 41: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Perbandingan Nilai Numerik pada SWI-Prolog

Perbandingan Nilai Numerik pada SWI-Prolog dapat dilakukan sebagai berikut.

1 ?- 1 < 2.true.2 ?- 3-2 > 3+2.

false.3 ?- 3+2 =:= 6-1. [tanda =:= berarti kesamaan numerik]true.4 ?- 3+2 =\= 3-2. [tanda =\= berarti ketidaksamaan numerik]true.5 ?- 3+2 >= 3-2.true.6 ?- 3+2 =< 3-2.false.7 ?- 3+2 => 3-2.ERROR: Syntax error: Operator expectedERROR: 3+2ERROR: ** here **ERROR: => 3-2.

MZI (FIF Tel-U) Pemrograman Logika November 2015 26 / 69

Page 42: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Perbandingan Nilai Numerik pada SWI-Prolog

Perbandingan Nilai Numerik pada SWI-Prolog dapat dilakukan sebagai berikut.

1 ?- 1 < 2.true.2 ?- 3-2 > 3+2.false.3 ?- 3+2 =:= 6-1. [tanda =:= berarti kesamaan numerik]

true.4 ?- 3+2 =\= 3-2. [tanda =\= berarti ketidaksamaan numerik]true.5 ?- 3+2 >= 3-2.true.6 ?- 3+2 =< 3-2.false.7 ?- 3+2 => 3-2.ERROR: Syntax error: Operator expectedERROR: 3+2ERROR: ** here **ERROR: => 3-2.

MZI (FIF Tel-U) Pemrograman Logika November 2015 26 / 69

Page 43: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Perbandingan Nilai Numerik pada SWI-Prolog

Perbandingan Nilai Numerik pada SWI-Prolog dapat dilakukan sebagai berikut.

1 ?- 1 < 2.true.2 ?- 3-2 > 3+2.false.3 ?- 3+2 =:= 6-1. [tanda =:= berarti kesamaan numerik]true.4 ?- 3+2 =\= 3-2. [tanda =\= berarti ketidaksamaan numerik]

true.5 ?- 3+2 >= 3-2.true.6 ?- 3+2 =< 3-2.false.7 ?- 3+2 => 3-2.ERROR: Syntax error: Operator expectedERROR: 3+2ERROR: ** here **ERROR: => 3-2.

MZI (FIF Tel-U) Pemrograman Logika November 2015 26 / 69

Page 44: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Perbandingan Nilai Numerik pada SWI-Prolog

Perbandingan Nilai Numerik pada SWI-Prolog dapat dilakukan sebagai berikut.

1 ?- 1 < 2.true.2 ?- 3-2 > 3+2.false.3 ?- 3+2 =:= 6-1. [tanda =:= berarti kesamaan numerik]true.4 ?- 3+2 =\= 3-2. [tanda =\= berarti ketidaksamaan numerik]true.5 ?- 3+2 >= 3-2.

true.6 ?- 3+2 =< 3-2.false.7 ?- 3+2 => 3-2.ERROR: Syntax error: Operator expectedERROR: 3+2ERROR: ** here **ERROR: => 3-2.

MZI (FIF Tel-U) Pemrograman Logika November 2015 26 / 69

Page 45: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Perbandingan Nilai Numerik pada SWI-Prolog

Perbandingan Nilai Numerik pada SWI-Prolog dapat dilakukan sebagai berikut.

1 ?- 1 < 2.true.2 ?- 3-2 > 3+2.false.3 ?- 3+2 =:= 6-1. [tanda =:= berarti kesamaan numerik]true.4 ?- 3+2 =\= 3-2. [tanda =\= berarti ketidaksamaan numerik]true.5 ?- 3+2 >= 3-2.true.6 ?- 3+2 =< 3-2.

false.7 ?- 3+2 => 3-2.ERROR: Syntax error: Operator expectedERROR: 3+2ERROR: ** here **ERROR: => 3-2.

MZI (FIF Tel-U) Pemrograman Logika November 2015 26 / 69

Page 46: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Perbandingan Nilai Numerik pada SWI-Prolog

Perbandingan Nilai Numerik pada SWI-Prolog dapat dilakukan sebagai berikut.

1 ?- 1 < 2.true.2 ?- 3-2 > 3+2.false.3 ?- 3+2 =:= 6-1. [tanda =:= berarti kesamaan numerik]true.4 ?- 3+2 =\= 3-2. [tanda =\= berarti ketidaksamaan numerik]true.5 ?- 3+2 >= 3-2.true.6 ?- 3+2 =< 3-2.false.7 ?- 3+2 => 3-2.

ERROR: Syntax error: Operator expectedERROR: 3+2ERROR: ** here **ERROR: => 3-2.

MZI (FIF Tel-U) Pemrograman Logika November 2015 26 / 69

Page 47: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Perbandingan Nilai Numerik pada SWI-Prolog

Perbandingan Nilai Numerik pada SWI-Prolog dapat dilakukan sebagai berikut.

1 ?- 1 < 2.true.2 ?- 3-2 > 3+2.false.3 ?- 3+2 =:= 6-1. [tanda =:= berarti kesamaan numerik]true.4 ?- 3+2 =\= 3-2. [tanda =\= berarti ketidaksamaan numerik]true.5 ?- 3+2 >= 3-2.true.6 ?- 3+2 =< 3-2.false.7 ?- 3+2 => 3-2.ERROR: Syntax error: Operator expectedERROR: 3+2ERROR: ** here **ERROR: => 3-2.

MZI (FIF Tel-U) Pemrograman Logika November 2015 26 / 69

Page 48: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Pemakaian Interpreter Interaktif

Operator Perbandingan Nilai Numerik pada Prolog

Operator perbandingan nilai numerik yang dipakai pada Prolog adalah

Simbol matematika Simbol pada prolog= =:=6= =\=< <> >≤ =<≥ >=

Simbol <= dan => bukan operator perbandingan nilai numerik pada Prolog.

MZI (FIF Tel-U) Pemrograman Logika November 2015 27 / 69

Page 49: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Bahasan

1 Apa itu Prolog

2 Tatacara Instalasi Prolog

3 Pemakaian Interpreter Interaktif

4 Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

5 Konstruksi Aturan (Rules) Sederhana pada Prolog

6 Representasi Kuantor pada Prolog

7 Kesamaan dan Ketaksamaan Term pada Prolog

8 Tugas Kelompok

MZI (FIF Tel-U) Pemrograman Logika November 2015 28 / 69

Page 50: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Menulis Program pada SWI-Prolog

Cara penulisan program pada SWI-Prolog dapat dilakukan menggunakan editorteks apapun (contohnya notepad atau notepad++), tetapi SWI-Prolog juga telahdilengkapi dengan editor yang dapat memeriksa syntax program Prolog yang kitabuat.

Cara Membuat Skrip pada WindowsBuka SWI-Prolog, kemudian pilih File → New kemudian beri nama file yangsesuai dengan kebutuhan (pastikan jenis file adalah Prolog Source atau programberekstensi .pl). Jika nama file sudah ditentukan maka kita dapat menulis padateks editor yang disediakan.

Cara Membuat Skrip pada Linux UbuntuBuka terminal, kemudian ketik swipl, setelah masuk ke SWI-Prolog ketikkanemacs. (dengan tanda .). Langkah berikutnya adalah pilih File → Newkemudian beri nama file yang sesuai dengan kebutuhan (pastikan programberekstensi .pl). Jika nama file sudah ditentukan maka kita dapat menulis padateks editor yang disediakan.

MZI (FIF Tel-U) Pemrograman Logika November 2015 29 / 69

Page 51: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Translasi Formula Logika Predikat Sederhana ke Prolog

Misalkan D adalah domain yang berupa himpunan 12 orang manusia denganD = {Alice,Bob, Charlie,David,Emma,F iona,Grace,Hans, Irene, Jim,Kelly, Lily}.

Misalkan Male (x) adalah predikat yang menyatakan bahwa “x adalah laki-laki”dan Female (x) adalah predikat yang menyatakan bahwa “x adalah perempuan”.

Misalkan kita memiliki fakta-fakta berikut:

Bob, Charlie, David, Hans, dan Jim adalah laki-laki.

Alice, Emma, Fiona, Grace, Irene, Kelly, dan Lily adalah perempuan.

Fakta-fakta tersebut dapat ditranslasikan ke dalam formula logika predikatsebagai:

Male (Bob), Male (Charlie), Male (David), Male (Hans), Male (Jim)

Female (Alice), Female (Emma), Female (Fiona), Female (Grace),Female (Irene), Female (Kelly), Female (Lily)

MZI (FIF Tel-U) Pemrograman Logika November 2015 30 / 69

Page 52: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Translasi Formula Logika Predikat Sederhana ke Prolog

Misalkan D adalah domain yang berupa himpunan 12 orang manusia denganD = {Alice,Bob, Charlie,David,Emma,F iona,Grace,Hans, Irene, Jim,Kelly, Lily}.

Misalkan Male (x) adalah predikat yang menyatakan bahwa “x adalah laki-laki”dan Female (x) adalah predikat yang menyatakan bahwa “x adalah perempuan”.

Misalkan kita memiliki fakta-fakta berikut:

Bob, Charlie, David, Hans, dan Jim adalah laki-laki.

Alice, Emma, Fiona, Grace, Irene, Kelly, dan Lily adalah perempuan.

Fakta-fakta tersebut dapat ditranslasikan ke dalam formula logika predikatsebagai:

Male (Bob), Male (Charlie), Male (David), Male (Hans), Male (Jim)

Female (Alice), Female (Emma), Female (Fiona), Female (Grace),Female (Irene), Female (Kelly), Female (Lily)

MZI (FIF Tel-U) Pemrograman Logika November 2015 30 / 69

Page 53: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Translasi Formula Logika Predikat Sederhana ke Prolog

Misalkan D adalah domain yang berupa himpunan 12 orang manusia denganD = {Alice,Bob, Charlie,David,Emma,F iona,Grace,Hans, Irene, Jim,Kelly, Lily}.

Misalkan Male (x) adalah predikat yang menyatakan bahwa “x adalah laki-laki”dan Female (x) adalah predikat yang menyatakan bahwa “x adalah perempuan”.

Misalkan kita memiliki fakta-fakta berikut:

Bob, Charlie, David, Hans, dan Jim adalah laki-laki.

Alice, Emma, Fiona, Grace, Irene, Kelly, dan Lily adalah perempuan.

Fakta-fakta tersebut dapat ditranslasikan ke dalam formula logika predikatsebagai:

Male (Bob), Male (Charlie), Male (David), Male (Hans), Male (Jim)

Female (Alice), Female (Emma), Female (Fiona), Female (Grace),Female (Irene), Female (Kelly), Female (Lily)

MZI (FIF Tel-U) Pemrograman Logika November 2015 30 / 69

Page 54: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Skrip Prolog

Fakta-fakta tersebut dapat dituliskan dalam skrip Prolog sebagai berikut.

% male(x) menyatakan bahwa x adalah laki-laki./* Bob, Charlie, David, Hans, & Jim adalah laki-laki */male(bob).male(charlie).male(david).male(hans).male(jim).% female(x) menyatakan bahwa x adalah perempuan./* Alice, Emma, Fiona, Grace, Irene, Kelly, & Lily adalahperempuan*/female(alice).female(emma).female(fiona).female(grace).female(irene).female(kelly).female(lily).

MZI (FIF Tel-U) Pemrograman Logika November 2015 31 / 69

Page 55: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Predikat diawali dengan huruf kecil, begitu pula dengan term. Term tidakboleh diawali dengan huruf kapital.Term boleh diapit dengan tanda kutip tunggal, contohnya male(‘Bob’).

Komentar pada skrip Prolog diawali dengan tanda % atau diapit dengantanda /* dan */.

Cara Menjalankan Program: Windows dan LinuxPada editor teks, pilih Compile → Make dan setelah itu Compile → CompileBuffer. Interpreter (atau terminal pada Linux) dapat mengelurkan peringatanbahwa proses kompilasi telah dilakukan dengan sukses.

MZI (FIF Tel-U) Pemrograman Logika November 2015 32 / 69

Page 56: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Contoh hasil proses kompilasi pada Linux Ubuntu 14.04.

MZI (FIF Tel-U) Pemrograman Logika November 2015 33 / 69

Page 57: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Input-Output Query pada Prolog

Setelah program berhasil dikompilasi, kita dapat memasukkan beberapa querypada interpreter interaktif (atau terminal pada Linux). Perpindahan ke barisberikutnya dapat dilakukan dengan enter atau tabulasi.

?- male(bob). [apakah Bob adalah laki-laki?]

true.?- not(male(charlie)). [apakah Charlie bukan laki-laki?]false.?- male(bob),female(alice). [, adalah operator ∧]true.?- male(david),male(emma).false.?- male(david);male(fiona). [; adalah operator ∨]true.?- female(charlie);male(grace).false.

MZI (FIF Tel-U) Pemrograman Logika November 2015 34 / 69

Page 58: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Input-Output Query pada Prolog

Setelah program berhasil dikompilasi, kita dapat memasukkan beberapa querypada interpreter interaktif (atau terminal pada Linux). Perpindahan ke barisberikutnya dapat dilakukan dengan enter atau tabulasi.

?- male(bob). [apakah Bob adalah laki-laki?]true.?- not(male(charlie)). [apakah Charlie bukan laki-laki?]

false.?- male(bob),female(alice). [, adalah operator ∧]true.?- male(david),male(emma).false.?- male(david);male(fiona). [; adalah operator ∨]true.?- female(charlie);male(grace).false.

MZI (FIF Tel-U) Pemrograman Logika November 2015 34 / 69

Page 59: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Input-Output Query pada Prolog

Setelah program berhasil dikompilasi, kita dapat memasukkan beberapa querypada interpreter interaktif (atau terminal pada Linux). Perpindahan ke barisberikutnya dapat dilakukan dengan enter atau tabulasi.

?- male(bob). [apakah Bob adalah laki-laki?]true.?- not(male(charlie)). [apakah Charlie bukan laki-laki?]false.?- male(bob),female(alice). [, adalah operator ∧]

true.?- male(david),male(emma).false.?- male(david);male(fiona). [; adalah operator ∨]true.?- female(charlie);male(grace).false.

MZI (FIF Tel-U) Pemrograman Logika November 2015 34 / 69

Page 60: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Input-Output Query pada Prolog

Setelah program berhasil dikompilasi, kita dapat memasukkan beberapa querypada interpreter interaktif (atau terminal pada Linux). Perpindahan ke barisberikutnya dapat dilakukan dengan enter atau tabulasi.

?- male(bob). [apakah Bob adalah laki-laki?]true.?- not(male(charlie)). [apakah Charlie bukan laki-laki?]false.?- male(bob),female(alice). [, adalah operator ∧]true.?- male(david),male(emma).

false.?- male(david);male(fiona). [; adalah operator ∨]true.?- female(charlie);male(grace).false.

MZI (FIF Tel-U) Pemrograman Logika November 2015 34 / 69

Page 61: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Input-Output Query pada Prolog

Setelah program berhasil dikompilasi, kita dapat memasukkan beberapa querypada interpreter interaktif (atau terminal pada Linux). Perpindahan ke barisberikutnya dapat dilakukan dengan enter atau tabulasi.

?- male(bob). [apakah Bob adalah laki-laki?]true.?- not(male(charlie)). [apakah Charlie bukan laki-laki?]false.?- male(bob),female(alice). [, adalah operator ∧]true.?- male(david),male(emma).false.?- male(david);male(fiona). [; adalah operator ∨]

true.?- female(charlie);male(grace).false.

MZI (FIF Tel-U) Pemrograman Logika November 2015 34 / 69

Page 62: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Input-Output Query pada Prolog

Setelah program berhasil dikompilasi, kita dapat memasukkan beberapa querypada interpreter interaktif (atau terminal pada Linux). Perpindahan ke barisberikutnya dapat dilakukan dengan enter atau tabulasi.

?- male(bob). [apakah Bob adalah laki-laki?]true.?- not(male(charlie)). [apakah Charlie bukan laki-laki?]false.?- male(bob),female(alice). [, adalah operator ∧]true.?- male(david),male(emma).false.?- male(david);male(fiona). [; adalah operator ∨]true.?- female(charlie);male(grace).

false.

MZI (FIF Tel-U) Pemrograman Logika November 2015 34 / 69

Page 63: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Input-Output Query pada Prolog

Setelah program berhasil dikompilasi, kita dapat memasukkan beberapa querypada interpreter interaktif (atau terminal pada Linux). Perpindahan ke barisberikutnya dapat dilakukan dengan enter atau tabulasi.

?- male(bob). [apakah Bob adalah laki-laki?]true.?- not(male(charlie)). [apakah Charlie bukan laki-laki?]false.?- male(bob),female(alice). [, adalah operator ∧]true.?- male(david),male(emma).false.?- male(david);male(fiona). [; adalah operator ∨]true.?- female(charlie);male(grace).false.

MZI (FIF Tel-U) Pemrograman Logika November 2015 34 / 69

Page 64: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Asumsi Dunia Tertutup (Closed World Assumption)

Pada program sebelumnya, kita dapat melakukan query berikut.

?- male(anakin).

false.?- female(anakin).false.?- not(male(anakin)).true.?- not(female(anakin)).true.

CatatanKetika Prolog memproses query not(...), Prolog melakukannya denganmemeriksa apakah fakta (...) benar. Jika fakta (...) tidak benar, makaProlog akan mengembalikan nilai true. Perlu diperhatikan bahwa penalaran(reasoning) yang dilakukan Prolog didasarkan pada asumsi dunia tertutup (closedworld assumption). Berdasarkan asumsi ini, semua hal yang benar adalah hal yangtertulis pada program atau dapat diturunkan dari fakta-fakta yang ada padaprogram.

MZI (FIF Tel-U) Pemrograman Logika November 2015 35 / 69

Page 65: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Asumsi Dunia Tertutup (Closed World Assumption)

Pada program sebelumnya, kita dapat melakukan query berikut.

?- male(anakin).false.?- female(anakin).

false.?- not(male(anakin)).true.?- not(female(anakin)).true.

CatatanKetika Prolog memproses query not(...), Prolog melakukannya denganmemeriksa apakah fakta (...) benar. Jika fakta (...) tidak benar, makaProlog akan mengembalikan nilai true. Perlu diperhatikan bahwa penalaran(reasoning) yang dilakukan Prolog didasarkan pada asumsi dunia tertutup (closedworld assumption). Berdasarkan asumsi ini, semua hal yang benar adalah hal yangtertulis pada program atau dapat diturunkan dari fakta-fakta yang ada padaprogram.

MZI (FIF Tel-U) Pemrograman Logika November 2015 35 / 69

Page 66: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Asumsi Dunia Tertutup (Closed World Assumption)

Pada program sebelumnya, kita dapat melakukan query berikut.

?- male(anakin).false.?- female(anakin).false.?- not(male(anakin)).

true.?- not(female(anakin)).true.

CatatanKetika Prolog memproses query not(...), Prolog melakukannya denganmemeriksa apakah fakta (...) benar. Jika fakta (...) tidak benar, makaProlog akan mengembalikan nilai true. Perlu diperhatikan bahwa penalaran(reasoning) yang dilakukan Prolog didasarkan pada asumsi dunia tertutup (closedworld assumption). Berdasarkan asumsi ini, semua hal yang benar adalah hal yangtertulis pada program atau dapat diturunkan dari fakta-fakta yang ada padaprogram.

MZI (FIF Tel-U) Pemrograman Logika November 2015 35 / 69

Page 67: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Asumsi Dunia Tertutup (Closed World Assumption)

Pada program sebelumnya, kita dapat melakukan query berikut.

?- male(anakin).false.?- female(anakin).false.?- not(male(anakin)).true.?- not(female(anakin)).

true.

CatatanKetika Prolog memproses query not(...), Prolog melakukannya denganmemeriksa apakah fakta (...) benar. Jika fakta (...) tidak benar, makaProlog akan mengembalikan nilai true. Perlu diperhatikan bahwa penalaran(reasoning) yang dilakukan Prolog didasarkan pada asumsi dunia tertutup (closedworld assumption). Berdasarkan asumsi ini, semua hal yang benar adalah hal yangtertulis pada program atau dapat diturunkan dari fakta-fakta yang ada padaprogram.

MZI (FIF Tel-U) Pemrograman Logika November 2015 35 / 69

Page 68: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Asumsi Dunia Tertutup (Closed World Assumption)

Pada program sebelumnya, kita dapat melakukan query berikut.

?- male(anakin).false.?- female(anakin).false.?- not(male(anakin)).true.?- not(female(anakin)).true.

CatatanKetika Prolog memproses query not(...), Prolog melakukannya denganmemeriksa apakah fakta (...) benar. Jika fakta (...) tidak benar, makaProlog akan mengembalikan nilai true. Perlu diperhatikan bahwa penalaran(reasoning) yang dilakukan Prolog didasarkan pada asumsi dunia tertutup (closedworld assumption). Berdasarkan asumsi ini, semua hal yang benar adalah hal yangtertulis pada program atau dapat diturunkan dari fakta-fakta yang ada padaprogram.

MZI (FIF Tel-U) Pemrograman Logika November 2015 35 / 69

Page 69: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Variabel dan Query Variabel pada Prolog

Variabel pada Prolog selalu diawali dengan huruf kapital. Biasanya variabelditulis dengan satu huruf kapital saja (contohnya X, Y, atau Z). Variabel dapatdigunakan pada interpreter untuk menampilkan semua objek yang memberikannilai kebenaran untuk predikat tertentu.

?- male(X).

X = bob; [tekan tabulasi untuk melihat hasil berikutnya]X = charlie;X = david;X = hans;X = jim.

MZI (FIF Tel-U) Pemrograman Logika November 2015 36 / 69

Page 70: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Variabel dan Query Variabel pada Prolog

Variabel pada Prolog selalu diawali dengan huruf kapital. Biasanya variabelditulis dengan satu huruf kapital saja (contohnya X, Y, atau Z). Variabel dapatdigunakan pada interpreter untuk menampilkan semua objek yang memberikannilai kebenaran untuk predikat tertentu.

?- male(X).X = bob; [tekan tabulasi untuk melihat hasil berikutnya]

X = charlie;X = david;X = hans;X = jim.

MZI (FIF Tel-U) Pemrograman Logika November 2015 36 / 69

Page 71: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Variabel dan Query Variabel pada Prolog

Variabel pada Prolog selalu diawali dengan huruf kapital. Biasanya variabelditulis dengan satu huruf kapital saja (contohnya X, Y, atau Z). Variabel dapatdigunakan pada interpreter untuk menampilkan semua objek yang memberikannilai kebenaran untuk predikat tertentu.

?- male(X).X = bob; [tekan tabulasi untuk melihat hasil berikutnya]X = charlie;

X = david;X = hans;X = jim.

MZI (FIF Tel-U) Pemrograman Logika November 2015 36 / 69

Page 72: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Variabel dan Query Variabel pada Prolog

Variabel pada Prolog selalu diawali dengan huruf kapital. Biasanya variabelditulis dengan satu huruf kapital saja (contohnya X, Y, atau Z). Variabel dapatdigunakan pada interpreter untuk menampilkan semua objek yang memberikannilai kebenaran untuk predikat tertentu.

?- male(X).X = bob; [tekan tabulasi untuk melihat hasil berikutnya]X = charlie;X = david;

X = hans;X = jim.

MZI (FIF Tel-U) Pemrograman Logika November 2015 36 / 69

Page 73: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Variabel dan Query Variabel pada Prolog

Variabel pada Prolog selalu diawali dengan huruf kapital. Biasanya variabelditulis dengan satu huruf kapital saja (contohnya X, Y, atau Z). Variabel dapatdigunakan pada interpreter untuk menampilkan semua objek yang memberikannilai kebenaran untuk predikat tertentu.

?- male(X).X = bob; [tekan tabulasi untuk melihat hasil berikutnya]X = charlie;X = david;X = hans;

X = jim.

MZI (FIF Tel-U) Pemrograman Logika November 2015 36 / 69

Page 74: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Variabel dan Query Variabel pada Prolog

Variabel pada Prolog selalu diawali dengan huruf kapital. Biasanya variabelditulis dengan satu huruf kapital saja (contohnya X, Y, atau Z). Variabel dapatdigunakan pada interpreter untuk menampilkan semua objek yang memberikannilai kebenaran untuk predikat tertentu.

?- male(X).X = bob; [tekan tabulasi untuk melihat hasil berikutnya]X = charlie;X = david;X = hans;X = jim.

MZI (FIF Tel-U) Pemrograman Logika November 2015 36 / 69

Page 75: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

?- female(Person).

Person = alice;Person = emma;Person = fiona;Person = grace;Person = irene;Person = kelly;Person = lily.

MZI (FIF Tel-U) Pemrograman Logika November 2015 37 / 69

Page 76: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

?- female(Person).Person = alice;

Person = emma;Person = fiona;Person = grace;Person = irene;Person = kelly;Person = lily.

MZI (FIF Tel-U) Pemrograman Logika November 2015 37 / 69

Page 77: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

?- female(Person).Person = alice;Person = emma;

Person = fiona;Person = grace;Person = irene;Person = kelly;Person = lily.

MZI (FIF Tel-U) Pemrograman Logika November 2015 37 / 69

Page 78: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

?- female(Person).Person = alice;Person = emma;Person = fiona;

Person = grace;Person = irene;Person = kelly;Person = lily.

MZI (FIF Tel-U) Pemrograman Logika November 2015 37 / 69

Page 79: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

?- female(Person).Person = alice;Person = emma;Person = fiona;Person = grace;

Person = irene;Person = kelly;Person = lily.

MZI (FIF Tel-U) Pemrograman Logika November 2015 37 / 69

Page 80: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

?- female(Person).Person = alice;Person = emma;Person = fiona;Person = grace;Person = irene;

Person = kelly;Person = lily.

MZI (FIF Tel-U) Pemrograman Logika November 2015 37 / 69

Page 81: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

?- female(Person).Person = alice;Person = emma;Person = fiona;Person = grace;Person = irene;Person = kelly;

Person = lily.

MZI (FIF Tel-U) Pemrograman Logika November 2015 37 / 69

Page 82: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

?- female(Person).Person = alice;Person = emma;Person = fiona;Person = grace;Person = irene;Person = kelly;Person = lily.

MZI (FIF Tel-U) Pemrograman Logika November 2015 37 / 69

Page 83: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Predikat Biner pada Prolog

Misalkan D adalah domain yang telah dijelaskan sebelumnya dan Parent (x, y)adalah predikat biner yang menyatakan bahwa “x adalah orang tua dari y”.Misalkan kita memiliki fakta-fakta berikut dalama formula logika predikat.

Parent (Alice, Charlie), Parent (Bob,Charlie), Parent (Bob,Emma).

Parent (Charlie, F iona), Parent (Charlie,Grace), Parent (Emma, Irene).

Parent (Fiona,David), Parent (Fiona, Lily), Parent (Grace, Jim),Parent (Grace,Kelly), Parent (Hans, Jim), Parent (Hans,Kelly).

MZI (FIF Tel-U) Pemrograman Logika November 2015 38 / 69

Page 84: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Fakta-fakta tersebut dapat ditranslasikan ke dalam skrip Prolog menjadi:

% parent(x,y) menyatakan bahwa x adalah orangtua dari yparent(alice,charlie).parent(bob,charlie).parent(bob,emma).parent(charlie,fiona).parent(charlie,grace).parent(emma,irene).parent(fiona,david).parent(fiona,lily).parent(grace,jim).parent(grace,kelly).parent(hans,jim).parent(hans,kelly).

Fakta-fakta tersebut dapat ditambahkan ke dalam skrip Prolog yang telah dibuatsebelumnya.

MZI (FIF Tel-U) Pemrograman Logika November 2015 39 / 69

Page 85: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

CatatanProses mengedit file Prolog yang telah dibuat sebelumnya dapat dilakukan dengancara:Pada Windows:

Pada interpreter Prolog, pilih File → Edit dan kemudian pilih berkas yangakan diedit.

Pada editor teks, pilih File → Open dan kemudian pilih berkas yang akandiedit.

Pada Linux: pada emacs pilih File → Open dan kemudian pilih berkas yang akandiedit.

MZI (FIF Tel-U) Pemrograman Logika November 2015 40 / 69

Page 86: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Setelah program dikompilasi, kita dapat menjalankan query berikut.

?- parent(OrangTua,Anak).

OrangTua = alice,Anak = charlie;OrangTua = bob,Anak = charlie;

... [ada cukup banyak keluaran]

OrangTua = hans,Anak = jim;OrangTua = hans,Anak = kelly.

MZI (FIF Tel-U) Pemrograman Logika November 2015 41 / 69

Page 87: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Setelah program dikompilasi, kita dapat menjalankan query berikut.

?- parent(OrangTua,Anak).OrangTua = alice,Anak = charlie;

OrangTua = bob,Anak = charlie;

... [ada cukup banyak keluaran]

OrangTua = hans,Anak = jim;OrangTua = hans,Anak = kelly.

MZI (FIF Tel-U) Pemrograman Logika November 2015 41 / 69

Page 88: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Setelah program dikompilasi, kita dapat menjalankan query berikut.

?- parent(OrangTua,Anak).OrangTua = alice,Anak = charlie;OrangTua = bob,Anak = charlie;

... [ada cukup banyak keluaran]

OrangTua = hans,Anak = jim;OrangTua = hans,Anak = kelly.

MZI (FIF Tel-U) Pemrograman Logika November 2015 41 / 69

Page 89: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Setelah program dikompilasi, kita dapat menjalankan query berikut.

?- parent(OrangTua,Anak).OrangTua = alice,Anak = charlie;OrangTua = bob,Anak = charlie;

... [ada cukup banyak keluaran]

OrangTua = hans,Anak = jim;

OrangTua = hans,Anak = kelly.

MZI (FIF Tel-U) Pemrograman Logika November 2015 41 / 69

Page 90: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Setelah program dikompilasi, kita dapat menjalankan query berikut.

?- parent(OrangTua,Anak).OrangTua = alice,Anak = charlie;OrangTua = bob,Anak = charlie;

... [ada cukup banyak keluaran]

OrangTua = hans,Anak = jim;OrangTua = hans,Anak = kelly.

MZI (FIF Tel-U) Pemrograman Logika November 2015 41 / 69

Page 91: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Untuk mengetahui semua anak dari Fiona, kita dapat melakukan queryparent(fiona,X). Kemudian untuk mengetahui semua orang tua dari Jim, kitadapat melakukan query parent(X,jim).

?- parent(fiona,X).

X = david;X = lily.

?- parent(X,jim).X = grace;X = hans.

MZI (FIF Tel-U) Pemrograman Logika November 2015 42 / 69

Page 92: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Untuk mengetahui semua anak dari Fiona, kita dapat melakukan queryparent(fiona,X). Kemudian untuk mengetahui semua orang tua dari Jim, kitadapat melakukan query parent(X,jim).

?- parent(fiona,X).X = david;X = lily.

?- parent(X,jim).

X = grace;X = hans.

MZI (FIF Tel-U) Pemrograman Logika November 2015 42 / 69

Page 93: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

Untuk mengetahui semua anak dari Fiona, kita dapat melakukan queryparent(fiona,X). Kemudian untuk mengetahui semua orang tua dari Jim, kitadapat melakukan query parent(X,jim).

?- parent(fiona,X).X = david;X = lily.

?- parent(X,jim).X = grace;X = hans.

MZI (FIF Tel-U) Pemrograman Logika November 2015 42 / 69

Page 94: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Bahasan

1 Apa itu Prolog

2 Tatacara Instalasi Prolog

3 Pemakaian Interpreter Interaktif

4 Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

5 Konstruksi Aturan (Rules) Sederhana pada Prolog

6 Representasi Kuantor pada Prolog

7 Kesamaan dan Ketaksamaan Term pada Prolog

8 Tugas Kelompok

MZI (FIF Tel-U) Pemrograman Logika November 2015 43 / 69

Page 95: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Misalkan skrip yang telah dibuat sebelumnya ditambahkan dengan fakta-faktaberikut:

% adult(x) menyatakan bahwa x adalah orang dewasa./* Alice, Bob, Charlie, Emma, Fiona, Grace, & Hans adalah orangdewasa. */adult(alice).adult(bob).adult(charlie).adult(emma).adult(fiona).adult(grace).adult(hans).% teen(x) menyatakan bahwa x adalah remaja.% Irene, David, dan Lily adalah remaja.teen(irene).teen(david).teen(lily).

MZI (FIF Tel-U) Pemrograman Logika November 2015 44 / 69

Page 96: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

% kid(x) menyatakan bahwa x adalah anak kecil.% Jim & Kelly adalah anak kecil.kid(jim).kid(kelly).

MZI (FIF Tel-U) Pemrograman Logika November 2015 45 / 69

Page 97: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Translasi Formula Logika Predikat ke Prolog

Misalkan kita memiliki predikat-predikat turunan berikut:

1 Gentleman (x) : “x adalah laki-laki dewasa”. Predikat Gentleman (x)didefinisikan sebagai Gentleman (x) :=

Male (x) ∧Adult (x).2 Lady (x) : “x adalah perempuan dewasa”. Predikat Lady (x) didefinisikansebagai Lady (x) := Female (x) ∧Adult (x).

3 TeenBoy (x) : “x adalah laki-laki remaja”. Predikat TeenBoy (x)didefinisikan sebagai TeenBoy (x) := Male (x) ∧ Teen (x).

4 TeenGirl (x) : “x adalah perempuan remaja”. Predikat TeenGirl (x)didefinisikan sebagai TeenGirl (x) := Female (x) ∧ Teen (x).

5 LittleBoy (x) : “x adalah anak kecil laki-laki”. Predikat LittleBoy (x)didefinisikan sebagai LittleBoy (x) := Male (x) ∧Kid (x).

6 LittleGirl (x) : “x adalah anak kecil perempuan”. Predikat LittleGirl (x)didefinisikan sebagai LittleGirl (x) := Female (x) ∧Kid (x).

MZI (FIF Tel-U) Pemrograman Logika November 2015 46 / 69

Page 98: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Translasi Formula Logika Predikat ke Prolog

Misalkan kita memiliki predikat-predikat turunan berikut:

1 Gentleman (x) : “x adalah laki-laki dewasa”. Predikat Gentleman (x)didefinisikan sebagai Gentleman (x) := Male (x) ∧Adult (x).

2 Lady (x) : “x adalah perempuan dewasa”. Predikat Lady (x) didefinisikansebagai Lady (x) :=

Female (x) ∧Adult (x).3 TeenBoy (x) : “x adalah laki-laki remaja”. Predikat TeenBoy (x)didefinisikan sebagai TeenBoy (x) := Male (x) ∧ Teen (x).

4 TeenGirl (x) : “x adalah perempuan remaja”. Predikat TeenGirl (x)didefinisikan sebagai TeenGirl (x) := Female (x) ∧ Teen (x).

5 LittleBoy (x) : “x adalah anak kecil laki-laki”. Predikat LittleBoy (x)didefinisikan sebagai LittleBoy (x) := Male (x) ∧Kid (x).

6 LittleGirl (x) : “x adalah anak kecil perempuan”. Predikat LittleGirl (x)didefinisikan sebagai LittleGirl (x) := Female (x) ∧Kid (x).

MZI (FIF Tel-U) Pemrograman Logika November 2015 46 / 69

Page 99: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Translasi Formula Logika Predikat ke Prolog

Misalkan kita memiliki predikat-predikat turunan berikut:

1 Gentleman (x) : “x adalah laki-laki dewasa”. Predikat Gentleman (x)didefinisikan sebagai Gentleman (x) := Male (x) ∧Adult (x).

2 Lady (x) : “x adalah perempuan dewasa”. Predikat Lady (x) didefinisikansebagai Lady (x) := Female (x) ∧Adult (x).

3 TeenBoy (x) : “x adalah laki-laki remaja”. Predikat TeenBoy (x)didefinisikan sebagai TeenBoy (x) :=

Male (x) ∧ Teen (x).4 TeenGirl (x) : “x adalah perempuan remaja”. Predikat TeenGirl (x)didefinisikan sebagai TeenGirl (x) := Female (x) ∧ Teen (x).

5 LittleBoy (x) : “x adalah anak kecil laki-laki”. Predikat LittleBoy (x)didefinisikan sebagai LittleBoy (x) := Male (x) ∧Kid (x).

6 LittleGirl (x) : “x adalah anak kecil perempuan”. Predikat LittleGirl (x)didefinisikan sebagai LittleGirl (x) := Female (x) ∧Kid (x).

MZI (FIF Tel-U) Pemrograman Logika November 2015 46 / 69

Page 100: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Translasi Formula Logika Predikat ke Prolog

Misalkan kita memiliki predikat-predikat turunan berikut:

1 Gentleman (x) : “x adalah laki-laki dewasa”. Predikat Gentleman (x)didefinisikan sebagai Gentleman (x) := Male (x) ∧Adult (x).

2 Lady (x) : “x adalah perempuan dewasa”. Predikat Lady (x) didefinisikansebagai Lady (x) := Female (x) ∧Adult (x).

3 TeenBoy (x) : “x adalah laki-laki remaja”. Predikat TeenBoy (x)didefinisikan sebagai TeenBoy (x) := Male (x) ∧ Teen (x).

4 TeenGirl (x) : “x adalah perempuan remaja”. Predikat TeenGirl (x)didefinisikan sebagai TeenGirl (x) :=

Female (x) ∧ Teen (x).5 LittleBoy (x) : “x adalah anak kecil laki-laki”. Predikat LittleBoy (x)didefinisikan sebagai LittleBoy (x) := Male (x) ∧Kid (x).

6 LittleGirl (x) : “x adalah anak kecil perempuan”. Predikat LittleGirl (x)didefinisikan sebagai LittleGirl (x) := Female (x) ∧Kid (x).

MZI (FIF Tel-U) Pemrograman Logika November 2015 46 / 69

Page 101: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Translasi Formula Logika Predikat ke Prolog

Misalkan kita memiliki predikat-predikat turunan berikut:

1 Gentleman (x) : “x adalah laki-laki dewasa”. Predikat Gentleman (x)didefinisikan sebagai Gentleman (x) := Male (x) ∧Adult (x).

2 Lady (x) : “x adalah perempuan dewasa”. Predikat Lady (x) didefinisikansebagai Lady (x) := Female (x) ∧Adult (x).

3 TeenBoy (x) : “x adalah laki-laki remaja”. Predikat TeenBoy (x)didefinisikan sebagai TeenBoy (x) := Male (x) ∧ Teen (x).

4 TeenGirl (x) : “x adalah perempuan remaja”. Predikat TeenGirl (x)didefinisikan sebagai TeenGirl (x) := Female (x) ∧ Teen (x).

5 LittleBoy (x) : “x adalah anak kecil laki-laki”. Predikat LittleBoy (x)didefinisikan sebagai LittleBoy (x) :=

Male (x) ∧Kid (x).6 LittleGirl (x) : “x adalah anak kecil perempuan”. Predikat LittleGirl (x)didefinisikan sebagai LittleGirl (x) := Female (x) ∧Kid (x).

MZI (FIF Tel-U) Pemrograman Logika November 2015 46 / 69

Page 102: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Translasi Formula Logika Predikat ke Prolog

Misalkan kita memiliki predikat-predikat turunan berikut:

1 Gentleman (x) : “x adalah laki-laki dewasa”. Predikat Gentleman (x)didefinisikan sebagai Gentleman (x) := Male (x) ∧Adult (x).

2 Lady (x) : “x adalah perempuan dewasa”. Predikat Lady (x) didefinisikansebagai Lady (x) := Female (x) ∧Adult (x).

3 TeenBoy (x) : “x adalah laki-laki remaja”. Predikat TeenBoy (x)didefinisikan sebagai TeenBoy (x) := Male (x) ∧ Teen (x).

4 TeenGirl (x) : “x adalah perempuan remaja”. Predikat TeenGirl (x)didefinisikan sebagai TeenGirl (x) := Female (x) ∧ Teen (x).

5 LittleBoy (x) : “x adalah anak kecil laki-laki”. Predikat LittleBoy (x)didefinisikan sebagai LittleBoy (x) := Male (x) ∧Kid (x).

6 LittleGirl (x) : “x adalah anak kecil perempuan”. Predikat LittleGirl (x)didefinisikan sebagai LittleGirl (x) :=

Female (x) ∧Kid (x).

MZI (FIF Tel-U) Pemrograman Logika November 2015 46 / 69

Page 103: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Translasi Formula Logika Predikat ke Prolog

Misalkan kita memiliki predikat-predikat turunan berikut:

1 Gentleman (x) : “x adalah laki-laki dewasa”. Predikat Gentleman (x)didefinisikan sebagai Gentleman (x) := Male (x) ∧Adult (x).

2 Lady (x) : “x adalah perempuan dewasa”. Predikat Lady (x) didefinisikansebagai Lady (x) := Female (x) ∧Adult (x).

3 TeenBoy (x) : “x adalah laki-laki remaja”. Predikat TeenBoy (x)didefinisikan sebagai TeenBoy (x) := Male (x) ∧ Teen (x).

4 TeenGirl (x) : “x adalah perempuan remaja”. Predikat TeenGirl (x)didefinisikan sebagai TeenGirl (x) := Female (x) ∧ Teen (x).

5 LittleBoy (x) : “x adalah anak kecil laki-laki”. Predikat LittleBoy (x)didefinisikan sebagai LittleBoy (x) := Male (x) ∧Kid (x).

6 LittleGirl (x) : “x adalah anak kecil perempuan”. Predikat LittleGirl (x)didefinisikan sebagai LittleGirl (x) := Female (x) ∧Kid (x).

MZI (FIF Tel-U) Pemrograman Logika November 2015 46 / 69

Page 104: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Misalkan pada Prolog, keenam predikat tersebut ditranslasikan sebagaigentleman, lady, teen_boy, teen_girl, little_boy, dan little_girl.Keenam predikat ini dapat didefinisikan sebagai aturan (rules) yang diturunkandari predikat-predikat yang telah ada (yaitu male, female, adult, teen, dankid). Pendefinisian dilakukan sebagai berikut:

gentleman(X):- male(X),adult(X).lady(X):- female(X),adult(X).

teen_boy(X):- male(X),teen(X).teen_girl(X):- female(X),teen(X).

little_boy(X):- male(X),kid(X).little_girl(X):- female(X),kid(X).

Ekspresi gentleman(X):- male(X),adult(X) merupakan suatu klausa (clause)pada Prolog.

MZI (FIF Tel-U) Pemrograman Logika November 2015 47 / 69

Page 105: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Misalkan pada Prolog, keenam predikat tersebut ditranslasikan sebagaigentleman, lady, teen_boy, teen_girl, little_boy, dan little_girl.Keenam predikat ini dapat didefinisikan sebagai aturan (rules) yang diturunkandari predikat-predikat yang telah ada (yaitu male, female, adult, teen, dankid). Pendefinisian dilakukan sebagai berikut:

gentleman(X):- male(X),adult(X).lady(X):- female(X),adult(X).

teen_boy(X):- male(X),teen(X).teen_girl(X):- female(X),teen(X).

little_boy(X):- male(X),kid(X).little_girl(X):- female(X),kid(X).

Ekspresi gentleman(X):- male(X),adult(X) merupakan suatu klausa (clause)pada Prolog.

MZI (FIF Tel-U) Pemrograman Logika November 2015 47 / 69

Page 106: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Klausa (Clause), Fakta (Fact), dan Aturan (Rules)Sebuah skrip Prolog merupakan kumpulan beberapa klausa (clause). Sebuahklausa dapat berupa fakta (fact) —yaitu hal yang didefinisikan benar secaralangsung (contohnya male(bob)) atau aturan (rules) —yang merupakan formulayang diturunkan dari beberapa formula fakta. Setiap klausa harus diakhiri dengantanda titik (.).

Suatu aturan (rules) dapat berbentuk〈head〉:- 〈t1〉,〈t2〉,...,〈tn〉 dengan n ≥ 1. Tanda “,”berarti konjungsi (∧).Tanda “,”dapat diganti dengan “;”yang berarti disjungsi (∨).

Pada suatu klausa:

〈head〉 disebut kepada (head) dari klausa, 〈head〉 biasanya mendefinisikansuatu predikat baru yang dapat diturunkan dari predikat pada fakta〈t1〉,〈t2〉,...,〈tn〉 disebut badan (body) dari klausa, badan dari suatuklausa merepresentasikan kondisi yang direpresentasikan oleh kepala klausa:- disebut leher (neck) dari klausa, simbol ini serupa dengan simbolassignment pada program imperatif, secara semantik, leher klausa dapatdibaca sebagai kata “jika (if )”.

Pada setiap klausa biasanya: seluruh variabel diawali dengan huruf kapital danterm (objek) diawali dengan huruf kecil.

Page 107: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Klausa (Clause), Fakta (Fact), dan Aturan (Rules)Sebuah skrip Prolog merupakan kumpulan beberapa klausa (clause). Sebuahklausa dapat berupa fakta (fact) —yaitu hal yang didefinisikan benar secaralangsung (contohnya male(bob)) atau aturan (rules) —yang merupakan formulayang diturunkan dari beberapa formula fakta. Setiap klausa harus diakhiri dengantanda titik (.).

Suatu aturan (rules) dapat berbentuk〈head〉:- 〈t1〉,〈t2〉,...,〈tn〉 dengan n ≥ 1. Tanda “,”berarti konjungsi (∧).Tanda “,”dapat diganti dengan “;”yang berarti disjungsi (∨).

Pada suatu klausa:

〈head〉 disebut kepada (head) dari klausa, 〈head〉 biasanya mendefinisikansuatu predikat baru yang dapat diturunkan dari predikat pada fakta

〈t1〉,〈t2〉,...,〈tn〉 disebut badan (body) dari klausa, badan dari suatuklausa merepresentasikan kondisi yang direpresentasikan oleh kepala klausa:- disebut leher (neck) dari klausa, simbol ini serupa dengan simbolassignment pada program imperatif, secara semantik, leher klausa dapatdibaca sebagai kata “jika (if )”.

Pada setiap klausa biasanya: seluruh variabel diawali dengan huruf kapital danterm (objek) diawali dengan huruf kecil.

Page 108: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Klausa (Clause), Fakta (Fact), dan Aturan (Rules)Sebuah skrip Prolog merupakan kumpulan beberapa klausa (clause). Sebuahklausa dapat berupa fakta (fact) —yaitu hal yang didefinisikan benar secaralangsung (contohnya male(bob)) atau aturan (rules) —yang merupakan formulayang diturunkan dari beberapa formula fakta. Setiap klausa harus diakhiri dengantanda titik (.).

Suatu aturan (rules) dapat berbentuk〈head〉:- 〈t1〉,〈t2〉,...,〈tn〉 dengan n ≥ 1. Tanda “,”berarti konjungsi (∧).Tanda “,”dapat diganti dengan “;”yang berarti disjungsi (∨).

Pada suatu klausa:

〈head〉 disebut kepada (head) dari klausa, 〈head〉 biasanya mendefinisikansuatu predikat baru yang dapat diturunkan dari predikat pada fakta〈t1〉,〈t2〉,...,〈tn〉 disebut badan (body) dari klausa, badan dari suatuklausa merepresentasikan kondisi yang direpresentasikan oleh kepala klausa

:- disebut leher (neck) dari klausa, simbol ini serupa dengan simbolassignment pada program imperatif, secara semantik, leher klausa dapatdibaca sebagai kata “jika (if )”.

Pada setiap klausa biasanya: seluruh variabel diawali dengan huruf kapital danterm (objek) diawali dengan huruf kecil.

Page 109: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Klausa (Clause), Fakta (Fact), dan Aturan (Rules)Sebuah skrip Prolog merupakan kumpulan beberapa klausa (clause). Sebuahklausa dapat berupa fakta (fact) —yaitu hal yang didefinisikan benar secaralangsung (contohnya male(bob)) atau aturan (rules) —yang merupakan formulayang diturunkan dari beberapa formula fakta. Setiap klausa harus diakhiri dengantanda titik (.).

Suatu aturan (rules) dapat berbentuk〈head〉:- 〈t1〉,〈t2〉,...,〈tn〉 dengan n ≥ 1. Tanda “,”berarti konjungsi (∧).Tanda “,”dapat diganti dengan “;”yang berarti disjungsi (∨).

Pada suatu klausa:

〈head〉 disebut kepada (head) dari klausa, 〈head〉 biasanya mendefinisikansuatu predikat baru yang dapat diturunkan dari predikat pada fakta〈t1〉,〈t2〉,...,〈tn〉 disebut badan (body) dari klausa, badan dari suatuklausa merepresentasikan kondisi yang direpresentasikan oleh kepala klausa:- disebut leher (neck) dari klausa, simbol ini serupa dengan simbolassignment pada program imperatif, secara semantik, leher klausa dapatdibaca sebagai kata “jika (if )”.

Pada setiap klausa biasanya: seluruh variabel diawali dengan huruf kapital danterm (objek) diawali dengan huruf kecil.

Page 110: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Makna (Semantik) Deklaratif pada Prolog

Misalkan terdapat klausa:〈P〉:- 〈Q〉,〈R〉.

Klausa tersebut memiliki makna deklaratif:“〈P〉 benar bila 〈Q〉 dan 〈R〉 benar”, atau“jika 〈Q〉 dan 〈R〉 dipenuhi, maka 〈P〉 juga dipenuhi”.

Serupa dengan hal di atas, klausa 〈P〉:- 〈Q〉;〈R〉. berarti “jika 〈Q〉 atau 〈R〉dipenuhi, maka 〈P〉 dipenuhi”.

Contoh

Kita memeliki gentlemen(X):- male(X),adult(X), ini setara dengan kondisiformula logika predikat yang menyatakan Male (x) ∧Adult (x)→ Gentleman (x).Dengan perkataan lain, jika x adalah laki-laki dan x dewasa, maka x adalahgentleman.

MZI (FIF Tel-U) Pemrograman Logika November 2015 49 / 69

Page 111: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Makna (Semantik) Deklaratif pada Prolog

Misalkan terdapat klausa:〈P〉:- 〈Q〉,〈R〉.

Klausa tersebut memiliki makna deklaratif:“〈P〉 benar bila 〈Q〉 dan 〈R〉 benar”, atau“jika 〈Q〉 dan 〈R〉 dipenuhi, maka 〈P〉 juga dipenuhi”.

Serupa dengan hal di atas, klausa 〈P〉:- 〈Q〉;〈R〉. berarti “jika 〈Q〉 atau 〈R〉dipenuhi, maka 〈P〉 dipenuhi”.

ContohKita memeliki gentlemen(X):- male(X),adult(X), ini setara dengan kondisiformula logika predikat yang menyatakan Male (x) ∧Adult (x)→ Gentleman (x).Dengan perkataan lain, jika x adalah laki-laki dan x dewasa, maka x adalahgentleman.

MZI (FIF Tel-U) Pemrograman Logika November 2015 49 / 69

Page 112: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Contoh Translasi Sederhana dengan Disjungsi

Dari skrip Prolog yang telah kita buat sebelumnya, misalkan kita inginmenyatakan dua hal berikut:

1 semua remaja maupun anak kecil laki-laki menyukai permainan FIFA162 semua remaja maupun anak kecil perempuan menyukai permainan CandyCrush

Kita dapat mendefinisikan formula logika predikat:

1 LovesFIFA16 (x) :=

TeenBoy (x) ∨ LittleBoy (x)2 LovesCandyCrush (x) := TeenGirl (x) ∨ LittleGirl (x)

Kedua formula tersebut dapat ditranslasikan ke dalam Prolog menjadi:

loves_FIFA16(X):- teen_boy(X); little_boy(X).loves_CandyCrush(X):- teen_girl(X); little_girl(X).

MZI (FIF Tel-U) Pemrograman Logika November 2015 50 / 69

Page 113: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Contoh Translasi Sederhana dengan Disjungsi

Dari skrip Prolog yang telah kita buat sebelumnya, misalkan kita inginmenyatakan dua hal berikut:

1 semua remaja maupun anak kecil laki-laki menyukai permainan FIFA162 semua remaja maupun anak kecil perempuan menyukai permainan CandyCrush

Kita dapat mendefinisikan formula logika predikat:

1 LovesFIFA16 (x) := TeenBoy (x) ∨ LittleBoy (x)2 LovesCandyCrush (x) :=

TeenGirl (x) ∨ LittleGirl (x)Kedua formula tersebut dapat ditranslasikan ke dalam Prolog menjadi:

loves_FIFA16(X):- teen_boy(X); little_boy(X).loves_CandyCrush(X):- teen_girl(X); little_girl(X).

MZI (FIF Tel-U) Pemrograman Logika November 2015 50 / 69

Page 114: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Contoh Translasi Sederhana dengan Disjungsi

Dari skrip Prolog yang telah kita buat sebelumnya, misalkan kita inginmenyatakan dua hal berikut:

1 semua remaja maupun anak kecil laki-laki menyukai permainan FIFA162 semua remaja maupun anak kecil perempuan menyukai permainan CandyCrush

Kita dapat mendefinisikan formula logika predikat:

1 LovesFIFA16 (x) := TeenBoy (x) ∨ LittleBoy (x)2 LovesCandyCrush (x) := TeenGirl (x) ∨ LittleGirl (x)

Kedua formula tersebut dapat ditranslasikan ke dalam Prolog menjadi:

loves_FIFA16(X):- teen_boy(X); little_boy(X).loves_CandyCrush(X):- teen_girl(X); little_girl(X).

MZI (FIF Tel-U) Pemrograman Logika November 2015 50 / 69

Page 115: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Contoh Translasi Sederhana dengan Disjungsi

Dari skrip Prolog yang telah kita buat sebelumnya, misalkan kita inginmenyatakan dua hal berikut:

1 semua remaja maupun anak kecil laki-laki menyukai permainan FIFA162 semua remaja maupun anak kecil perempuan menyukai permainan CandyCrush

Kita dapat mendefinisikan formula logika predikat:

1 LovesFIFA16 (x) := TeenBoy (x) ∨ LittleBoy (x)2 LovesCandyCrush (x) := TeenGirl (x) ∨ LittleGirl (x)

Kedua formula tersebut dapat ditranslasikan ke dalam Prolog menjadi:

loves_FIFA16(X):- teen_boy(X); little_boy(X).loves_CandyCrush(X):- teen_girl(X); little_girl(X).

MZI (FIF Tel-U) Pemrograman Logika November 2015 50 / 69

Page 116: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Pendefinisian Predikat Baru dengan Penukaran Objek

Predikat Parent (x, y) menyatakan bahwa “x adalah orang tua y”. Kita dapatmembuat predikat Child (x, y) yang menyatakan bahwa “x adalah anak dari y”.Predikat Child (x, y) dapat didefinisikan memakai predikat Parent (x, y) yangsudah ada sebelumnya. Perhatikan bahwa

Child (x, y) berarti

“x adalah anak dari y”berarti “y adalah orang tua dari x”berarti Parent (y, x) .

Jadi kita dapat mendefinisikan Child (x, y) := Parent (y, x). Pada Prolog hal inidapat dilakukan dengan mudah sebagai berikut.

child(X,Y):- parent(Y,X).

MZI (FIF Tel-U) Pemrograman Logika November 2015 51 / 69

Page 117: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Pendefinisian Predikat Baru dengan Penukaran Objek

Predikat Parent (x, y) menyatakan bahwa “x adalah orang tua y”. Kita dapatmembuat predikat Child (x, y) yang menyatakan bahwa “x adalah anak dari y”.Predikat Child (x, y) dapat didefinisikan memakai predikat Parent (x, y) yangsudah ada sebelumnya. Perhatikan bahwa

Child (x, y) berarti “x adalah anak dari y”berarti

“y adalah orang tua dari x”berarti Parent (y, x) .

Jadi kita dapat mendefinisikan Child (x, y) := Parent (y, x). Pada Prolog hal inidapat dilakukan dengan mudah sebagai berikut.

child(X,Y):- parent(Y,X).

MZI (FIF Tel-U) Pemrograman Logika November 2015 51 / 69

Page 118: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Pendefinisian Predikat Baru dengan Penukaran Objek

Predikat Parent (x, y) menyatakan bahwa “x adalah orang tua y”. Kita dapatmembuat predikat Child (x, y) yang menyatakan bahwa “x adalah anak dari y”.Predikat Child (x, y) dapat didefinisikan memakai predikat Parent (x, y) yangsudah ada sebelumnya. Perhatikan bahwa

Child (x, y) berarti “x adalah anak dari y”berarti “y adalah orang tua dari x”berarti

Parent (y, x) .

Jadi kita dapat mendefinisikan Child (x, y) := Parent (y, x). Pada Prolog hal inidapat dilakukan dengan mudah sebagai berikut.

child(X,Y):- parent(Y,X).

MZI (FIF Tel-U) Pemrograman Logika November 2015 51 / 69

Page 119: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Pendefinisian Predikat Baru dengan Penukaran Objek

Predikat Parent (x, y) menyatakan bahwa “x adalah orang tua y”. Kita dapatmembuat predikat Child (x, y) yang menyatakan bahwa “x adalah anak dari y”.Predikat Child (x, y) dapat didefinisikan memakai predikat Parent (x, y) yangsudah ada sebelumnya. Perhatikan bahwa

Child (x, y) berarti “x adalah anak dari y”berarti “y adalah orang tua dari x”berarti Parent (y, x) .

Jadi kita dapat mendefinisikan Child (x, y) :=

Parent (y, x). Pada Prolog hal inidapat dilakukan dengan mudah sebagai berikut.

child(X,Y):- parent(Y,X).

MZI (FIF Tel-U) Pemrograman Logika November 2015 51 / 69

Page 120: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Pendefinisian Predikat Baru dengan Penukaran Objek

Predikat Parent (x, y) menyatakan bahwa “x adalah orang tua y”. Kita dapatmembuat predikat Child (x, y) yang menyatakan bahwa “x adalah anak dari y”.Predikat Child (x, y) dapat didefinisikan memakai predikat Parent (x, y) yangsudah ada sebelumnya. Perhatikan bahwa

Child (x, y) berarti “x adalah anak dari y”berarti “y adalah orang tua dari x”berarti Parent (y, x) .

Jadi kita dapat mendefinisikan Child (x, y) := Parent (y, x). Pada Prolog hal inidapat dilakukan dengan mudah sebagai berikut.

child(X,Y):- parent(Y,X).

MZI (FIF Tel-U) Pemrograman Logika November 2015 51 / 69

Page 121: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Pendefinisian Predikat Baru dengan Penukaran Objek

Predikat Parent (x, y) menyatakan bahwa “x adalah orang tua y”. Kita dapatmembuat predikat Child (x, y) yang menyatakan bahwa “x adalah anak dari y”.Predikat Child (x, y) dapat didefinisikan memakai predikat Parent (x, y) yangsudah ada sebelumnya. Perhatikan bahwa

Child (x, y) berarti “x adalah anak dari y”berarti “y adalah orang tua dari x”berarti Parent (y, x) .

Jadi kita dapat mendefinisikan Child (x, y) := Parent (y, x). Pada Prolog hal inidapat dilakukan dengan mudah sebagai berikut.

child(X,Y):- parent(Y,X).

MZI (FIF Tel-U) Pemrograman Logika November 2015 51 / 69

Page 122: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Latihan 1

Latihan

1 Diberikan domain D dan predikat Parent (x, y) : “x adalah orang tua dariy”, Male (x) : “x adalah laki-laki”, dan Female (x) : “x adalah perempuan”.Hanya dengan memakai predikat-predikat ini, berikan definisi untuk predikatFather (x, y) dan Mother (x, y), predikat Father (x, y) berarti “x adalah ayahdari y”dan predikat Mother (x, y) berarti “x adalah ibu dari y”.

2 Gunakan hasil pada nomor 1 untuk mendefinisikan father(X,Y) danmother(X,Y) pada Prolog.

Solusi:

1 Father (x, y) := Parent (x, y) ∧Male (x) danMother (x, y) := Parent (x, y) ∧ Female (x). Hal ini terjadi karena ayahadalah orang tua laki-laki dan ibu adalah orang tua perempuan.

2 Kita memiliki father(X,Y):- parent(X,Y),male(X) danmother(X,Y):- parent(X,Y),female(X).

MZI (FIF Tel-U) Pemrograman Logika November 2015 52 / 69

Page 123: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Latihan 1

Latihan

1 Diberikan domain D dan predikat Parent (x, y) : “x adalah orang tua dariy”, Male (x) : “x adalah laki-laki”, dan Female (x) : “x adalah perempuan”.Hanya dengan memakai predikat-predikat ini, berikan definisi untuk predikatFather (x, y) dan Mother (x, y), predikat Father (x, y) berarti “x adalah ayahdari y”dan predikat Mother (x, y) berarti “x adalah ibu dari y”.

2 Gunakan hasil pada nomor 1 untuk mendefinisikan father(X,Y) danmother(X,Y) pada Prolog.

Solusi:

1 Father (x, y) := Parent (x, y) ∧Male (x) danMother (x, y) := Parent (x, y) ∧ Female (x). Hal ini terjadi karena ayahadalah orang tua laki-laki dan ibu adalah orang tua perempuan.

2 Kita memiliki father(X,Y):- parent(X,Y),male(X) danmother(X,Y):- parent(X,Y),female(X).

MZI (FIF Tel-U) Pemrograman Logika November 2015 52 / 69

Page 124: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Konstruksi Aturan (Rules) Sederhana pada Prolog

Latihan 1

Latihan

1 Diberikan domain D dan predikat Parent (x, y) : “x adalah orang tua dariy”, Male (x) : “x adalah laki-laki”, dan Female (x) : “x adalah perempuan”.Hanya dengan memakai predikat-predikat ini, berikan definisi untuk predikatFather (x, y) dan Mother (x, y), predikat Father (x, y) berarti “x adalah ayahdari y”dan predikat Mother (x, y) berarti “x adalah ibu dari y”.

2 Gunakan hasil pada nomor 1 untuk mendefinisikan father(X,Y) danmother(X,Y) pada Prolog.

Solusi:

1 Father (x, y) := Parent (x, y) ∧Male (x) danMother (x, y) := Parent (x, y) ∧ Female (x). Hal ini terjadi karena ayahadalah orang tua laki-laki dan ibu adalah orang tua perempuan.

2 Kita memiliki father(X,Y):- parent(X,Y),male(X) danmother(X,Y):- parent(X,Y),female(X).

MZI (FIF Tel-U) Pemrograman Logika November 2015 52 / 69

Page 125: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Bahasan

1 Apa itu Prolog

2 Tatacara Instalasi Prolog

3 Pemakaian Interpreter Interaktif

4 Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

5 Konstruksi Aturan (Rules) Sederhana pada Prolog

6 Representasi Kuantor pada Prolog

7 Kesamaan dan Ketaksamaan Term pada Prolog

8 Tugas Kelompok

MZI (FIF Tel-U) Pemrograman Logika November 2015 53 / 69

Page 126: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Represetasi Kuantor Universal pada Prolog

Misalkan terdapat suatu klausa yang berbentuk:〈head〉:- 〈t1〉,〈t2〉,...,〈tn〉 dengan n ≥ 1 (operator , yang menyatakankonjungsi dapat diganti dengan ; yang menyatakan disjungsi).Semantik deklaratif dari klausa di atas adalah:Bila 〈t1〉, 〈t2〉, . . . , 〈tn〉 benar, maka 〈head〉 juga benar, atau〈t1〉 ∧ 〈t2〉 ∧ · · · ∧ 〈tn〉 → 〈head〉 bernilai T.

Representasi Kuantor Universal pada PrologJika sebuah variabel muncul pada kepala/ 〈head〉 dari suatu klausa, maka variabeltersebut diikat oleh kuantor universal (∀).

Contoh

Kita telah melihat aturan gentleman(X):- male(X),adult(X). Dalam logikapredikat, aturan ini dapat ditranslasikan sebagaiMale (x) ∧Adult (x)→ Gentleman (x). Karena X merupakan variabel yangmuncul pada kepala/ 〈head〉 suatu klausa, maka X diikat dengan kuantoruniversal. Ini berarti aturan gentleman(X):- male(X),adult(X) dapatdinyatakan sebagai formula ∀x (Male (x) ∧Adult (x)→ Gentleman (x)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 54 / 69

Page 127: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Represetasi Kuantor Universal pada Prolog

Misalkan terdapat suatu klausa yang berbentuk:〈head〉:- 〈t1〉,〈t2〉,...,〈tn〉 dengan n ≥ 1 (operator , yang menyatakankonjungsi dapat diganti dengan ; yang menyatakan disjungsi).Semantik deklaratif dari klausa di atas adalah:Bila 〈t1〉, 〈t2〉, . . . , 〈tn〉 benar, maka 〈head〉 juga benar, atau〈t1〉 ∧ 〈t2〉 ∧ · · · ∧ 〈tn〉 → 〈head〉 bernilai T.

Representasi Kuantor Universal pada PrologJika sebuah variabel muncul pada kepala/ 〈head〉 dari suatu klausa, maka variabeltersebut diikat oleh kuantor universal (∀).

ContohKita telah melihat aturan gentleman(X):- male(X),adult(X). Dalam logikapredikat, aturan ini dapat ditranslasikan sebagaiMale (x) ∧Adult (x)→ Gentleman (x). Karena X merupakan variabel yangmuncul pada kepala/ 〈head〉 suatu klausa, maka X diikat dengan kuantoruniversal. Ini berarti aturan gentleman(X):- male(X),adult(X) dapatdinyatakan sebagai formula ∀x (Male (x) ∧Adult (x)→ Gentleman (x)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 54 / 69

Page 128: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Dari aturan-aturan yang telah didefinisikan sebelumnya, kita memiliki:

lady(X):- female(X),adult(X) dapat dinyatakan sebagai

∀x (Female (x) ∧Adult (x)→ Lady (x))

teen_boy(X):- male(X),teen(X) dapat dinyatakan sebagai∀x (Male (x) ∧ Teen (x)→ TeenBoy (x))

teen_girl(X):- female(X),teen(X) dapat dinyatakan sebagai∀x (Female (x) ∧ Teen (x)→ TeenGirl (x))

little_boy(X):- male(X),kid(X) dapat dinyatakan sebagai∀x (Male (x) ∧Kid (x)→ LittleBoy (x))

little_girl(X):- female(X),kid(X) dapat dinyatakan sebagai∀x (Female (x) ∧Kid (x)→ LittleGirl (x))

loves_FIFA16(X):- teen_boy(X);little_boy(X) dapat dinyatakansebagai ∀x (TeenBoy (x) ∨ LittleBoy (x)→ LovesFIFA16 (x))

loves_CandyCrush(X):- teen_girl(X);little_girl(X) dapatdinyatakan sebagai∀x (TeenGirl (x) ∨ LittleGirl (x)→ LovesCandyCrush (x))

MZI (FIF Tel-U) Pemrograman Logika November 2015 55 / 69

Page 129: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Dari aturan-aturan yang telah didefinisikan sebelumnya, kita memiliki:

lady(X):- female(X),adult(X) dapat dinyatakan sebagai∀x (Female (x) ∧Adult (x)→ Lady (x))

teen_boy(X):- male(X),teen(X) dapat dinyatakan sebagai

∀x (Male (x) ∧ Teen (x)→ TeenBoy (x))

teen_girl(X):- female(X),teen(X) dapat dinyatakan sebagai∀x (Female (x) ∧ Teen (x)→ TeenGirl (x))

little_boy(X):- male(X),kid(X) dapat dinyatakan sebagai∀x (Male (x) ∧Kid (x)→ LittleBoy (x))

little_girl(X):- female(X),kid(X) dapat dinyatakan sebagai∀x (Female (x) ∧Kid (x)→ LittleGirl (x))

loves_FIFA16(X):- teen_boy(X);little_boy(X) dapat dinyatakansebagai ∀x (TeenBoy (x) ∨ LittleBoy (x)→ LovesFIFA16 (x))

loves_CandyCrush(X):- teen_girl(X);little_girl(X) dapatdinyatakan sebagai∀x (TeenGirl (x) ∨ LittleGirl (x)→ LovesCandyCrush (x))

MZI (FIF Tel-U) Pemrograman Logika November 2015 55 / 69

Page 130: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Dari aturan-aturan yang telah didefinisikan sebelumnya, kita memiliki:

lady(X):- female(X),adult(X) dapat dinyatakan sebagai∀x (Female (x) ∧Adult (x)→ Lady (x))

teen_boy(X):- male(X),teen(X) dapat dinyatakan sebagai∀x (Male (x) ∧ Teen (x)→ TeenBoy (x))

teen_girl(X):- female(X),teen(X) dapat dinyatakan sebagai

∀x (Female (x) ∧ Teen (x)→ TeenGirl (x))

little_boy(X):- male(X),kid(X) dapat dinyatakan sebagai∀x (Male (x) ∧Kid (x)→ LittleBoy (x))

little_girl(X):- female(X),kid(X) dapat dinyatakan sebagai∀x (Female (x) ∧Kid (x)→ LittleGirl (x))

loves_FIFA16(X):- teen_boy(X);little_boy(X) dapat dinyatakansebagai ∀x (TeenBoy (x) ∨ LittleBoy (x)→ LovesFIFA16 (x))

loves_CandyCrush(X):- teen_girl(X);little_girl(X) dapatdinyatakan sebagai∀x (TeenGirl (x) ∨ LittleGirl (x)→ LovesCandyCrush (x))

MZI (FIF Tel-U) Pemrograman Logika November 2015 55 / 69

Page 131: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Dari aturan-aturan yang telah didefinisikan sebelumnya, kita memiliki:

lady(X):- female(X),adult(X) dapat dinyatakan sebagai∀x (Female (x) ∧Adult (x)→ Lady (x))

teen_boy(X):- male(X),teen(X) dapat dinyatakan sebagai∀x (Male (x) ∧ Teen (x)→ TeenBoy (x))

teen_girl(X):- female(X),teen(X) dapat dinyatakan sebagai∀x (Female (x) ∧ Teen (x)→ TeenGirl (x))

little_boy(X):- male(X),kid(X) dapat dinyatakan sebagai

∀x (Male (x) ∧Kid (x)→ LittleBoy (x))

little_girl(X):- female(X),kid(X) dapat dinyatakan sebagai∀x (Female (x) ∧Kid (x)→ LittleGirl (x))

loves_FIFA16(X):- teen_boy(X);little_boy(X) dapat dinyatakansebagai ∀x (TeenBoy (x) ∨ LittleBoy (x)→ LovesFIFA16 (x))

loves_CandyCrush(X):- teen_girl(X);little_girl(X) dapatdinyatakan sebagai∀x (TeenGirl (x) ∨ LittleGirl (x)→ LovesCandyCrush (x))

MZI (FIF Tel-U) Pemrograman Logika November 2015 55 / 69

Page 132: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Dari aturan-aturan yang telah didefinisikan sebelumnya, kita memiliki:

lady(X):- female(X),adult(X) dapat dinyatakan sebagai∀x (Female (x) ∧Adult (x)→ Lady (x))

teen_boy(X):- male(X),teen(X) dapat dinyatakan sebagai∀x (Male (x) ∧ Teen (x)→ TeenBoy (x))

teen_girl(X):- female(X),teen(X) dapat dinyatakan sebagai∀x (Female (x) ∧ Teen (x)→ TeenGirl (x))

little_boy(X):- male(X),kid(X) dapat dinyatakan sebagai∀x (Male (x) ∧Kid (x)→ LittleBoy (x))

little_girl(X):- female(X),kid(X) dapat dinyatakan sebagai

∀x (Female (x) ∧Kid (x)→ LittleGirl (x))

loves_FIFA16(X):- teen_boy(X);little_boy(X) dapat dinyatakansebagai ∀x (TeenBoy (x) ∨ LittleBoy (x)→ LovesFIFA16 (x))

loves_CandyCrush(X):- teen_girl(X);little_girl(X) dapatdinyatakan sebagai∀x (TeenGirl (x) ∨ LittleGirl (x)→ LovesCandyCrush (x))

MZI (FIF Tel-U) Pemrograman Logika November 2015 55 / 69

Page 133: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Dari aturan-aturan yang telah didefinisikan sebelumnya, kita memiliki:

lady(X):- female(X),adult(X) dapat dinyatakan sebagai∀x (Female (x) ∧Adult (x)→ Lady (x))

teen_boy(X):- male(X),teen(X) dapat dinyatakan sebagai∀x (Male (x) ∧ Teen (x)→ TeenBoy (x))

teen_girl(X):- female(X),teen(X) dapat dinyatakan sebagai∀x (Female (x) ∧ Teen (x)→ TeenGirl (x))

little_boy(X):- male(X),kid(X) dapat dinyatakan sebagai∀x (Male (x) ∧Kid (x)→ LittleBoy (x))

little_girl(X):- female(X),kid(X) dapat dinyatakan sebagai∀x (Female (x) ∧Kid (x)→ LittleGirl (x))

loves_FIFA16(X):- teen_boy(X);little_boy(X) dapat dinyatakansebagai

∀x (TeenBoy (x) ∨ LittleBoy (x)→ LovesFIFA16 (x))

loves_CandyCrush(X):- teen_girl(X);little_girl(X) dapatdinyatakan sebagai∀x (TeenGirl (x) ∨ LittleGirl (x)→ LovesCandyCrush (x))

MZI (FIF Tel-U) Pemrograman Logika November 2015 55 / 69

Page 134: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Dari aturan-aturan yang telah didefinisikan sebelumnya, kita memiliki:

lady(X):- female(X),adult(X) dapat dinyatakan sebagai∀x (Female (x) ∧Adult (x)→ Lady (x))

teen_boy(X):- male(X),teen(X) dapat dinyatakan sebagai∀x (Male (x) ∧ Teen (x)→ TeenBoy (x))

teen_girl(X):- female(X),teen(X) dapat dinyatakan sebagai∀x (Female (x) ∧ Teen (x)→ TeenGirl (x))

little_boy(X):- male(X),kid(X) dapat dinyatakan sebagai∀x (Male (x) ∧Kid (x)→ LittleBoy (x))

little_girl(X):- female(X),kid(X) dapat dinyatakan sebagai∀x (Female (x) ∧Kid (x)→ LittleGirl (x))

loves_FIFA16(X):- teen_boy(X);little_boy(X) dapat dinyatakansebagai ∀x (TeenBoy (x) ∨ LittleBoy (x)→ LovesFIFA16 (x))

loves_CandyCrush(X):- teen_girl(X);little_girl(X) dapatdinyatakan sebagai

∀x (TeenGirl (x) ∨ LittleGirl (x)→ LovesCandyCrush (x))

MZI (FIF Tel-U) Pemrograman Logika November 2015 55 / 69

Page 135: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Dari aturan-aturan yang telah didefinisikan sebelumnya, kita memiliki:

lady(X):- female(X),adult(X) dapat dinyatakan sebagai∀x (Female (x) ∧Adult (x)→ Lady (x))

teen_boy(X):- male(X),teen(X) dapat dinyatakan sebagai∀x (Male (x) ∧ Teen (x)→ TeenBoy (x))

teen_girl(X):- female(X),teen(X) dapat dinyatakan sebagai∀x (Female (x) ∧ Teen (x)→ TeenGirl (x))

little_boy(X):- male(X),kid(X) dapat dinyatakan sebagai∀x (Male (x) ∧Kid (x)→ LittleBoy (x))

little_girl(X):- female(X),kid(X) dapat dinyatakan sebagai∀x (Female (x) ∧Kid (x)→ LittleGirl (x))

loves_FIFA16(X):- teen_boy(X);little_boy(X) dapat dinyatakansebagai ∀x (TeenBoy (x) ∨ LittleBoy (x)→ LovesFIFA16 (x))

loves_CandyCrush(X):- teen_girl(X);little_girl(X) dapatdinyatakan sebagai∀x (TeenGirl (x) ∨ LittleGirl (x)→ LovesCandyCrush (x))

MZI (FIF Tel-U) Pemrograman Logika November 2015 55 / 69

Page 136: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Kemudian

child(X,Y):- parent(Y,X) dapat dinyatakan sebagai

∀x∀y (Parent (y, x)→ Child (x, y))

father(X,Y):- parent(X,Y),male(X) dapat dinyatakan sebagai∀x∀y (Parent (x, y) ∧Male (x)→ Father (x, y))

mother(X,Y):- parent(X,Y),female(X) dapat dinyatakan sebagai∀x∀y (Parent (x, y) ∧ Female (x)→ Mother (x, y))

MZI (FIF Tel-U) Pemrograman Logika November 2015 56 / 69

Page 137: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Kemudian

child(X,Y):- parent(Y,X) dapat dinyatakan sebagai∀x∀y (Parent (y, x)→ Child (x, y))

father(X,Y):- parent(X,Y),male(X) dapat dinyatakan sebagai

∀x∀y (Parent (x, y) ∧Male (x)→ Father (x, y))

mother(X,Y):- parent(X,Y),female(X) dapat dinyatakan sebagai∀x∀y (Parent (x, y) ∧ Female (x)→ Mother (x, y))

MZI (FIF Tel-U) Pemrograman Logika November 2015 56 / 69

Page 138: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Kemudian

child(X,Y):- parent(Y,X) dapat dinyatakan sebagai∀x∀y (Parent (y, x)→ Child (x, y))

father(X,Y):- parent(X,Y),male(X) dapat dinyatakan sebagai∀x∀y (Parent (x, y) ∧Male (x)→ Father (x, y))

mother(X,Y):- parent(X,Y),female(X) dapat dinyatakan sebagai

∀x∀y (Parent (x, y) ∧ Female (x)→ Mother (x, y))

MZI (FIF Tel-U) Pemrograman Logika November 2015 56 / 69

Page 139: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Kemudian

child(X,Y):- parent(Y,X) dapat dinyatakan sebagai∀x∀y (Parent (y, x)→ Child (x, y))

father(X,Y):- parent(X,Y),male(X) dapat dinyatakan sebagai∀x∀y (Parent (x, y) ∧Male (x)→ Father (x, y))

mother(X,Y):- parent(X,Y),female(X) dapat dinyatakan sebagai∀x∀y (Parent (x, y) ∧ Female (x)→ Mother (x, y))

MZI (FIF Tel-U) Pemrograman Logika November 2015 56 / 69

Page 140: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Representasi Kuantor Eksistensial pada Prolog

Misalkan kita mendefinisikan predikat Grandparent(x, y) : “x adalah grandparent(kakek atau nenek, tanpa melihat jenis kelaminnya) dari y”. Kita dapatmendefinsikan predikat Grandparent(x, y) dari predikat Parent(x, y). Perhatikanbahwa

Grandparent(x, y) berarti

“x adalah grandparent dari y”berarti “terdapat z sehingga x adalah orang tua z

dan z adalah orang tua y”berarti terdapat z sehingga Parent (x, z) ∧ Parent (z, y)berarti ∃z (Parent (x, z) ∧ Parent (z, y)).

Pada Prolog, hal ini dapat ditranslasikan sebagai

grandparent(X,Y):- parent(X,Z),parent(Z,Y).

MZI (FIF Tel-U) Pemrograman Logika November 2015 57 / 69

Page 141: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Representasi Kuantor Eksistensial pada Prolog

Misalkan kita mendefinisikan predikat Grandparent(x, y) : “x adalah grandparent(kakek atau nenek, tanpa melihat jenis kelaminnya) dari y”. Kita dapatmendefinsikan predikat Grandparent(x, y) dari predikat Parent(x, y). Perhatikanbahwa

Grandparent(x, y) berarti “x adalah grandparent dari y”berarti

“terdapat z sehingga x adalah orang tua zdan z adalah orang tua y”

berarti terdapat z sehingga Parent (x, z) ∧ Parent (z, y)berarti ∃z (Parent (x, z) ∧ Parent (z, y)).

Pada Prolog, hal ini dapat ditranslasikan sebagai

grandparent(X,Y):- parent(X,Z),parent(Z,Y).

MZI (FIF Tel-U) Pemrograman Logika November 2015 57 / 69

Page 142: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Representasi Kuantor Eksistensial pada Prolog

Misalkan kita mendefinisikan predikat Grandparent(x, y) : “x adalah grandparent(kakek atau nenek, tanpa melihat jenis kelaminnya) dari y”. Kita dapatmendefinsikan predikat Grandparent(x, y) dari predikat Parent(x, y). Perhatikanbahwa

Grandparent(x, y) berarti “x adalah grandparent dari y”berarti “terdapat z sehingga x adalah orang tua z

dan z adalah orang tua y”berarti

terdapat z sehingga Parent (x, z) ∧ Parent (z, y)berarti ∃z (Parent (x, z) ∧ Parent (z, y)).

Pada Prolog, hal ini dapat ditranslasikan sebagai

grandparent(X,Y):- parent(X,Z),parent(Z,Y).

MZI (FIF Tel-U) Pemrograman Logika November 2015 57 / 69

Page 143: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Representasi Kuantor Eksistensial pada Prolog

Misalkan kita mendefinisikan predikat Grandparent(x, y) : “x adalah grandparent(kakek atau nenek, tanpa melihat jenis kelaminnya) dari y”. Kita dapatmendefinsikan predikat Grandparent(x, y) dari predikat Parent(x, y). Perhatikanbahwa

Grandparent(x, y) berarti “x adalah grandparent dari y”berarti “terdapat z sehingga x adalah orang tua z

dan z adalah orang tua y”berarti terdapat z sehingga Parent (x, z) ∧ Parent (z, y)berarti

∃z (Parent (x, z) ∧ Parent (z, y)).

Pada Prolog, hal ini dapat ditranslasikan sebagai

grandparent(X,Y):- parent(X,Z),parent(Z,Y).

MZI (FIF Tel-U) Pemrograman Logika November 2015 57 / 69

Page 144: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Representasi Kuantor Eksistensial pada Prolog

Misalkan kita mendefinisikan predikat Grandparent(x, y) : “x adalah grandparent(kakek atau nenek, tanpa melihat jenis kelaminnya) dari y”. Kita dapatmendefinsikan predikat Grandparent(x, y) dari predikat Parent(x, y). Perhatikanbahwa

Grandparent(x, y) berarti “x adalah grandparent dari y”berarti “terdapat z sehingga x adalah orang tua z

dan z adalah orang tua y”berarti terdapat z sehingga Parent (x, z) ∧ Parent (z, y)berarti ∃z (Parent (x, z) ∧ Parent (z, y)).

Pada Prolog, hal ini dapat ditranslasikan sebagai

grandparent(X,Y):-

parent(X,Z),parent(Z,Y).

MZI (FIF Tel-U) Pemrograman Logika November 2015 57 / 69

Page 145: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Representasi Kuantor Eksistensial pada Prolog

Misalkan kita mendefinisikan predikat Grandparent(x, y) : “x adalah grandparent(kakek atau nenek, tanpa melihat jenis kelaminnya) dari y”. Kita dapatmendefinsikan predikat Grandparent(x, y) dari predikat Parent(x, y). Perhatikanbahwa

Grandparent(x, y) berarti “x adalah grandparent dari y”berarti “terdapat z sehingga x adalah orang tua z

dan z adalah orang tua y”berarti terdapat z sehingga Parent (x, z) ∧ Parent (z, y)berarti ∃z (Parent (x, z) ∧ Parent (z, y)).

Pada Prolog, hal ini dapat ditranslasikan sebagai

grandparent(X,Y):- parent(X,Z),parent(Z,Y).

MZI (FIF Tel-U) Pemrograman Logika November 2015 57 / 69

Page 146: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Representasi Kuantor Eksistensial pada PrologJika sebuah variabel muncul pada badan (body) dari suatu klausa tetapi tidakmuncul pada kepala/ 〈head〉 dari klausa tersebut, maka variabel tersebut diikatoleh kuantor eksistensial (∃).

Akibatnya representasi formula logika predikat dari

grandparent(X,Y):- parent(X,Z),parent(Z,Y).

adalah

∀x∀y (∃z (Parent (x, z) ∧ Parent (z, y))→ Grandparent (x, y)) atau

∀x∀y∃z (Parent (x, z) ∧ Parent (z, y)→ Grandparent (x, y)) .

MZI (FIF Tel-U) Pemrograman Logika November 2015 58 / 69

Page 147: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Representasi Kuantor Eksistensial pada PrologJika sebuah variabel muncul pada badan (body) dari suatu klausa tetapi tidakmuncul pada kepala/ 〈head〉 dari klausa tersebut, maka variabel tersebut diikatoleh kuantor eksistensial (∃).

Akibatnya representasi formula logika predikat dari

grandparent(X,Y):- parent(X,Z),parent(Z,Y).

adalah

∀x∀y (∃z (Parent (x, z) ∧ Parent (z, y))→ Grandparent (x, y)) atau

∀x∀y∃z (Parent (x, z) ∧ Parent (z, y)→ Grandparent (x, y)) .

MZI (FIF Tel-U) Pemrograman Logika November 2015 58 / 69

Page 148: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Dengan fakta-fakta program sebelumnya, hasil query untukgrandparent(Grandparent,Grandkid) adalah:

?- grandparent(Grandparent,Grandkid).

Grandparent = alice,Grandkid = fiona ;Grandparent = alice,Grandkid = grace ;

... [ada cukup banyak keluaran]

Grandparent = charlie,Grandkid = kelly;

MZI (FIF Tel-U) Pemrograman Logika November 2015 59 / 69

Page 149: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Dengan fakta-fakta program sebelumnya, hasil query untukgrandparent(Grandparent,Grandkid) adalah:

?- grandparent(Grandparent,Grandkid).Grandparent = alice,Grandkid = fiona ;

Grandparent = alice,Grandkid = grace ;

... [ada cukup banyak keluaran]

Grandparent = charlie,Grandkid = kelly;

MZI (FIF Tel-U) Pemrograman Logika November 2015 59 / 69

Page 150: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Dengan fakta-fakta program sebelumnya, hasil query untukgrandparent(Grandparent,Grandkid) adalah:

?- grandparent(Grandparent,Grandkid).Grandparent = alice,Grandkid = fiona ;Grandparent = alice,Grandkid = grace ;

... [ada cukup banyak keluaran]

Grandparent = charlie,Grandkid = kelly;

MZI (FIF Tel-U) Pemrograman Logika November 2015 59 / 69

Page 151: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Dengan fakta-fakta program sebelumnya, hasil query untukgrandparent(Grandparent,Grandkid) adalah:

?- grandparent(Grandparent,Grandkid).Grandparent = alice,Grandkid = fiona ;Grandparent = alice,Grandkid = grace ;

... [ada cukup banyak keluaran]

Grandparent = charlie,Grandkid = kelly;

MZI (FIF Tel-U) Pemrograman Logika November 2015 59 / 69

Page 152: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Variabel Singleton

Misalkan kita mendefinisikan predikat Has-a-Child(x) : “x memiliki anak”.Predikat Has-a-Child(x) bernilai T bila terdapat y sehingga Parent (x, y) bernilaiT. Ini berarti x memiliki anaka bila terdapat y sehingga x orang tua dari y.Akibatnya Has-a-Child(x) dapat didefinisikan sebagai

Has-a-Child (x) :=

∃yParent (x, y) .

Atau dalam bentuk implikasi ∀x (∃y (Parent (x, y)→ Has-a-Child (x))). Jika halini ditranslasikan ke Prolog secara langsung, maka kita memiliki skrip

has_a_child(X):- parent(X,Y).

Skrip di atas tidak dapat dikompilasi oleh SWI-Prolog, SWI-Prolog akanmengeluarkan peringatan: Singleton variables: [Y].

MZI (FIF Tel-U) Pemrograman Logika November 2015 60 / 69

Page 153: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Variabel Singleton

Misalkan kita mendefinisikan predikat Has-a-Child(x) : “x memiliki anak”.Predikat Has-a-Child(x) bernilai T bila terdapat y sehingga Parent (x, y) bernilaiT. Ini berarti x memiliki anaka bila terdapat y sehingga x orang tua dari y.Akibatnya Has-a-Child(x) dapat didefinisikan sebagai

Has-a-Child (x) := ∃yParent (x, y) .

Atau dalam bentuk implikasi

∀x (∃y (Parent (x, y)→ Has-a-Child (x))). Jika halini ditranslasikan ke Prolog secara langsung, maka kita memiliki skrip

has_a_child(X):- parent(X,Y).

Skrip di atas tidak dapat dikompilasi oleh SWI-Prolog, SWI-Prolog akanmengeluarkan peringatan: Singleton variables: [Y].

MZI (FIF Tel-U) Pemrograman Logika November 2015 60 / 69

Page 154: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Variabel Singleton

Misalkan kita mendefinisikan predikat Has-a-Child(x) : “x memiliki anak”.Predikat Has-a-Child(x) bernilai T bila terdapat y sehingga Parent (x, y) bernilaiT. Ini berarti x memiliki anaka bila terdapat y sehingga x orang tua dari y.Akibatnya Has-a-Child(x) dapat didefinisikan sebagai

Has-a-Child (x) := ∃yParent (x, y) .

Atau dalam bentuk implikasi ∀x (∃y (Parent (x, y)→ Has-a-Child (x))). Jika halini ditranslasikan ke Prolog secara langsung, maka kita memiliki skrip

has_a_child(X):- parent(X,Y).

Skrip di atas tidak dapat dikompilasi oleh SWI-Prolog, SWI-Prolog akanmengeluarkan peringatan: Singleton variables: [Y].

MZI (FIF Tel-U) Pemrograman Logika November 2015 60 / 69

Page 155: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Variabel Singleton

Misalkan kita mendefinisikan predikat Has-a-Child(x) : “x memiliki anak”.Predikat Has-a-Child(x) bernilai T bila terdapat y sehingga Parent (x, y) bernilaiT. Ini berarti x memiliki anaka bila terdapat y sehingga x orang tua dari y.Akibatnya Has-a-Child(x) dapat didefinisikan sebagai

Has-a-Child (x) := ∃yParent (x, y) .

Atau dalam bentuk implikasi ∀x (∃y (Parent (x, y)→ Has-a-Child (x))). Jika halini ditranslasikan ke Prolog secara langsung, maka kita memiliki skrip

has_a_child(X):- parent(X,Y).

Skrip di atas tidak dapat dikompilasi oleh SWI-Prolog, SWI-Prolog akanmengeluarkan peringatan: Singleton variables: [Y].

MZI (FIF Tel-U) Pemrograman Logika November 2015 60 / 69

Page 156: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Tentang Variabel SingletonVariabel singleton dapat berupa variabel yang muncul pada predikat biner (ataupredikat n-ari, n ≥ 2) di bagian badan (body) suatu klausa, namun variabeltersebut tidak muncul pada bagian kepala/ 〈head〉 klausa.

Untuk memperbaiki masalah variabel singleton ini kita dapat memperbaikinyadengan dua cara.

1 Tambahkan “_”(garis bawah/ underscore) di depan variabel singleton.Sehingga skrip untuk has_a_child(X) menjadi:

has_a_child(X):- parent(X,_Y).

2 Berikan penjelasan tambahkan terkait variabel singleton yang tidakmengubah makna deklaratif dari klausa yang dibentuk. Karena domain untukY adalah manusia dan Y dapat pasti memenuhi salah satu di antara male(Y)atau female(Y), maka skrip untuk has_a_child(X) menjadi:

has_a_child(X):- parent(X,Y),(male(Y);female(Y)).

Skrip ini memiliki representasi formula logika predikat berikut:∀x (∃yParent (x, y) ∧ (Male (y) ∨ Female (y))→ Has-a-Child (x)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 61 / 69

Page 157: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Tentang Variabel SingletonVariabel singleton dapat berupa variabel yang muncul pada predikat biner (ataupredikat n-ari, n ≥ 2) di bagian badan (body) suatu klausa, namun variabeltersebut tidak muncul pada bagian kepala/ 〈head〉 klausa.

Untuk memperbaiki masalah variabel singleton ini kita dapat memperbaikinyadengan dua cara.

1 Tambahkan “_”(garis bawah/ underscore) di depan variabel singleton.Sehingga skrip untuk has_a_child(X) menjadi:

has_a_child(X):- parent(X,_Y).

2 Berikan penjelasan tambahkan terkait variabel singleton yang tidakmengubah makna deklaratif dari klausa yang dibentuk. Karena domain untukY adalah manusia dan Y dapat pasti memenuhi salah satu di antara male(Y)atau female(Y), maka skrip untuk has_a_child(X) menjadi:

has_a_child(X):- parent(X,Y),(male(Y);female(Y)).

Skrip ini memiliki representasi formula logika predikat berikut:∀x (∃yParent (x, y) ∧ (Male (y) ∨ Female (y))→ Has-a-Child (x)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 61 / 69

Page 158: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Tentang Variabel SingletonVariabel singleton dapat berupa variabel yang muncul pada predikat biner (ataupredikat n-ari, n ≥ 2) di bagian badan (body) suatu klausa, namun variabeltersebut tidak muncul pada bagian kepala/ 〈head〉 klausa.

Untuk memperbaiki masalah variabel singleton ini kita dapat memperbaikinyadengan dua cara.

1 Tambahkan “_”(garis bawah/ underscore) di depan variabel singleton.Sehingga skrip untuk has_a_child(X) menjadi:

has_a_child(X):- parent(X,_Y).

2 Berikan penjelasan tambahkan terkait variabel singleton yang tidakmengubah makna deklaratif dari klausa yang dibentuk. Karena domain untukY adalah manusia dan Y dapat pasti memenuhi salah satu di antara male(Y)atau female(Y), maka skrip untuk has_a_child(X) menjadi:

has_a_child(X):- parent(X,Y),(male(Y);female(Y)).

Skrip ini memiliki representasi formula logika predikat berikut:

∀x (∃yParent (x, y) ∧ (Male (y) ∨ Female (y))→ Has-a-Child (x)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 61 / 69

Page 159: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Tentang Variabel SingletonVariabel singleton dapat berupa variabel yang muncul pada predikat biner (ataupredikat n-ari, n ≥ 2) di bagian badan (body) suatu klausa, namun variabeltersebut tidak muncul pada bagian kepala/ 〈head〉 klausa.

Untuk memperbaiki masalah variabel singleton ini kita dapat memperbaikinyadengan dua cara.

1 Tambahkan “_”(garis bawah/ underscore) di depan variabel singleton.Sehingga skrip untuk has_a_child(X) menjadi:

has_a_child(X):- parent(X,_Y).

2 Berikan penjelasan tambahkan terkait variabel singleton yang tidakmengubah makna deklaratif dari klausa yang dibentuk. Karena domain untukY adalah manusia dan Y dapat pasti memenuhi salah satu di antara male(Y)atau female(Y), maka skrip untuk has_a_child(X) menjadi:

has_a_child(X):- parent(X,Y),(male(Y);female(Y)).

Skrip ini memiliki representasi formula logika predikat berikut:∀x (∃yParent (x, y) ∧ (Male (y) ∨ Female (y))→ Has-a-Child (x)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 61 / 69

Page 160: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Latihan 2

Latihan

1 Diberikan domain D, predikat Father (x, y) : “x adalah ayah dari y”, danpredikat Mother (x, y) : “x adalah ibu dari y”. Hanya dengan memakaipredikat-predikat ini, berikan definisi untuk predikat Is-a-Daddy(x) danIs-a-Mommy(x), predikat Is-a-Daddy(x) berarti “x adalah seorang ayah”dan predikat Is-a-Mommy(x) berarti “x adalah seroang ibu”.

2 Gunakan hasil pada nomor 1 untuk mendefinisikan is_a_daddy(X) danis_a_mommy(X) pada Prolog.

MZI (FIF Tel-U) Pemrograman Logika November 2015 62 / 69

Page 161: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Solusi:

1 Is-a-Daddy(x) := ∃yFather (x, y) dan Is-a-Mommy(x) := ∃yMother (x, y).2 Kita memilikiis_a_daddy(X):- father(X,_Y) danis_a_mommy(X):- mother(X,_Y).Pendefinisian dapat pula dilakukan sebagai:is_a_daddy(X):- father(X,Y),(male(Y),female(Y)) danis_a_mommy(X):- mother(X,Y),(male(Y),female(Y)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 63 / 69

Page 162: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Solusi:

1 Is-a-Daddy(x) := ∃yFather (x, y) dan Is-a-Mommy(x) := ∃yMother (x, y).

2 Kita memilikiis_a_daddy(X):- father(X,_Y) danis_a_mommy(X):- mother(X,_Y).Pendefinisian dapat pula dilakukan sebagai:is_a_daddy(X):- father(X,Y),(male(Y),female(Y)) danis_a_mommy(X):- mother(X,Y),(male(Y),female(Y)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 63 / 69

Page 163: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Solusi:

1 Is-a-Daddy(x) := ∃yFather (x, y) dan Is-a-Mommy(x) := ∃yMother (x, y).2 Kita memilikiis_a_daddy(X):- father(X,_Y) danis_a_mommy(X):- mother(X,_Y).Pendefinisian dapat pula dilakukan sebagai:

is_a_daddy(X):- father(X,Y),(male(Y),female(Y)) danis_a_mommy(X):- mother(X,Y),(male(Y),female(Y)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 63 / 69

Page 164: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Representasi Kuantor pada Prolog

Solusi:

1 Is-a-Daddy(x) := ∃yFather (x, y) dan Is-a-Mommy(x) := ∃yMother (x, y).2 Kita memilikiis_a_daddy(X):- father(X,_Y) danis_a_mommy(X):- mother(X,_Y).Pendefinisian dapat pula dilakukan sebagai:is_a_daddy(X):- father(X,Y),(male(Y),female(Y)) danis_a_mommy(X):- mother(X,Y),(male(Y),female(Y)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 63 / 69

Page 165: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Kesamaan dan Ketaksamaan Term pada Prolog

Bahasan

1 Apa itu Prolog

2 Tatacara Instalasi Prolog

3 Pemakaian Interpreter Interaktif

4 Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

5 Konstruksi Aturan (Rules) Sederhana pada Prolog

6 Representasi Kuantor pada Prolog

7 Kesamaan dan Ketaksamaan Term pada Prolog

8 Tugas Kelompok

MZI (FIF Tel-U) Pemrograman Logika November 2015 64 / 69

Page 166: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Kesamaan dan Ketaksamaan Term pada Prolog

Kesamaan dan Ketaksamaan Term pada Prolog

Misalkan t1 dan t2 adalah dua term pada Prolog, kita dapat memeriksa kesamaanmaupun ketaksamaan untuk t1 dan t2 dengan operator == atau = (untukkesamaan) dan \== atau \= (untuk ketaksamaan).

Misalkan predikat Sibling (x, y) berarti “x adalah saudara dekat (setidaknyamemiliki ayah atau ibu yang sama) dari y”. Kita dapat mendefinisikan predikat inisebagai berikut:

Sibling(x, y) berarti

“x adalah saudara dekat dari y”berarti “x dan y adalah orang berbeda yang

memiliki orang tua (ayah atau ibu) yang sama”berarti terdapat z sehingga Parent(z, x) dan Parent(z, y)

dan x 6= yberarti ∃z (Parent (x, z) ∧ Parent (z, y)) ∧ (x 6= y).

Dalam formula logika predikat, kita memilikiSibling(x, y) := ∃z (Parent (z, x) ∧ Parent (z, y)) ∧ (x 6= y), sehingga kitamemiliki∀x∀y (∃z (Parent (z, x) ∧ Parent (z, y)) ∧ (x 6= y)→ Sibling (x, y)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 65 / 69

Page 167: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Kesamaan dan Ketaksamaan Term pada Prolog

Kesamaan dan Ketaksamaan Term pada Prolog

Misalkan t1 dan t2 adalah dua term pada Prolog, kita dapat memeriksa kesamaanmaupun ketaksamaan untuk t1 dan t2 dengan operator == atau = (untukkesamaan) dan \== atau \= (untuk ketaksamaan).

Misalkan predikat Sibling (x, y) berarti “x adalah saudara dekat (setidaknyamemiliki ayah atau ibu yang sama) dari y”. Kita dapat mendefinisikan predikat inisebagai berikut:

Sibling(x, y) berarti “x adalah saudara dekat dari y”berarti

“x dan y adalah orang berbeda yangmemiliki orang tua (ayah atau ibu) yang sama”

berarti terdapat z sehingga Parent(z, x) dan Parent(z, y)dan x 6= y

berarti ∃z (Parent (x, z) ∧ Parent (z, y)) ∧ (x 6= y).

Dalam formula logika predikat, kita memilikiSibling(x, y) := ∃z (Parent (z, x) ∧ Parent (z, y)) ∧ (x 6= y), sehingga kitamemiliki∀x∀y (∃z (Parent (z, x) ∧ Parent (z, y)) ∧ (x 6= y)→ Sibling (x, y)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 65 / 69

Page 168: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Kesamaan dan Ketaksamaan Term pada Prolog

Kesamaan dan Ketaksamaan Term pada Prolog

Misalkan t1 dan t2 adalah dua term pada Prolog, kita dapat memeriksa kesamaanmaupun ketaksamaan untuk t1 dan t2 dengan operator == atau = (untukkesamaan) dan \== atau \= (untuk ketaksamaan).

Misalkan predikat Sibling (x, y) berarti “x adalah saudara dekat (setidaknyamemiliki ayah atau ibu yang sama) dari y”. Kita dapat mendefinisikan predikat inisebagai berikut:

Sibling(x, y) berarti “x adalah saudara dekat dari y”berarti “x dan y adalah orang berbeda yang

memiliki orang tua (ayah atau ibu) yang sama”berarti

terdapat z sehingga Parent(z, x) dan Parent(z, y)dan x 6= y

berarti ∃z (Parent (x, z) ∧ Parent (z, y)) ∧ (x 6= y).

Dalam formula logika predikat, kita memilikiSibling(x, y) := ∃z (Parent (z, x) ∧ Parent (z, y)) ∧ (x 6= y), sehingga kitamemiliki∀x∀y (∃z (Parent (z, x) ∧ Parent (z, y)) ∧ (x 6= y)→ Sibling (x, y)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 65 / 69

Page 169: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Kesamaan dan Ketaksamaan Term pada Prolog

Kesamaan dan Ketaksamaan Term pada Prolog

Misalkan t1 dan t2 adalah dua term pada Prolog, kita dapat memeriksa kesamaanmaupun ketaksamaan untuk t1 dan t2 dengan operator == atau = (untukkesamaan) dan \== atau \= (untuk ketaksamaan).

Misalkan predikat Sibling (x, y) berarti “x adalah saudara dekat (setidaknyamemiliki ayah atau ibu yang sama) dari y”. Kita dapat mendefinisikan predikat inisebagai berikut:

Sibling(x, y) berarti “x adalah saudara dekat dari y”berarti “x dan y adalah orang berbeda yang

memiliki orang tua (ayah atau ibu) yang sama”berarti terdapat z sehingga Parent(z, x) dan Parent(z, y)

dan x 6= yberarti

∃z (Parent (x, z) ∧ Parent (z, y)) ∧ (x 6= y).

Dalam formula logika predikat, kita memilikiSibling(x, y) := ∃z (Parent (z, x) ∧ Parent (z, y)) ∧ (x 6= y), sehingga kitamemiliki∀x∀y (∃z (Parent (z, x) ∧ Parent (z, y)) ∧ (x 6= y)→ Sibling (x, y)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 65 / 69

Page 170: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Kesamaan dan Ketaksamaan Term pada Prolog

Kesamaan dan Ketaksamaan Term pada Prolog

Misalkan t1 dan t2 adalah dua term pada Prolog, kita dapat memeriksa kesamaanmaupun ketaksamaan untuk t1 dan t2 dengan operator == atau = (untukkesamaan) dan \== atau \= (untuk ketaksamaan).

Misalkan predikat Sibling (x, y) berarti “x adalah saudara dekat (setidaknyamemiliki ayah atau ibu yang sama) dari y”. Kita dapat mendefinisikan predikat inisebagai berikut:

Sibling(x, y) berarti “x adalah saudara dekat dari y”berarti “x dan y adalah orang berbeda yang

memiliki orang tua (ayah atau ibu) yang sama”berarti terdapat z sehingga Parent(z, x) dan Parent(z, y)

dan x 6= yberarti ∃z (Parent (x, z) ∧ Parent (z, y)) ∧ (x 6= y).

Dalam formula logika predikat, kita memilikiSibling(x, y) := ∃z (Parent (z, x) ∧ Parent (z, y)) ∧ (x 6= y), sehingga kitamemiliki∀x∀y (∃z (Parent (z, x) ∧ Parent (z, y)) ∧ (x 6= y)→ Sibling (x, y)).

MZI (FIF Tel-U) Pemrograman Logika November 2015 65 / 69

Page 171: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Kesamaan dan Ketaksamaan Term pada Prolog

Dalam prolog, formula logika predikat∀x∀y (∃z (Parent (z, x) ∧ Parent (z, y)) ∧ (x 6= y)→ Sibling (x, y)) dapatdirepresentasikan sebagai aturan berikut:

sibling(X,Y):-parent(Z,X), % Z adalalah orang tua dari Xparent(Z,Y), % Z adalah orang tua dari YX \== Y. % X dan Y adalah orang yang berbeda

Penulisan di atas merupakan cara penulisan lain dari

sibling(X,Y):- parent(Z,X),parent(Z,Y),X \== Y.

MZI (FIF Tel-U) Pemrograman Logika November 2015 66 / 69

Page 172: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Kesamaan dan Ketaksamaan Term pada Prolog

Dalam prolog, formula logika predikat∀x∀y (∃z (Parent (z, x) ∧ Parent (z, y)) ∧ (x 6= y)→ Sibling (x, y)) dapatdirepresentasikan sebagai aturan berikut:

sibling(X,Y):-parent(Z,X), % Z adalalah orang tua dari Xparent(Z,Y), % Z adalah orang tua dari YX \== Y. % X dan Y adalah orang yang berbeda

Penulisan di atas merupakan cara penulisan lain dari

sibling(X,Y):- parent(Z,X),parent(Z,Y),X \== Y.

MZI (FIF Tel-U) Pemrograman Logika November 2015 66 / 69

Page 173: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Tugas Kelompok

Bahasan

1 Apa itu Prolog

2 Tatacara Instalasi Prolog

3 Pemakaian Interpreter Interaktif

4 Dasar Pemrograman Prolog: Fakta-fakta Dasar dan Query

5 Konstruksi Aturan (Rules) Sederhana pada Prolog

6 Representasi Kuantor pada Prolog

7 Kesamaan dan Ketaksamaan Term pada Prolog

8 Tugas Kelompok

MZI (FIF Tel-U) Pemrograman Logika November 2015 67 / 69

Page 174: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Tugas Kelompok

Perhatikan bagan silsilah keluarga berikut.

MZI (FIF Tel-U) Pemrograman Logika November 2015 68 / 69

Page 175: Pemrograman Logika dengan Prolog - Telkom Universitycdndata.telkomuniversity.ac.id/pjj/15161/MUG2B3/MZI/COURSE... · Acknowledgements II Beberapa gambar dapat diambil dari sumber-sumber

Tugas Kelompok

Tugas Kelompok

Pada bagan silsilah keluarga yang diberikan, warna merah muda merepresentasikanorang dengan jenis kelamin perempuan dan warna biru merepresentasikan orangdengan jenis kelamin laki-laki. Garis tipis adalah hubungan darah (saudara atauorang tua —anak), garis tebal adalah hubungan pernikahan.

TugasBuatlah skrip program dalam Prolog (ekstensi .pl).

1 Tuliskan fakta pada Prolog yang menjelaskan jenis kelamin semua orang yangada pada bagan silsilah keluarga yang telah diberikan. Gunakan predikatmale(...) dan female(...). Predikat male(X) berarti X adalah laki-lakidan predikat female(X) berarti X adalah perempuan.

2 Tuliskan fakta pada Prolog yang menjelaskan hubungan anak-orang tua(parent-child) yang ada pada bagan silsilah keluarag yang telah diberikan.Gunakan predikat parent(...,...). Predikat parent(X,Y) berarti Xadalah orang tua dari Y.

3 Instruksi selanjutnya tunggu dari pengajar kelas masing-masing. Untuk kelas38-05 dan 38-06 silakan lihat idea.

MZI (FIF Tel-U) Pemrograman Logika November 2015 69 / 69