Amzi! inc. ======================================================================== Amzi! inc. (formerly Amziod) is a small software, book and consulting company that specializes in Prolog and Prolog-based applications for both the student and the professional developer. We offer tools for: - Learning Prolog (APT & Adventure in Prolog) - Building Expert Systems in Prolog - Programming in Prolog (Cogent Prolog) - Using Prolog with Hypertext (HyperBase) Each is covered in a following section. Technical support for all products is free and available by phone, FAX, mail, and Internet. All products have a 30-day moneyback guarantee (when returned in resalable condition). Unless otherwise specified, all software products require an IBM PC or compatible and DOS 2.0 or greater with 512kb of RAM. A hard disk is recommended, but dual floppy drives are sufficient. A CGA, EGA or VGA is required if you want to use graphics in Cogent Prolog or HyperBase. NEWS ======================================================================== We are currently working on both a MS-Windows and OSF/1 version of Cogent Prolog and are seeking beta sites. Contact us if you're interested. CONSULTING SERVICES ======================================================================== In addition to products, Amziod also offers consulting, training and contract programming services in a wide variety of areas. Call us for details. TOOLS FOR LEARNING PROLOG ======================================================================== There are two products for learning Prolog, APT--The Active Prolog Tutor and _Adventure in Prolog_. Both cover the same material and have the same philosophic approach. APT is an interactive tutorial with an embedded Prolog interpreter. _Adventure in Prolog_ is a book. Both teach Prolog as a second language, that is, they assume the student has some familiarity with programming but none with Prolog or AI. The approach taken is more practical than theoretical, and through the course of the material and exercises the student will develop four prototype applications. Both tutorials teach standard, Edinburgh Prolog and are compatible with almost all available Prolog language systems. The main teaching application is an adventure game, chosen because it is an excellent showcase for many of the features of Prolog and also makes the learning process a bit more enjoyable. The student exercises lead to development of three other applications, being: - An intelligent genealogical database, - A business application (customer order entry), and - An identification expert system. The teaching philosophy is based on the idea that in order to be a successful Prolog programmer one must understand exactly the mechanics of unification and backtracking. For this reason, the execution behavior of Prolog is carefully explained at each step of the way through detailed traces and diagrams. One user said, "I was greatly struck by your book because it was only after examining your diagrams for cut/0 that I felt I had some understanding of its operation after all." Another commented, "...what I lacked was a visual paradigm; you, of course, provided that..." Because learning is often based on building on the familiar, both APT and Adventure in Prolog spend time showing how to implement conventional control structures in Prolog, so it starts not only with simple logical proofs but predicates to display reports of the results of the proofs as well. The chapters of both are: Getting Started Facts Simple Queries Compound Queries Rules Arithmetic Managing Data Recursion Data Structures Unification Lists Operators Cut (The dark side of the force) Control Structures Natural Language Appendix (Sample code for the four applications) APT--The Active Prolog Tutor ----------------------------------------- APT has a number of unique features that make it an excellent vehicle for learning Prolog. Built-In Interpreter Within APT is a full Edinburgh-standard Prolog interpreter. (It is, however, not a general-purpose interpreter because it can only be accessed through APT.) The interpreter is driven by both the tutorial and the student. The tutorial dynamically drives it to demonstrate the development and use of Prolog code. The student toggles to the interpreter at any time to try out the code developed by the tutorial, to add additional code, to do the exercises, or to experiment in general. All of the student's work is saved from session to session. Multiple Traces APT contains three different Prolog trace mechanisms, all designed to illuminate the workings of Prolog. In contrast to normal Prolog traces, designed for debugging, the APT traces provide more detailed information about variable bindings and backtracking. Two of the traces use multiple windows on the screen at the same time to show various aspects of the running predicate in action. "The information in the tutorial is well organized and clearly presented. Users...will likely appreciate the concise nature of the text and the ability to toggle to the interpreter to try new techniques immediately. The heavy reliance on examples also makes concepts easily comprehensible. APT's approach to teaching Prolog is a good one."-- Bonny Hinners, AI Expert System Requirements Computer Lab Use APT is available in a computer lab configuration that allows multiple students to share a copy of APT on computer lab PCs. "We found APT to be an excellent vehicle for an intense 5-day course in Prolog for a diverse group of professionals."--Dr. Warren Briggs, Chairman Computer Information Systems at Suffolk University APT Single User Version - $75 APT Multiple User Version - (per computer lab) $195 for first PC, $50 each additional PC. Adventure in Prolog ---------------------------------------- It is recommended that the student have access to a Prolog interpreter for working the exercises, although, as Larry O'Brien of Computer Language points out, Prolog is one of the few languages you can program with just pencil and paper. Any Edinburgh-standard interpreter will do, such as the Cogent Prolog Interpreter. By Dennis Merritt, published by Springer-Verlag. ISBN 0-387-97315-X, ISBN 3-540-97315-X. $34 TOOLS FOR BUILDING EXPERT SYSTEMS IN PROLOG ======================================================================== Building Expert Systems in Prolog is a book and disk combination. The book is by Dennis Merritt, published by Springer-Verlag. The disk is available direct from Amziod. Building Expert Systems in Prolog (XSiP) shows how to build a number of prototype expert system shells, describing the technical issues and design decisions involved in each. Sample expert systems are im- plemented using each of the shells. Full source code for the shells is available on an unrestricted basis. Chapter summaries: 1- Introduction--Introduces expert system shells and the features that are found in them. 2- Using Prolog's Inference Engine--Shows how to use Prolog's built-in inference engine as the basis for a simple expert system shell. It adds a user interface that is more expert-system-like than Prolog-like. Use of the shell is illustrated with a bird identification expert system. 3- Backward Chaining with Uncertainty--Shows how to build an EMYCIN-like inference engine with certainty factors. It adds a user interface and a knowledge representation language using English-like syntax implemented with Prolog's DCG support. Use of the shell is illustrated with a car diagnostic expert system. 4- Explanation--Adds "how" and "why" explanation capabilities to both the EMYCIN-like shell and the native Prolog shell. These explain how a conclusion was reached, or why a particular chain of questions is being asked. 5- Forward Chaining--Shows how to implement a basic OPS-like forward chaining (production) system. It uses Prolog terms for knowledge representation and includes the OPS conflict resolution strategies. The use of the shell is illustrated with an expert system that configures living room furniture. 6- Frames--Adds a frame-based (often called objects by AI vendors) knowledge representation scheme with inheritance and demons. The power of the frames is illustrated by using them to re-implement the bird identification expert system without rules. 7- Integration--Builds an integrated system that uses the forward- chaining engine, frame-based knowledge representation, and native Prolog. The three together form a powerful tool set for building a large variety of practical expert systems. The concept is illustrated by re-implementing the furniture configuration expert system with a much cleaner knowledge representation. 8- Performance--Shows how to use indexing schemes to speed up backward- chaining systems, and how to implement a Rete network for improved performance in forward-chaining systems. 9- User Interface--Describes an object-oriented windowing user interface developed in Prolog. It allows menu and window interfaces to be added to the various other programs described in the book. It uses a full message passing and heirarchical structure for describing and communicating with the windows. 10- Two Hybrids--Describes two actual cases studies of expert systems built to install and tune a mainframe database system. Both show the benefits of custom building expert systems, as the knowledge representation language of the systems is designed to map closely to the way the "experts" describe the knowledge. The inference engine is then customized to work using the customized knowledge representation. 11- Prototyping--Shows how to build "quick-and-dirty" prototypes of expert systems for proof-of-concept work, again by modeling the knowledge representation first. The example used is a sales advisor that helps a sales person position a complex technical product for a prospect. 12- Rubik's Cube--For fun, presents a working expert system that will help you unscramble that old Rubik's cube lying on your desk. Appendices--Full source code for all of the expert-system shells described in the book. Optional XSiP disk--Includes running versions of all of the prototypes, all in Edinburgh syntax. They were developed with a variety of Prologs, although most of the implementations are in Cogent Prolog. With minor modifications (usually in the I/O area) they can be ported to any other Prolog. The disk also includes an additional expert system for filling out U.S. tax forms along with an article describing how it was built. Building Expert Systems in Prolog, Dennis Merritt, Springer-Verlag ISBN 0-387-97016-9 ISBN 3-540-97016-9. Book is $47 either direct from Amziod, or your local technical book store. Disk is $35 from Amziod. "I was very impressed. I found the shells described in your book very useful for some of the work I'm trying to accomplish."--a reader's comment TOOLS FOR PROGRAMMING IN PROLOG ======================================================================== Cogent Prolog ------------------------------------ Cogent Prolog is a DOS 16 and 32-bit development system which integrates interpreted (source) and compiled (object) code into a single system. This means: - Code can run in 16 or 32-bit mode without modification. - Interpreted and compiled source code are 100% compatible. Cogent Prolog adheres to standard Edinburgh Prolog, which provides full unification without type restrictions. This is also the same Prolog that is taught by the Active Prolog Tutor, Adventure in Prolog and is defined by Clocksin and Mellish's Programming in Prolog. The Listener Cogent Prolog provides the standard ?- listener as defined by Clocksin & Mellish. This listener allows you to load and run both source and object code. This makes debugging quicker and easier because you can compile each module after it has been debugged. The Developer's Shell Cogent also includes a developer's shell with pull-down menus and pop-up windows that provides an easy to use interface to all the major components of Cogent Prolog. You can interactively add, list and remove code, compile and debug modules, log program execution, edit code (with your own editor) and much more. The Debugger The interactive box-model debugger runs under both the shell and listener. The shell version separates debug and program output into separate windows. The listener version is line oriented. "Box-model" lets you see each of the four entry/exit points to a predicate: call, fail, redo, exit. You can also set breakpoints, examine variables, list the dynamic database, and more. Documentation, Examples and Tutorial The manual has a "Quick Tutorial" that introduces you to all the Cogent tools. Lots of sample programs give you a model to begin with, and the Quick Reference Card is a useful reminder for the predicates. Both the shell and the listener have on-line descriptions of all of the predicates in Cogent Prolog (over 250 of them). The shell also has help on all of the menu commands, including the debugger. The Compiler The compiler generates code modules that can be dynamically loaded at runtime. Cogent Prolog has a "module" capability that allows for reusable code and "hidden" predicates to prevent name collisions across files. Compiled code runs quicker and more efficiently than interpreted code. Compiled code modules may be linked together (using the linker) to form stand-alone applications (.EXE files). These applications can also consult compiled and/or interpreted code as needed. Technical Features Cogent Prolog is a superset of Edinburgh Prolog with over 250 predicates. It includes all these features: + Stream I/O support for both files and text windows. + Definite Clause Grammar (DCG) support. + 'Module' capability for reusable code and 'hidden' predicates prevent name collisions across files. + Floating point, string, graphics, DOS, BIOS and random access binary file I/O support. + User extensible error handling. + Database references for quicker access. + Last call optimization (a more general form of 'tail recursion' elimination). + First argument indexing for more efficient predicate access. + Automatic and on-demand garbage collection of heap, stack and string space for more efficient use of memory. The Architecture The implementation is based on a variation of the Warren Abstract Machine (WAM) architecture which is designed to be portable across various computing environments. Cogent Prolog is an open architecture system which includes the source code for the developer's shell, DCG translator, debugger and help maker. All of these are Cogent Prolog applications and serve as useful examples as well as allow you to modify your environment. The 32-bit engine has its own built-in DOS extender. If you have a 386/ 486 machine, you can use all available memory for program code, data and stacks. When memory is exhausted, the DOS extender will swap to disk, if space is available. Cogent Connections Cogent Connections is a facility which allows you to add your own predicates to the Cogent Prolog runtimes by writing your own 'C' code. This allows you to tailor Cogent Prolog for your specific needs or link in your own libraries or that of another vendor. Packaging There are three products in the Cogent Prolog family. The 16/32-bit Interpreter is intended as a companion to Adventure in Prolog or for experimenting with logic programming and building small programs. It includes the listener, shell, debugger, help, docu- mentation and sample code. $49 The 16/32-bit Compiler & Interpreter is the full, professional development system for developing and running Prolog programs on a single computer. It adds the compiler to the interpreter package. $149 The 16/32-bit Compiler, Interpreter, Linker & Distributable Runtime adds the linker, EXE generator, Cogent Connections and a license for unlimited royalty-free distribution the Cogent 16 & 32-bit runtimes. $248 Upgrades are available from each level to the next. "I am thrilled to have finally found a reasonably priced Edinburgh Prolog compiler for the PC. All of the programs I've ported to Cogent Prolog have run without changes. This is truly a credit to your compiler."--Robert Ryan, Programmer Useful Utilities Tool Box -------------------------------------- The Useful Utilities Tool Box is an add-on product for Cogent Prolog. It contains many routines written in Cogent Prolog which may be used as- is or modified for a particular purpose and used in your programs: Menus- pop up, drop-down, horizontal, vertical Parsing Basic forms system and list selection Formatted Output Microsoft mouse interface Sorting Line/sentence input Dictionary & array maintenance DOS directory manipulation Each module is provided in source and object form for use in either the Cogent interpreter or compiler. Full documentation and examples makes it easy to start using them right out of the box. $39 Techniques & Examples Tool Box ---------------------------------- This Tool Box is a collection of Prolog programming techniques and examples. The techniques can be used out of the box in your own programs. They are: Objects/messages programming system Prolog frames definition The examples can serve as tutorials or starting points for your own programs. They include: Natural language database query front-end An adventure game Forward chaining medical diagnostic expert system Eliza the Psychiatrist Towers of Hanoi and Seven Queens puzzles The Warren Planner Animal guessing game and Go Fish card game Each module is provided with full documentation along with source and object code. $39 HyperBase Tool Box ---------------------------------- The HyperBase Tool Box is a system for integrating Prolog code with hypertext. It includes full source code and can be used standalone or included in your own Cogent Prolog programs. HyperBase is popular with people researching the possibilities of integrating intelligence with hyper documents. For example one publisher used it to enhance an in-depth technology review with a needs- analysis advisor that guided the viewer to the pertinent parts of the document. Conventional hyperlinks were also used to provide multiple organizing structures to the document, such as by function, feature, index, table of contents and issues. HyperDocuments HyperBase documents are ordinary text files with embedded formatting commands to indicate where the pages and chapters are. Your readers navigate your documents using the keyboard and/or a Microsoft mouse. Specified within the text are buttons which are the means by which links are established between different parts of the document. They are used for building tables of contents, indices, multiple viewing paths, and more. For each button you specify Prolog code to execute. This can be source code in the document itself or compiled code that is consulted. HyperBase includes a number of built-in predicates to perform commonly needed functions, for example: Visit a different document, chapter or page Display a PCX graphic image Run a DOS program (e.g. a spreadsheet) Display a message, or prompt the reader Create conditional buttons Guide the reader through the document. The full Cogent Prolog Interpreter, with all of its built-in predicates and capabilities, is embedded in HyperBase. It is also possible to load compiled Cogent Prolog code into a HyperBase document. The integration of Prolog and hypertext offers the opportunity to create documents that can give advice, make recomendations, diagnose problems, analyze needs and more. Practical Limits Documents are stored and accessed on disk, so there is no effective limit on the size of a document. The indices to the documents, however, are stored in memory, so a document is limited by the number of index entries that can be stored in memory. While this is, of course, a limit that depends on a number of factors, it translates to HyperBase being able to handle medium to large documents but not huge ones. System Packaging & Pricing The HyperBase Tool Box includes the hyperdocument developer, reader, encoder, PCX capture utility and PCX button definition facility. It costs $129 and requires BOTH the Cogent Prolog Compiler & Interpreter and the Cogent Prolog Linker & Runtime. ORDERING ======================================================================== Orders can be sent via Internet, slow mail, FAX, or phone. We accept M/C and Visa. PO's are accepted from educational institutions and established companies. Quantity discounts are available on all products. Dealer inquiries are welcome. Orders are usually shipped within one day. Normal shipping in the USA is via UPS, international is via US Air Mail. Shipping charges are as follows: USA--$4 for the first item, $0.75 for each additional item. Canada, Mexico--$5 for the first item, $1.50 for each additional item Europe--$10 for the first item, $3.50 for each additional item All others--$13 for the first item, $5.50 for each additional item USA second day air--$7.50 for first item, 0.75 for each additional item Other express shipping--call us To order, specify the products and prices and add shipping costs as appropriate. Massachusetts residents add 5% sales tax. Amzi! inc. 40 Samuel Prescott Dr. Stow, MA 01775, USA Tel 508/897-7332, FAX 508/897-2784 e-mail amzi@world.std.com