IF/Prolog V5.x Overview
MINERVA superseeded IF/Prolog.
Please see
http://www.ifcomputer.co.jp/MINERVA
for details.
We discontinued to sell IF/Prolog Dec 31. 2003.
Dedicated technical support for IF/Prolog ended Dec 31 2008.
This site is maintained as a community service only.
Roll Cutting System using IF/Prolog
Declarative Language: Prolog
Prolog is a high-productivity "declarative" programming language.
Compared with "imperative" programming languages like Pascal and C,
where programmers usually implement procedures with machine oriented
concepts, Prolog programmers work less with implementation level
concepts. Prolog programmers typically concentrate on the description
of their application, using notions of the conceptual level of the
target domain.
For example, Prolog does memory management automatically, freeing the
programmer from this error-prone task. Instead of low-level pointers,
in Prolog you always work with expressive names. Search, pattern
matching, and generation of alternative solutions are built into Prolog
and provide basic but powerful problem solving mechanisms. IF/Prolog
does even more: Efficient data structures like binary trees and hash
tables are generated automatically. Thus, IF/Prolog preserves the easy
-to-understand and productive linear view to the programmer while
achieving high execution performance and scalability.
As a result, Prolog programs follow more closely the problem solving
process of the domain specialist. Your programs become more concise,
easier to maintain, and have shorter idea-to-market cycles.
The outstanding ease-of-use of Prolog allows to get partial solutions
up and running on the computer in a short time frame. Prolog encourages
what is called "incremental prototyping" where code is gradually fleshed
out in a clean top-down manner over a period of time. Rather than
throwing away a prototype and re-writing the final program from scratch,
incremental prototyping saves development time and allows continuous
user feedback, an indispensable quality for innovative applications.
In short, Prolog is a programming language of choice that gives you
the flexibility and precision of a full fledged programming language,
while shielding you from low level machine concepts and mundane coding
and optimization tasks. IF/Prolog combines outstanding programmer
productivity with excellent execution performance.
IF/Prolog for Industrial Applications
IF/Prolog is an advanced Prolog engineered for use in industrial and
commercial environments. You find IF/Prolog in everyday use in many
real-world applications worldwide, in expert systems and 'traditional'
applications. Companies are using IF/Prolog for its advanced problem
solving cababilities as well as simply for its programmer convenience
and productivity as a general purpose language.
For example IF Computer Japan, under contract with TODA Construction
Co. Ltd., developed a centralized process control system for below
sea-level tunnelling in Tokyo.
This system identifies problems of the
on-going drilling and potential dangers and calculates reaction
options in real-time.
In Germany, the Postal, Telegraph and Telephone Department contracted
InterFace Computer GmbH to develop
a knowledge-based system for configu-
ration and sales support of telephones
in the nation wide PTT outlets.
this system enables customers to evaluate, among many combinations and
optional functions, a selection which best suits the customer.
Some other examples of IF/Prolog based systems:
Railway Station Dynamic Scheduling
Oil Exploration Process Monitoring
Turbine Vibration Diagnosis
Cold Forging
Construction Robot Path Planning
Airport Environment Control
Polymer Design
Spectacle Design
ASIC Design Verification
Solid Modelling CAD Data Conversion
COBOL Program Maintenance
Software Customer Support
Life Insurance Risk Analysis
Stock Trading
Wide Spectrum of Supported Platforms
IF/Prolog is available for PCs, workstations, supercomputers,
and some special purpose systems. IF Computer regularly supports new
machines before they become available to the general public.
IF/Prolog allows you to select the best possible machine for your
application purpose, and to move to a better platform as soon as it
becomes available in the market. If you have to plan with an extended
product life cycle with several different execution environments, the
savings in porting cost alone may justify the selection of IF/Prolog,
since compatibility is already built into IF/Prolog.
Processors: Alpha, HPPA, MIPS, 80x86, Pentium,
Power, SPARC, 68K, 88K, others
Operating Systems:
all major UNIX, Windows
Compliance with Standards
IF/Prolog V5.0 complies fully with the ISO Prolog Standard, Part1.
Both Siemens AG and IF Computer are active
in the DIN, JIS and ISO standardization process.
IF/Prolog is implemented in a highly portable subset of C. Quality
control complies with ISO 9000.
SNI and IF Computer work together with other leading Prolog vendors
in the Prolog Management Group (PMG).
Constraint Technology Package(Option)
The Constraint Technology Package introduces an industrial grade
``constraint based reasoning'' problem solver into IF/Prolog. This
allows IF/Prolog applications to address difficult combinatorial
problems like resource allocation, such as dynamic vehicle scheduling
for airlines or railways, production planning and crew rostering.
The combination of Prolog and Constraint Technology allows to address
more complex operations research problems which are difficult for a
pure Prolog problem solver. As constraint handling limits the search
space, the search for the solution becomes much more efficient.
On the other hand, constraint programming benefits from programming
in Prolog with all its well understood advantages over less well-
established special purpose languages.
The IF/Prolog Constraint Technology Package handles big integers and
rationals, coroutines, numeric constraints, finite domains and boolean
constraints.
For details, please see "IF/Prolog V5.0 Constraint Technology Package".
High Level Interface to GUI Tools (Option)
IF/Prolog for UNIX provides interfaces to GUI develop-
ment tools
First, using this interface, you can do your development work
itself in a friendly window based environment, complete with on line
help, extensive programming aids, and visual control.
Second, you can write the graphical user interface for your application
directly in Prolog. The comfort and benefit of Prologs incremental
development, automatic memory management, names instead of pointers
comes fully to bear when you work with the fairly complex dynamic data
structures of sophisticated user interfaces.
Graphical development in Prolog is considerably easier than in C or
C++; windowing events can be synchronized by using the interactive windows
-based debugger. Furthermore, the GUI code need not be relinked, saving
a considerable amount of time for each test cycle, as source files may
be simply reconsulted.
IF/Prolog offers optionally:
Interface to OSF/Motif
Direct Access to Databases
For the purpose of more extensive development, many commercial standard
database systems can be directly accessed from IF/Prolog in conjunction
with the following database interface options:
for UNIX: SQL Relational Database
(Oracle, Informix, Ingres, etc)
for Windows : MS Access, etc
through DDEML interface, COM interface or ADO
Interfaces to SQL Relational Database are provided as options.
Interfaces to DDEML, COM and ADO are included in the Windows versions.
Java Interfaces (only for version 5.3)
Analogous to the C interfaces, a flexible bi--directional interface to Java enables IF/Prolog programs to be embedded as a software component for modern application development. IF/Prolog may either be called via a Java Class or may include Java implemented predicates.
(At present version 5.3 with Java Interface is available only for Windows version.)
Flexible C Language Interfaces
A flexible bi--directional interface to C and C++ enables IF/Prolog
programs to be embedded as a software component that either initiates
C procedures or enables Prolog to act as an intelligent server. C++
class definitions can not be handled. There are several notable
features which make IF/Prolog stand out when it comes to serious appli-
cation development:
- Full interaction with the operating system
the operating system (OS) is easily accessible from both C and Prolog.
Prolog may then be used to control command parameters, pipes, files
and other OS-- or user-- defined stream types.
- A two level C-> Prolog interface enables
the programmer to either pass Prolog goals as C--strings which are
then parsed, or to efficiently build up, in the systems internal
representation, structures using a pre--defined set of macros.
- Prolog ->C interface allows
deterministic or resatisfiable predicates to be defined as C routines.
These predicates can be as efficient as IF/Prologs own built--in
predicates.
- C and Prolog together: Prolog and C code may be
freely inter--mixed and used both recursively and in generate--test
combinations.
- C predicates in modules: C routines may be assigned to modules
which can then be incorporated as freely into large applications as
modules written in Prolog.
- No limits: There are no size restrictions placed on
data which can be exchanged between C and Prolog as garbage collection
and memory expansion may take place transparently, even during the
execution of C routines.
Socket Support
Internet Sockets - IF/Prolog can be embedded into applications which
interact with the internet. Internet socket support allows the programmer
to develop intelligent services for the internet market.
Client Server Applications - The comprehensive socket support also
enables the easier development of more traditional client-server
applications. Builtin predicates support the polling of multiple
streams, which may be overlayed across socket connections enabling
transactions and requests to be passed efficiently between
client and server.
Easy-to-use IF/Prolog Engine
The IF/Prolog kernel is a state--of--the--art Prolog engine that
- Incremental Optimizing Compiler -- the compiler allows
incremental compilation, decompilation and loading of compiled code
while implementing full argument indexing and shallow backtracking
for all predicates. Further source--to--source and low level
optimizations are applied to compiled non--modifiable static predicates.
- Compiler/Interpreter -- as the IF/Prolog Compiler compiles in units
of files, it is as easy to use as an interpreter. Compile time for the
preparation of final programs is remarkably short.
- Efficient and Flexible Memory Management -- all data
areas are fully garbage collected and re--sized transparent to the user
application. This is on an individual and combined basis that maximizes the
applications--time of the execution, as is an essential requirement for
real time systems.
- As of version 5.0, garbage collection also operates during the execution of
C--defined, user predicates, removing many of the size limitations on atoms
and structures.
- Predicate Based Module Concept -- new for version 5.0 the
module concept has been redesigned to support data hiding and
meta--programming in a modular way. Foreign language predicates may also be
incorporated into specific modules and imported / exported.
Full Asian Language Support
IF/Prolog programs and data can process and consist of any combination
of single byte and multi byte characters.
Thus, programs, knowledge bases and data can be written in Asian
languages such as Japanese, Korean and Chinese.
Edinburgh syntax
The strict ISO standard syntax requirement can be relaxed in favor of
the Edinburgh syntax, to incorporate existing application code and
public domain Prolog libraries.
Other Features
- Friendly Debugger -- The IF/Prolog Debugger permits programmers
to follow the exact step-by-step execution of the program at variable
levels of depth. Breakpoints can also be placed at arbitary points in
the code.
- Application Profiling -- The new profiler determines how much time is
spent in each predicate during your programs execution. The profiler
can be used to profile both entire applications and individual goals.
- Signal handling - IF/Prolog can react to operate upon signals from the
operating system and fully interact as a system process.
Customer oriented licencing
- Single CPU Licence -- IF/Prolog is licensed to a single computer,
without user limitation.
- Runtime Licence --
Program components programmed in IF/Prolog can be "canned" into
applications. The customer and/or user of the application may not need
to know that IF/Prolog is used inside. IF/Prolog contains the tools to
create stand-alone applications, and a low-cost runtime licensing
scheme is available to software developpers for in-house deployment
and resale.
User Support
IF/Prolog comes complete with software media, English or Japanese
documentation and 6 month free maintenance.
Maintenance includes telephone/facsimile/e-mail hotline support as well
as (upon request) updates at a new release of IF/Prolog or of the
operating system. A maintenance contract extends the maintenance period
(Not available for IF/Prolog for Windows NT).
Educational and volume discounts are available.
Individualized Training and Consulting Services
IF Computer provides courses on knowledge engineering and Prolog
programming from elementary to advanced levels, including a lot of
practical programming examples. Courses and workshops tailored to
customers' needs are also provided: IF/Tutorial.
IF Computer designs and realizes expert systems and other advanced
custom made software solutions in cooperation with client companies:
IF/Projects.
Developed by Siemens
IF/Prolog is developed by Siemens AG, a multinational company
of Germany. IF Computer operates distribution and support centers in
Germany, Japan, U.S.A. and Hong Kong.
Up
read on...