=================================================================
Logtalk - Object oriented extension to Prolog
Release 2.27.0

Copyright (c) 1998-2006 Paulo Moura.  All Rights Reserved.
=================================================================


This folder contains several examples of Logtalk programs. A brief 
description of each example is included below.

Each example folder contains a NOTES file and a loader helper file which 
may be used to load all the example entities. In addition, most examples 
contain a SCRIPT file with instructions on how to load the example and 
sample queries for your to try.

Most of these examples need objects, protocols, and categories which are 
defined in the Logtalk standard library or in other examples. See the NOTES 
files inside the library folder, plus the NOTES and SCRIPT files inside each 
example folder.

Some examples may redefine objects already loaded from other examples.
You may want to restart Logtalk after trying each example.

Some of the examples code have been adopted from public available Prolog 
code or from known Prolog text books and are copyrighted by the respective 
authors.

These are programming examples, meaning that you should study the source 
files to fully understand them.

All examples are formatted using four spaces tabs.

By default, compiling an example generates a .xml documenting file for each 
compiled entity (object, category, or protocol). See the "xml" folder for 
instructions on how to browse the .xml files for on-line reading or how to 
convert the files to a print-ready format such as PDF.


Here is a short description of each included example:

aliases
	example of using the alias/3 predicate directive to provide alternative 
	names to inherited predicates in order to improve readability or to solve 
	multi-inheritance conflicts

assignvars
	example of using assignable variables in the context of parametric objects

benchmarks
	simple benchmarks for helping measuring performance of Logtalk message 
	sending between Prolog compilers and for comparing performance of message 
	sending calls with predicate calls in plain Prolog

birds
	bird identification expert system
	(example adopted from the Adventure in Prolog Amzi! book)

bricks
	example of representation and handling of relations using events

classvars
	example of implementation of class variables
	(as found in Smalltalk; i.e. shared instance variables)

dcgs
	examples of using DCG rules inside objects and categories

diamonds
	examples of problems and solutions for the "diamond problem"
	(multi-inheritance conflicts and ambiguities)

dynpred
	example of using some of the built-in database handling methods

encodings
	very simple example of using the new, experimental encoding/1 
	directive (requires Logtalk to be run with the SWI-Prolog compiler)

engines
	example of category composition (importation of categories by other 
	categories) using car engines

errors
	example showing the Logtalk compiler warning and error reporting
	for common programming errors

hello_world
	the unavoidable "hello world" programming example

hooks
	simple example of using compiler hook predicates

inheritance
	examples of public, protected, and private inheritance using both 
	prototypes and classes/instances

instmethods
	example of instance defined methods

lo
	examples adopted from the Francis G. McCabe L&O system

logic
	example of a translator of first-order predicate logic propositions 
	to conjunctive normal form and to clausal form

lpa
	examples adopted from the LPA Prolog++ system

metapredicates
	example of using metapredicates in Logtalk objects

metainterpreters
	some examples of simple metainterpreters

mi
	multi-inheritance examples

miscellaneous
	unsorted examples

modules
	simple example of compiling Prolog module files as objects

msglog
	example of using events and monitors for recording, replaying, and 
	printing user messages

operators
	example of using operators local to objects and categories

parametric
	simple example of parametric objects

poem
	examples adopted from the Ben Staveley-Taylor POEM system

points
	example adopted from SICStus Objects documentation

polygons
	example of representation and handling of relations using events

profiling
	examples of using of events and monitors to implement profilers

puzzles
	several examples of logical puzzles

reflection
	example of a simple class-based reflective system

relations
	objects implementing predicates for dealing with relations and 
	constrained relations between objects

roots
	objects, protocols, and categories needed by most of the other examples;

searching
	state-space searching framework
	(example adopted from Ivan Bratko's "Prolog Programming for Artificial 
	Intelligence" book)

shapes
	geometric shapes implemented as both a prototype hierarchy and a class 
	hierarchy

sicstus
	examples adopted from SICStus Objects documentation

symdiff
	example of using parametric objects to implement symbolic expression 
	differentiation and simplification

viewpoints
	example on how to implement property and value sharing with prototypes