Using Prolog for Developing Real World Artificial Intelligence Applications

Author(s):  
Athanasios Tsadiras

Artificial Intelligence Applications are becoming crucial for enterprises that want to be successful by having the advantage of using high information technology. The development of such applications is assisted by the use of high level computer programming languages that are closer to the programmer than to the computer. Such a programming language is Prolog. Prolog is a logic programming language (Clocksin & Mellish 2003) that was invented by Alain Colmerauer and Phillipe Roussel at the University of Aix-Marseille in 1971. The name Prolog comes from programmation en logique (i.e., “programming in logic” in French). Together with LISP, they are the most popular Artificial Intelligence programming languages. Prolog was generated by an attempt to develop a programming language that extensively uses expressions of logic instead of developing a program by providing a specific sequence of instructions to the computer. Theoretically, it is based on a subset of first-order predicate calculus that allows only Horn clauses (Bratko, 2000). The control of the program execution is based on Prolog’s built-in search mechanism that in fact is an application of theorem proving by first-order resolution.

Author(s):  
Muhammad Shumail Naveed ◽  
Muhammad Sarim ◽  
Kamran Ahsan

Programming is the core of computer science and due to this momentousness a special care is taken in designing the curriculum of programming courses. A substantial work has been conducted on the definition of programming courses, yet the introductory programming courses are still facing high attrition, low retention and lack of motivation. This paper introduced a tiny pre-programming language called LPL (Learners Programming Language) as a ZPL (Zeroth Programming Language) to illuminate novice students about elementary concepts of introductory programming before introducing the first imperative programming course. The overall objective and design philosophy of LPL is based on a hypothesis that the soft introduction of a simple and paradigm specific textual programming can increase the motivation level of novice students and reduce the congenital complexities and hardness of the first programming course and eventually improve the retention rate and may be fruitful in reducing the dropout/failure level. LPL also generates the equivalent high level programs from user source program and eventually very fruitful in understanding the syntax of introductory programming languages. To overcome the inherent complexities of unusual and rigid syntax of introductory programming languages, the LPL provide elementary programming concepts in the form of algorithmic and plain natural language based computational statements. The initial results obtained after the introduction of LPL are very encouraging in motivating novice students and improving the retention rate.


2021 ◽  
Vol 4 ◽  
pp. 78-87
Author(s):  
Yury Yuschenko

In the Address Programming Language (1955), the concept of indirect addressing of higher ranks (Pointers) was introduced, which allows the arbitrary connection of the computer’s RAM cells. This connection is based on standard sequences of the cell addresses in RAM and addressing sequences, which is determined by the programmer with indirect addressing. Two types of sequences allow programmers to determine an arbitrary connection of RAM cells with the arbitrary content: data, addresses, subroutines, program labels, etc. Therefore, the formed connections of cells can relate to each other. The result of connecting cells with the arbitrary content and any structure is called tree-shaped formats. Tree-shaped formats allow programmers to combine data into complex data structures that are like abstract data types. For tree-shaped formats, the concept of “review scheme” is defined, which is like the concept of “bypassing” trees. Programmers can define multiple overview diagrams for the one tree-shaped format. Programmers can create tree-shaped formats over the connected cells to define the desired overview schemes for these connected cells. The work gives a modern interpretation of the concept of tree-shaped formats in Address Programming. Tree-shaped formats are based on “stroke-operation” (pointer dereference), which was hardware implemented in the command system of computer “Kyiv”. Group operations of modernization of computer “Kyiv” addresses accelerate the processing of tree-shaped formats and are designed as organized cycles, like those in high-level imperative programming languages. The commands of computer “Kyiv”, due to operations with indirect addressing, have more capabilities than the first high-level programming language – Plankalkül. Machine commands of the computer “Kyiv” allow direct access to the i-th element of the “list” by its serial number in the same way as such access is obtained to the i-th element of the array by its index. Given examples of singly linked lists show the features of tree-shaped formats and their differences from abstract data types. The article opens a new branch of theoretical research, the purpose of which is to analyze the expe- diency of partial inclusion of Address Programming in modern programming languages.


2021 ◽  
Vol 12 (1) ◽  
pp. 209-214
Author(s):  
Stefani Paunova ◽  
◽  
Vilyana Doychevska ◽  
Valentin Yordanov ◽  
Stanimir Stoyanov ◽  
...  

The article presents a game-based learning environment that is being deeloped as a component of the ATOS platform (the platform is an article described for the same conference). The proposed environment is an adaptation of a component for serious games, developed within two projects – the National Research Program „Intelligent Agriculture (2021-2024)“ and the university project „ViSCoD – environment for modeling systems for intelligent agriculture“. The opportunities for game-based learning in integrated domains (in this case intelligent agriculture – STEAM center) are demonstrated with a version of the well-known game „Twenty question game“, adapted for the Bulgarian flora. The system is fully implemented in the logic programming language Prolog and thus can also be used to teach students in the discipline „Artificial Intelligence“.


