C/C++ for Expert Systems

Unleashes the power of artificial intelligence

David Hu

Publisher: MIS, 1989, 565 pages

ISBN: 0-943518-86-5

Keywords: Programming

Last modified: May 15, 2021, 7:19 p.m.

Master the concepts and Important program components of expert systems.

Create your own expert systems or shells.

Make C program user-friendly and capable of thinking by using expert system technology.

Make programs intelligent by incorporating rule-of-thumb or heuristic knowledge.

Build frames, rules, and variables in C/C++ to represent expert knowledge.

Introduce uncertainty of knowledge and embed reasoning capabilities into programs.

Each chapter is loaded with sample programs you can tailor to your specific application.

Organized around an inventory control system, this book uses one of the most needed and useful applications to teach you expert systems.

Includes LISP and Prolog utility programs in C.

  • Section I: C/C++ and Expert System Fundamentals
    1. Fundamentals of Expert Systems
      • Basic Concepts
      • Knowledge Base
        • Rules
        • Frame or Units
        • Logic
      • Inference Engine
        • Forward Chaining
        • Backward Chaining
      • Man-Machine Interface
      • Uncertainty of Knowledge
      • Summary
      • References
    2. Object-Oriented Programming Concepts and C++ Fundamentals for Expert System Development
      • Becoming Familiar with Smalltalk's Environment
        • Smalltalk Expressions and Their Evaluation
          • Objects
          • Messages and Methods
          • Variables
        • Programming Classes and Methods
          • Definition of Classes
          • Magnitudes
          • Collection
          • Dictionary
          • Bag and Set
        • Emulation of Class and Method  Structures for Expert Systems in C/C++
      • Overview of C++ Features for Expert System Development
        • Program Organization
          • Header and Implementation Files
          • Comments
        • LISP-like Functions
          • Enumeration Names
          • Void
          • Listing 2.1: Menu-Driven Applications
          • Function Prototype
          • Overloading of Function Names
          • Default Arguments, Reference Parameters in a Function, and Unspecified Numbers of Parameters in a Function
        • Object-oriented Programming Concepts
          • Classes and Data Encapsulation
          • Structure of a Class
          • Listing 2.2: A Sample Program Including "Public" Data
          • Listing 2.3: A Sample program to Show Inheritance
          • Listing 2.4: A Sample Program in Which a Member Function is Declared for a Given Class
          • Listing 2.5: Initializing Classes with a Class
          • Constructors and Destructors
          • Nesting and Initializing Classes
          • Friends
          • Static Members
          • Creating Subclasses (Derived Classes)
          • Initializing a Subclass with a Parent Class Constructor
          • Listing 2.6: Initializing a Subclass with a Parent Class Constructor
          • Virtual Functions and Plymorphism
      • Summary
      • References
    3. Using C/C++ in Expert System Development
      • Advantages of Using C/C++ in Expert System Development
        • The Development and Strengths of C
        • What Expert Systems Need from C
        • The Development Phase
        • The Commercial Implementation Phase
        • The Development and Features of C++
          • Summary of C++ Features
      • Distinctive Expert System Programming Concepts
        • Getting Users Involved Early
        • Identifying Functional Areas for Building Prototypes
        • Establishing Requirements for Rapid Prototypes
        • Obtaining and Testing the First Cut and Iterating Improvements
        • Stressing the Purpose of Prototypes
        • Maintaining a Small Prototyping Team
      • Design Rules
        • Modularity
        • Object-Oriented Programming
        • Simple Inference Engine
        • Redundancy of Knowledge
        • Good Man-Machine Interface
      • Summary
      • References
  • Section II: Expressing Languages and Tools for Expert Systems/Artificial Intelligence in C/C++
    1. Utilities for LISP
      • Becoming Acquainted with LISP
      • Program Structure
      • List Operations (LISP Functions That Can Be Emulated with C/C++)
        • Assign Values: setq, psetq, set
          • setq
          • psetq
          • set
        • Take Lists Apart: car, cdr, and Their Derivatives
        • Construct and Display : list, append, cons
        • Reorganize Lists: member, reverse, length, subst, etc.
        • Predicates; atom, listp, null, numberp, eq, eql, equal, and, or, not
      • C/C++ Utility Functions for List Operations
        • car and cdr
        • Append and Cons
        • Member, Length, Nth, Reverse, and Subst
        • Copy_list, push, and killcons
        • Lread, Lprint (Reading and Printing in S_expressions)
      • Sample Conversions from LISP to C/C++: Substitution
          • Listing 4.3: Substitution — A Sample LISP-C Conversion Program
          • Listing 4.4: The LISP Code for Substitution
      • Summary
      • References
    2. Utilities for Prolog
      • Becoming Acquainted with Prolog
        • Declaring and Querying Facts
          • Constants and Variables
          • Structures (Compound Predicates)
        • Instantiation and Backtracking
        • Adding Comments to the Program
        • Adding Rules to the Database
        • Arithmetic Operations
        • Writing Programs
        • Displaying All Clauses
        • Input/Output
          • Saving and Loading Source Files on Disk
          • Running Large Prolog Programs
          • Input and Output of Data
          • Input and Output of Single Characters
        • Modifying the Database
          • Adding Clauses: asserta, asser, and assertz
          • removing Clauses: retract
        • Writing LISP Functions in Prolog
        • Cut Operator in Backtracking
      • Prolog Utility Functions in C/C++
        • Unification in C/C++
          • Listing 5.1: Unification in C for Prolog
        • Backtracking
          • Listing 5.2: Backtracking Program
      • Summary
      • References
    3. Expert System Tools and C/C++
      • Facilities Available in Tools
        • Debugging Aids
        • Input/Output Menus
        • Editors
        • Explanation Processors
      • Range of Tools
      • Tools Available for Personal Computers
        • Transferability of PC Tools
        • Sophistication of Tools
        • Knowledge Acquisition Requirements
        • Language Tools Based on C/C++
      • Tools for Special-Purpose Workstations
        • Specific Tools
        • Hybrid Tools
        • Aids to System Building
      • Summary
      • References
  • Section III: Programming Expert Systems in C/C++
    1. Building Knowledge Representation Language Structures
      • Building Frame Structures
        • Fundamental Assumptions
        • Advantages/Disadvantages
        • Methods to Design Frame Structure
          • Class
          • Unit (Entity)
          • Slot and Inheritance
        • Implementation of the Frame Structure with C++
          • Inventory Control System — An Example
          • ICS Frame Representation in C++
          • Listing 7.1: The Inventory Control System Class Structure in C++
          • Listing 7.2: The ICS Class Constructors and Member Functions
          • Listing 7.3: Main Program to Define Slots and Test Knowledge Representation
      • Building Rule Structures
        • Fundamental Assumptions
        • Advantages and Disadvantages
        • Methods to Implement Rule Structures
          • Listing 7.4: Sample Program for the Rule Structure
        • The Inventory Control System Example
        • Meta Rules
      • Building Logic Structures
        • Methods for Implementing Logic Structures
          • Listing 7.5: Program for Logic Structure (Unstructured Fact Base)
        • Assert, Stash, and Lookup
      • Summary
      • References
    2. Building an Inference Engine
      • Designing an Inference Engine
      • Forward Chaining
        • Implementation of a Simple Chaining Form
          • Listing 8.1: A Sample C Program for Forward Chaining
        • Enhancement of the Simple Forward Chaining Form
      • Backward Chaining
          • Listing 8.2: A Sample Program for Backward Chaining
          • Listing 8.3: A Sample Program for Achieve
          • Listing 8.4: A Sample Program for Forwardtracking
          • Listing 8.5: Sample Programs to Search the Knowledge Bases of the Inventory Control System
      • Justification
      • Search Strategy
        • Depth-First Search
        • Breadth-First Search and Best-First Search
      • Summary
    3. Incorporating User Interface and Uncertainty of Knowledge
      • Overview of User Interface
        • Semi-Natural or Fully Natural Language Interfaces
      • User-Interface Options
        • Simple Input/Output Utilities
          • Listing 9.1: Sample Program to Read LISP Expressions
          • Listing 9.2: Sample Program to Print Output in LISP Fashion
          • Listing 9.3: Sample Program for Querying the Inventory Control System
        • The Mouse Operation
        • The Window Operation
          • Listing 9.4: Sample Program for Creating Windows
        • The Menu Operation
        • Natural Language Front Ends
        • Voice Recognition and Synthesis, Video Display, and Other User Conveniences
      • Dealing with Uncertain Knowledge
        • Theoretical Approaches
        • Implementation of Uncertainty in C
          • Examples
          • Listing 9.5: Sample Program to Compute Minimum Certainty
      • Summary
      • References
    4. Making C/C++ Library Structure for Expert Systems
      • The Library Syntax
        • KEYS-and-VALS
      • Summary of Commands
        • Summary of Library Functions
          • Object Manipulation
          • Reasoning
          • Natural Language
          • File Interaction
          • Special Applications
      • Object Manipulation
      • Reasoning
      • Natural Language
      • File Interaction
      • Special Applications
      • Summary
      • References
  • Section IV: Expert Systems Applications
    1. Expert Systems Applications and Approaches
      • Tasks in Which Expert System Technology May be Helpful
        • Control/Monitoring
        • Debugging
        • Design
        • Diagnosis
        • Instruction
        • Interpretation
        • Planning
        • Predication
      • Two Case Studies: XCON and DELTA
        • XCON
        • DELTA
        • Feature Comparison
          • Basic Features
          • Development Cost
          • System Performance
          • User Reaction
          • System Maintenance and Improvement
      • Expert System Limitations and Difficulties
      • Expert System Development Rules
        • Hardware Requirements
      • Application Selection Rules
      • Applying Expert System Technology to Improve Software Programs
        • Expert Systems As Intelligent Users
        • Intelligent Representatives
        • Intelligent Probers
        • Natural Language Interfacers
        • Natural Language Text Analysts
      • Summary
      • References
    2. Building and Delivery of Expert Systems
      • A General Procedure for Building Expert Systems in C/C++
      • Structuring the Inventory Control System (ICS) Problem
      • Rapid-Prototyping the ICS with IQ-200
          • Listing 12.1: A Sample Program for the Inventory Control System Prototype Using IQ-200
        • Defining User-Interface Options
        • Creating Hosts/Knowledge Sources
      • Converting ICS to C/C++
      • Issues of Expert System Delivery
        • User Friendliness
        • Convenience (Compatibility with the Working Environment)
        • Usefulness of Products
        • Maintenance
        • Training
      • Summary
  • Appendices
    1. IQ-200: Technical Summary
      • What Is IQ-200?
        • Data Integration
        • Rule-Based Reasoning
      • Functionality Overview
        • Integration of Database 
        • Logic-Based Approach
        • Knowledge and Data Representation
          • Object-Oriented Frames
          • Knowledge Sources
          • Predicate fact Base
          • Rule Base
        • Reasoning System
        • Communication System
        • User Interface
        • Interface to Other Programs
      • Example
      • System Requirements
    2. LISP Functions That Are Similar but Too Complex to Emulate in C/C++
      • Arithmetic Operations and Predicates
        • Arithmetic Operations
        • Arithmetic Predicates
      • Evaluation and User-Defined Functions: eval, apply, mapcar (apply-to-all), defun, lambda
      • Conditional Actions: cond, if, ifn, when, unless, case
      • Recursion
      • Iteration and Binding: prog, do, let, value
        • prog, prog1, prog2, and progn
        • do and do*
        • Binding Variables: let and let*
        • Values
      • Input/Output: print, princ, prin1, pprint, terpi, format, backquote, read
      • Macros and Other Programming Conveniences: defmacro
        • Lambda List Keywords: &rest and &optional
      • Declaring Global Variables and Name constants — defvar, defparameter, defconstant, declare, proclaim
      • Creating Record Structures: defstruct
      • Message Passing (Object-Oriented Programming): send, funcall
    3. Expert Systems and Tools
      • General Discussion
        • Tools for IBM Personal Computers
          • APES 1.1
          • ES/P Advisor
          • Experttech
          • Expert-Ease
          • EXSYS 3.0
          • GCLIPS and Goldworks
          • Guru
          • INSIGHT-1 and -2
          • IQ-200
          • KDS
          • KES
          • Micro-Expert
          • M.1
          • muLISP
          • Prolog-86
          • PROLOG-1 and -2
          • Personal Consultant
          • RuleMaster
          • Smalltalk-AT
          • Smalltalk/v
          • Turbo Prolog
          • VP-Expert
          • XSYS
        • Tools for the Apple Macintosh
          • ExpertOPS5
          • MacKIT Level 1
        • Tools for IBM and Macintosh Computers
          • OP5S5+
          • NEXPERT
        • List of PC Tools and Systems
          • PC Tols
          • PC Expert Systems
        • List of Frequently Mentioned Tools and Systems
          • Tools
          • Expert Systems
    4. Selected Expert System Companies
      • Publishers
    5. Glossary for Expert Systems
  • Bibliography
    • C++
    • Expert Systems: Magazines and Journals
    • AI/Expert Systems: Selected Books and Articles

Reviews

C/C++ for Expert Systems

Reviewed by Roland Buresund

Disappointing *** (3 out of 10)

Last modified: May 21, 2007, 2:56 a.m.

You don't want this. It doesn't even begin to live up to the title.

Comments

There are currently no comments

New Comment

required

required (not published)

optional

required

captcha

required