Prolog | An Introduction

28 Jun, 2022
Introduction :
Prolog is a logic programming language. It has important role in artificial intelligence. Unlike many other programming languages, Prolog is intended primarily as a declarative programming language. In prolog, logic is expressed as relations (called as Facts and Rules). Core heart of prolog lies at the logic being applied. Formulation or Computation is carried out by running a query over these relations.
Installation in Linux :
Open a terminal (Ctrl+Alt+T) and type:
sudo apt-get install swi-prolog

Syntax and Basic Fields :
In prolog, We declare some facts. These facts constitute the Knowledge Base of the system. We can query against the Knowledge Base. We get output as affirmative if our query is already in the knowledge Base or it is implied by Knowledge Base, otherwise we get output as negative. So, Knowledge Base can be considered similar to database, against which we can query. Prolog facts are expressed in definite pattern. Facts contain entities and their relation. Entities are written within the parenthesis separated by comma (, ). Their relation is expressed at the start and outside the parenthesis. Every fact/rule ends with a dot (.). So, a typical prolog fact goes as follows :
Format : relation(entity1, entity2, ....k'th entity).

Example :
friends(raju, mahesh).
singer(sonu).
odd_number(5).

Explanation :
These facts can be interpreted as :
raju and mahesh are friends.
sonu is a singer.
5 is an odd number.


Key Features :1. Unification : The basic idea is, can the given terms be made to represent the same structure.2. Backtracking : When a task fails, prolog traces backwards and tries to satisfy previous task.3. Recursion : Recursion is the basis for any search in program.
Running queries :A typical prolog query can be asked as :
Query 1 : ?- singer(sonu).
Output : Yes.

Explanation : As our knowledge base contains the above fact, so output was 'Yes', otherwise it would have been 'No'. 

Query 2 : ?- odd_number(7).
Output : No.

Explanation : As our knowledge base does not contain the above fact, so output was 'No'.


Advantages :1. Easy to build database. Doesn’t need a lot of programming effort.2. Pattern matching is easy. Search is recursion based.3. It has built in list handling. Makes it easier to play with any algorithm involving lists.
Disadvantages :1. LISP (another logic programming language) dominates over prolog with respect to I/O features.2. Sometimes input and output is not easy.
Applications :
Prolog is highly used in artificial intelligence(AI). Prolog is also used for pattern matching over natural language parse trees.
Reference 1: https://en.wikipedia.org/wiki/Prolog
Reference 2: http://www.swi-prolog.org/
ManasChhabra2
Programming Language
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
5 Best Languages for Competitive Programming
Top 10 Programming Languages to Learn in 2022
7 Highest Paying Programming Languages For Freelancers in 2022
Decorators with parameters in Python
JS++ | Variables and Data Types
JS++ | Interfaces
JS++ | Event Handlers
JS++ | Abstract Classes and Methods
SQL using C/C++ and SQLite
JS++ | Type System