Author(s):  
Diego Reforgiato Recupero ◽  
Valentino Artizzu ◽  
Francesca Cella ◽  
Alessandro Cotza ◽  
Davide Curcio ◽  
...  

Arduino is a famous board, which incorporates serial communication interfaces, including universal serial bus (USB) and an integrated development environment (IDE) based on Processing, a programming language that supports C and C++. It consists of a microcontroller with several other components that provide easy interconnections with other devices. Arduino and its components have been studied during the class of Computer Architecture for the degree in Computer Science at the University of Cagliari in 2016. At the end of the class, seven groups of students have been selected and chosen to carry out a device prototype on top of Arduino and show their methodology, the sensors they embedded on top, how data could be extracted, collected, stored in database for further processing and analytics. The development has been performed following the open source best practices; documentation and codes of these projects have been made online for free downloading and sharing in order to further contribute to the advancement and widespread usage of the Arduino platform.


1995 ◽  
Vol 5 (1) ◽  
pp. 81-110 ◽  
Author(s):  
Peter Achten ◽  
Rinus Plasmeijer

AbstractFunctional programming languages have banned assignment because of its undesirable properties. The reward of this rigorous decision is that functional programming languages are side-effect free. There is another side to the coin: because assignment plays a crucial role in Input/Output (I/O), functional languages have a hard time dealing with I/O. Functional programming languages have therefore often been stigmatised as inferior to imperative programming languages because they cannot deal with I/O very well. In this paper, we show that I/O can be incorporated in a functional programming language without loss of any of the generally accepted advantages of functional programming languages. This discussion is supported by an extensive account of the I/O system offered by the lazy, purely functional programming language Clean. Two aspects that are paramount in its I/O system make the approach novel with respect to other approaches. These aspects are the technique of explicit multiple environment passing, and the Event I/O framework to program Graphical User I/O in a highly structured and high-level way. Clean file I/O is as powerful and flexible as it is in common imperative languages (one can read, write, and seek directly in a file). Clean Event I/O provides programmers with a high-level framework to specify complex Graphical User I/O. It has been used to write applications such as a window-based text editor, an object based drawing program, a relational database, and a spreadsheet program. These graphical interactive programs are completely machine independent, but still obey the look-and-feel of the concrete window environment being used. The specifications are completely functional and make extensive use of uniqueness typing, higher-order functions, and algebraic data types. Efficient implementations are present on the Macintosh, Sun (X Windows under Open Look) and PC (OS/2).


Robotica ◽  
1989 ◽  
Vol 7 (1) ◽  
pp. 71-77 ◽  
Author(s):  
S. T. Rock

SUMMARYThe development of robot languages has followed a pattern similar to that of conventional programming languages, where robot languages have been based on an existing programming language. This paper first identifies the use of an existing base as one way of developing robot programming languages, and discusses the areas of difficulty in this approach. Then, on-line and off-line programming of robots is discussed and the requirements of robot programming languages that are different to those of non-specialised programming languages are presented. A discussion and evaluation of some programming languages in terms of their appropriateness for use as the base for an intelligent robot programming language is presented. This leads to the conclusion that no current language forms an adequate base for intelligent robot programming languages. What is needed as a base is a language for use in the artificial intelligence domain, that incorporates real-time facilities.


2019 ◽  
Vol 29 (8) ◽  
pp. 1125-1150
Author(s):  
FERRUCCIO GUIDI ◽  
CLAUDIO SACERDOTI COEN ◽  
ENRICO TASSI

In this paper, we are interested in high-level programming languages to implement the core components of an interactive theorem prover for a dependently typed language: the kernel – responsible for type-checking closed terms – and the elaborator – that manipulates open terms, that is terms containing unresolved unification variables.In this paper, we confirm that λProlog, the language developed by Miller and Nadathur since the 80s, is extremely suitable for implementing the kernel. Indeed, we easily obtain a type checker for the Calculus of Inductive Constructions (CIC). Even more, we do so in an incremental way by escalating a checker for a pure type system to the full CIC.We then turn our attention to the elaborator with the objective to obtain a simple implementation thanks to the features of the programming language. In particular, we want to use λProlog’s unification variables to model the object language ones. In this way, scope checking, carrying of assignments and occur checking are handled by the programming language.We observe that the eager generative semantics inherited from Prolog clashes with this plan. We propose an extension to λProlog that allows to control the generative semantics, suspend goals over flexible terms turning them into constraints, and finally manipulate these constraints at the meta-meta level via constraint handling rules.We implement the proposed language extension in the Embedded Lambda Prolog Interpreter system and we discuss how it can be used to extend the kernel into an elaborator for CIC.


Sign in / Sign up

Export Citation Format

Share Document