Evaluating Amzi! Prolog + Logic Server


There are a number of resources available for evaluating Amzi! Prolog + Logic Server.

Packaging

Amzi! Prolog + Logic Server consists of these components:

Developer Tools: All platforms include command-line tools for interpreted testing and debugging, and for compiling and linking finished logic-bases The Windows version includes a full graphical integrated development environment.

The Amzi! Logic Server: The Prolog virtual machine, that can be embedded in other application environments.

The Logic Server Interfaces: Interfaces providing natural access to the Logic Server from various languages (C++, Java, Delphi, Visual Basic, C#), the Internet (servlets, COM, CGI, ASP, JSP) and tools (Access, Excel, PowerBuilder). (Users can write their own interfaces as well.)

Logic Server Extensions: Pre-built extensions giving logic-bases direct access to databases, sockets and operating system specific functions. (Users can write their own extensions as well.)

Amzi! Prolog Libraries: Useful functions for XML parsing, list handling, date/time management and tools for cross referencing and performance probing.

Tutorials: Two complete e-books, and product specific tutorials for the development tools and Logic Server.

Documentation and Samples: Full documentation and samples explaining and illustrating all of the above.

Amzi! provides freely downloadable versions that run under Windows, Linux and Sun Solaris 8. It can be custom installed under other versions of Solaris, HP/UX and OpenVMS.

All products offer free evaluation and free academic and personal use. Professional (if you are paid for your time using Amzi!, you need a professional license) licenses include the first years maintenance and support.

Benefits and Features

Application Stories

Prolog is a powerful tool for implementing the business logic which is often at the core of an application. Often that business logic changes rapidly with changing conditions, and the changes are dictated by non-programmers.

These stories show Prolog being used to slash development times, provide solutions that evolve easily, allow business experts direct access to the business logic, and deliver excellent performance.

In each case the Amzi! Logic Server is used to integrate the logic-bases in a broader application context.

These are just a sample of many articles and user stories on the Web site. See customers and articles for more.

Articles and Introductory Documentation

There are numerous articles about Prolog and the Logic Server on the Web site. Here's some recommended highlights.

The full documentation is available on the Web site.

Samples

There are numerous samples included with Amzi!. Descriptions can be reached from the home page of the documentation. Because the samples are designed to illustrated application development, they must, in general, be rebuilt.

Ready-to-Run Samples

We have packaged four of the samples with ready-to-run executable files. You can download a zip archive of these demos. Simply unzip the archive to create a top-level directory named "Amzi! Demos". To run them, follow the instructions for each subdirectory name below. When you are done you can simply delete the directory tree. (Nothing is installed or modified on your PC.)

proxs: This is a classic bird identification expert system with a Delphi user interface. Double-click on proxs.exe to start it. Select File / Open to load 'birds.pxs'. This is a Prolog logic-base. You can view it by selecting Logic-base / Rules. Start the reasoning process by selecting Logic-base / Solve. Click on the characteristics of a bird as each question is asked. When the identification is complete you can use 'How', 'Why Not' and 'Facts' on the Logic-base menu to explore how a particular conclusion was reached, why another conclusion was not reached, and all the facts used during the reasoning process. Help / Contents provides more detailed information.

rubik_multi: This fun application solves Rubik's Cubes puzzles using a C++ graphical interface. It also demonstrates the use of multiple, simultaneous Logic Servers, which is an extremely useful feature for server-based applications. To run it, double-click on CubeMT.exe, then pick File / New which causes new child windows to be created, and each one is associated with a new Logic Server, running in a separate thread. Each child window has an unfolded view of a Rubik's cube and a 'Solve' button. When the button is pressed, the cube is randomly scrambled and then solved. Unfortunately modern PCs are much too quick so you probably won't see these steps. (When we first started solving Rubik's Cubes with Prolog in the 1980's it took 4-5 minutes to solve a single cube on a PC.)

ssched: This is a sports scheduling application with a Delphi user interface. Double-click on ssched.exe to start it. Follow the numbered steps 1 to 8 on the screen to generate balanced, round-robin schedules. This is a simple version of a more complex program that we use to schedule Big East Women's Basketball which has many more constraints (e.g. court availability, balanced home/away and weekday/weekend, TV schedules). The 'Help' button provides detailed information.

wgene: This is the class genealogical application with a database containing English royalty. Double-click on wgenevb.exe to start the program. Select File / Open to load 'england.fam'. This is a Prolog database. The genealogical rules are in gene.pro (and explained in detail under Help / Contents). Click on a person and a relationship to display the results. Applications like this can be used to reason over bills of material, or search for patterns in structured databases.

You can also see intelligent components on the Web by running the Amzi! Website Advisor at www.amzi.com/search. This will run the Amzi! Site Advisor which carries on a short dialog with you about your background and interests, and presents customized recommendations of articles, samples, tools and other resources to explore.

Build-It-Yourself Samples

Amzi! contains over 60 full source code samples that demonstrate every facet of the product. Each sample has a doc.html file that details the steps for building and running it. This section highlights some samples (in addition to the four above) that are of general interest.

Basic Integration — The 'hello' and 'pets' samples use very simple Prolog code to illustrate the use of Logic Server API from various languages, tools and technologies. These samples can be found under the language and technology directories, for example, cpp/hello, internet/cgi/hello and com/vb_pets.

Internet — Calling the Logic Server from ASP, COM, JSP, Java Servlets, CGI and sockets are all demonstrated under the 'internet' and 'com' subdirectories, for example, internet/asp and com/delphi_pets.

Intelligent Applications — The java/ship, prolog/taxes, prolog/ssched and delphi/ssched samples use Prolog to code the intelligence at the heart of each application.

Expert Systems — The prolog/native, prolog/traffic, prolog/proxs are expert systems. The latter has a Delphi front-end in delphi/proxs.

Extending Prolog —The samples in java/pets_callback, cpp/pets_callback, vb/extpred and lsx/xarray show two different methods to create your own extended predicates (written in C++, Java, Delphi, VB, etc.) for Prolog to call.

Database Integration — The ODBC samples show how to use a Logic Server Extension (LSX) to reason over external data: odbc/events is in Prolog, odbc/dbgene has a C++ front-end, and odbc/vbgene has a Visual Basic front-end.

Graphical Front-Ends for Prolog — The four ready-to-run examples employ graphical front-ends. The java/ship sample advises on shipping options. The delphi/eq sample draws mathematical equations.

Natural Language — The prolog/babel sample shows language translation (Japanese, Spanish, English, Latin, German).

Unicode Use — The samples prolog/logic and prolog/babel use Unicode characters to implement formal logic notation and language translation.

Infinite Precision Numbers — The prolog/pi sample calculates pi to any precision.

Puzzles and Games — The prolog/rubik and cpp/win32_rubik_multi samples solve the Rubik's Cube puzzle. The chezray/cap and prolog/money samples solve word puzzles.

Tutorials

These are the tutorials included with Amzi! Prolog + Logic Server.