[comp.ai] Student versions of OPS5

ahmed@alberta.UUCP (Ahmed Mohammed) (03/04/88)

Computer Thought Corp. has begun shipping students versions
of the expert system lang. These are operational on IBM PC/XT/AT
on one 5.25'' floppy drive
The system should accomplish for rule-based systems what
Borland's Turbo Prolog has already accomplished for logic
programming: mass distribution and increased public understanding.

The package costs $255 for Graduate student version,
$90 for undergraduate version.

goebel@alberta.UUCP (Randy Goebel) (03/08/88)

It's nice that software is made available for students at reduced prices,
but I'm a little worried that the OPS5 system would do what Turbo-Prolog
does...Turbo-Prolog is just plan bad, and anyone who uses Turbo-Prolog
as a method of understanding Prolog is doing damage to their logic
skills.  OPS5 is procedural, so maybe you will all be better off?

srt@aero.ARPA (Scott R. Turner) (03/09/88)

In article <1115@pembina.UUCP> goebel@pembina.UUCP (Randy Goebel) writes:
> OPS5 is procedural, so maybe you will all be better off?

In what way is OPS5 procedural?  

At any rate, there have been various cheap rule-based expert system
tools available on PCs for quite some time.  I don't think a $250
version of OPS5 is going to start any big revolution.  Especially
since OPS5 is somewhat dated even when fully implemented (Rete), and
most micro versions of OPS5 aren't complete implementations.  Indeed,
I don't think the Vax version uses Rete (at least, it allows
calculations in the LHS).

					-- Scott Turner

morus@netmbx.UUCP (Thomas M.) (03/11/88)

In article <1110@pembina.UUCP> ahmed@alberta.UUCP (Ahmed Mohammed) writes:
>Computer Thought Corp. has begun shipping students versions
>of the expert system lang. These are operational on IBM PC/XT/AT
>The package costs $255 for Graduate student version, 
>$90 for undergraduate version.

I would like to know about the capabilities of the above mentioned versions
of OPS5.
Are there any substantial differences between the "expensive" and the "cheap"
version ? I think it is not really the same price-politics as Borland's -
255 $ is not a "Pappenstiel" for a student.
 
By the way: All of you, who helped me with my request for a PC-public domain
OPS5-version - thank you very much*. I have now available a few common-lisp
sources (each about 100KB big) which I will try to convert to a PC-runnable
version in the near future. There will be - I suppose - some difficulties
to adapt the sources to PC-Scheme or XLISP. If anybody had experience with
porting code from CL to XLisp or Scheme, I would like to contact you for
an explanation for some of the more annoying transformations.
 
* I will summarize later!
 


Please - no e-mailing of long files to the above adress (..netmbx..)!
 
For e-mailing of sources etc. please use my BITNET-adress:
 
           muhrth@db0tui11.BITNET
 
Thank you very much,
  Thomas Muhr.
-- 
@(^o^)@   @(^x^)@   @(^.^)@   @(^_^)@   @(*o*)@   @('o`)@   @(`!')@   @(^o^)@
@  Thomas Muhr    Tel.: (Germany) 030 - 87 41 62    (voice!)                @
@  NET-ADRESS:	  muhrth@db0tui11.bitnet  or morus@netmbx.UUCP	            @   
@  BTX:           030874162                                                 @

morus@netmbx.UUCP (Thomas M.) (03/15/88)

In article <26695@aero.ARPA> srt@aero.UUCP (Scott R. Turner) writes:
>In article <1115@pembina.UUCP> goebel@pembina.UUCP (Randy Goebel) writes:
>> OPS5 is procedural, so maybe you will all be better off?
>
>In what way is OPS5 procedural?  
Maybe the intended meaning of 'procedural'in this case is 'opposite
of decalarative', which is true for OPS5. You define Condition-Action
pairs - the facilities for structured object representations are very
limited. Furthermore there is no way of accessing the rule-definitions at
}irun-time - because of the compilation, which makes OPS5-based systems the 
fastest (and therefor biggest) rule-based systems available (as far as I know).
This absence of sources at run-time restricts the expressional power of
OPS5 - no comfortable way of generating explanations, changing the control
flow schemes explicitely and centralized.
'Procedurally' is definitely the activation of external procedures in the
RHS - there are high chances of implicitely injecting a procedural style.

>
>At any rate, there have been various cheap rule-based expert system
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>tools available on PCs for quite some time.  I don't think a $250
Which are these????

>I don't think the Vax version uses Rete (at least, it allows
I think it uses Rete-match, although I'm not sure. I have been working
with VAX-OPS5 for some time but have never found anything mentioning the
RETE-Match. 
But because of the linearity of runtime-rulenumber relation there should
be a precompilation similar to Rete. Who knows definitely?

---- Thomas Muhr
-- 
@(^o^)@   @(^x^)@   @(^.^)@   @(^_^)@   @(*o*)@   @('o`)@   @(`!')@   @(^o^)@
@  Thomas Muhr    Tel.: (Germany) 030 - 87 41 62    (voice!)                @
@  NET-ADRESS:	  muhrth@db0tui11.bitnet  or morus@netmbx.UUCP	            @   
@  BTX:           030874162                                                 @

) (03/16/88)

  In article <26695@aero.ARPA> srt@aero.UUCP (Scott R. Turner) writes:
> I don't think the Vax version [of OPS5] uses Rete (at least, it allows
> calculations in the LHS).
 
  In fact, VAX OPS5 uses the high-performance compiled Rete, first used
  by OPS83, wherein each node in the network is represented by machine
  instructions.  This makes it easy for the compiler to support inline
  expression evaluation and external function calls in the LHS.

	Bill Barabash
	DEC AI Advanced Systems & Tools
	barabash@rachel.dec.com

srt@aero.ARPA (Scott R. Turner) (03/17/88)

In article <1501@netmbx.UUCP> muhrth@db0tui11.BITNET (Thomas Muhr) writes:
>I have now available a few common-lisp
>sources (each about 100KB big) which I will try to convert to a PC-runnable
>version in the near future.

It should be possible to write an OPS5-like language in a lot less than 
100K.  The only difficult part of OPS5 to implement is the RETE algorithm.
Throw that out, ignore some of the rules for determining which rule out 
of all the applicable rules to use (*), and you should be able to implement
OPS5 in a couple of days.  Of course, this version will be slow and GC 
every few minutes or so, but those problems will be present to some extent
in any version written in Lisp.

(*) My experience is that most OPS5 programmers (not that there are many) 
ignore or actively counter the "pick the most specific/least recently used"
rules anyway.

					-- Scott Turner

srt@aero.ARPA (Scott R. Turner) (03/26/88)

In article <8803161533.AA03130@decwrl.dec.com> barabash@midevl.dec.com (Digital has you now!) writes:
>
>  In article <26695@aero.ARPA> srt@aero.UUCP (Scott R. Turner) writes:
>> I don't think the Vax version [of OPS5] uses Rete (at least, it allows
>> calculations in the LHS).
> 
>  In fact, VAX OPS5 uses the high-performance compiled Rete, first used
>  by OPS83, wherein each node in the network is represented by machine
>  instructions.  This makes it easy for the compiler to support inline
>  expression evaluation and external function calls in the LHS.

My understanding of the Rete algorithm (and admittedly, I don't have
the paper at hand) was that speed was obtained by building an
immediately executable tree of database checks.  In essence, a
compiled D-Net based on the contents of WM.  So the speed increase
isn't merely because you compile the LHS of all the rules (at some
level every language represents things as machine instructions, after
all), but because the Rete algorithm builds a discrimination tree that
efficiently orders the tests and guarantees that a minimum number of
tests will be taken to determine the applicable rules.  Much of OPS5's
conflict resolution strategy falls directly out of Rete, I think, in
the order in which applicable rules are found.

So, can executable functions be included in the LHS without ruining
this scheme?  I'd say no, with reservations.  At the very least, two
rules with an identical function call in the LHS will result in the
function being executed twice (since the compiler can't guarantee that
the function doesn't have a side-effect which will change its result
between different invocation with identical arguments).  So, in the
Rete scheme, if two rules have an identical WM check in the LHS, that
check is made only once each cycle of the OPS5 machine.  If they have
an executable in the LHS, that gets executed twice.  If you allow
functions which can change WM to exist in the LHS, things get much
worse. 
					-- Scott Turner

morus@netmbx.UUCP (Thomas M.) (03/26/88)

In article <27336@aero.ARPA> srt@aero.UUCP (Scott R. Turner) writes:
>In article <1501@netmbx.UUCP> muhrth@db0tui11.BITNET (Thomas Muhr) writes:
>>I have now available a few common-lisp
>>sources (each about 100KB big) which I will try to convert to a PC-runnable
>>version in the near future.
>
>It should be possible to write an OPS5-like language in a lot less than 
>100K.  The only difficult part of OPS5 to implement is the RETE algorithm.
>Throw that out, ignore some of the rules for determining which rule out 
>of all the applicable rules to use (*), and you should be able to implement
>OPS5 in a couple of days.  Of course, this version will be slow and GC 
>every few minutes or so, but those problems will be present to some extent
>in any version written in Lisp.

Right, but after all the proposed deletions this code would hardly cover 2
pages. Leaving Rete-match out is not just affecting run-time (the decrease
in performance is incredible!) - but it would eliminate all features which
make OPS5 an interesting language - mainly the heuristics for selecting
rule-instantiations intelligently. 
>
>(*) My experience is that most OPS5 programmers (not that there are many) 
                                Is this right ? ---^^^^^^^^^^^^^^^^^^^^^^
>ignore or actively counter the "pick the most specific/least recently used"
>rules anyway.
Well, it would be fine to have a little more influence on conflict-resolution
strategies - but the mentioned ones are very important: 
Default strategies via "specifity", controlling loops via "recency" are very
powerful features.
Ignoring these mechanisms means that they have chosen the wrong paradigm.

-------- Thomas Muhr

Knowledge Based Systems Group
Technical University of Berlin
-- 
@(^o^)@   @(^x^)@   @(^.^)@   @(^_^)@   @(*o*)@   @('o`)@   @(`!')@   @(^o^)@
@  Thomas Muhr    Tel.: (Germany) 030 - 87 41 62    (voice!)                @
@  NET-ADRESS:	  muhrth@db0tui11.bitnet  or morus@netmbx.UUCP	            @   
@  BTX:           030874162                                                 @

srt@aero.ARPA (Scott R. Turner) (03/31/88)

In article <1580@netmbx.UUCP> morus@netmbx.UUCP (Thomas Muhr) writes:
>In article <27336@aero.ARPA> srt@aero.UUCP (Scott R. Turner) writes:
>>It should be possible to write an OPS5-like language in a lot less than 
>>100K.  The only difficult part of OPS5 to implement is the RETE algorithm.
>
>Right, but after all the proposed deletions this code would hardly cover 2
>pages. Leaving Rete-match out is not just affecting run-time (the decrease
>in performance is incredible!) - but it would eliminate all features which
>make OPS5 an interesting language - mainly the heuristics for selecting
>rule-instantiations intelligently. 

Actually, I think specificity and recency are fairly easy to
implement.  (Without using Rete, that is...)  Specificity simply means
you have to keep your rule database ordered.  That's simple enough to
do.  Recency is a little bit harder.  The "obvious" execution cycle is
to fire the first available rule.  To do recency, you have to keep the
fact database ordered by recency (easy) and then find the first rule
that fires on the first fact (and so on down the fact database).
That's not particularly hard to do.  I suspect OPS5 (with specificity
and recency) could be written in a couple of pages of Prolog.

The point is, if you just want a student version of OPS5 - something
to play around with - then you don't need all the Rete trappings.
They can be easily (and inefficiently) duplicated.

>>(*) My experience is that most OPS5 programmers (not that there are many) 
>                                Is this right ? ---^^^^^^^^^^^^^^^^^^^^^^
>>ignore or actively counter the "pick the most specific/least recently used"
>>rules anyway.

My guess is that there are very few active OPS5 programmers out there.
For the most part I would say it is a dead language.  It is years out
of date (in terms of representation power, etc.), has an awkward
syntax, and promotes a rather strained coding style.  The fact that
there are only two or three people contributing to this topic should
give you some idea of how popular it is in regards to the net.

						-- Scott Turner

prophet@nitro.ATT.COM (Mike Brooks) (04/06/88)

In article <28259@aero.ARPA> srt@aero.UUCP (Scott R. Turner) writes:
>In article <1580@netmbx.UUCP> morus@netmbx.UUCP (Thomas Muhr) writes:
>>In article <27336@aero.ARPA> srt@aero.UUCP (Scott R. Turner) writes:
>>>(*) My experience is that most OPS5 programmers (not that there are many) 
>>                                Is this right ? ---^^^^^^^^^^^^^^^^^^^^^^
>>>ignore or actively counter the "pick the most specific/least recently used"
>>>rules anyway.
>
>My guess is that there are very few active OPS5 programmers out there.
>For the most part I would say it is a dead language.  It is years out
>of date (in terms of representation power, etc.), has an awkward
>syntax, and promotes a rather strained coding style.  The fact that
>there are only two or three people contributing to this topic should
>give you some idea of how popular it is in regards to the net.

I can't give an exact number for OPS5 programmers (active) who are out here
but I personally have found OPS5 to be a stable and instructive
rule-based programming environment (though not the only one!). 
I am working on a prototype system to handle resource and
activity planning  within a test lab.
Although at first I was a little annoyed by the lacks that I initially 
perceived, I discovered that OPS5, as an environment to learn rule-based
programming, is ideal because it doesn't have nifty full screen user 
interfaces or tons of libraries; it focuses your attention on the real
beef: the innards of the of the system or project at hand.
I find that at times, having so much to choose from confuses the issue
of what needs to be done.
When needs arose for functionality not terribly well handled in OPS5,
it's simply another call to an external procedure which tests for some
measure of success.

I want to stress that I am not advocating OPS5 as a do-all, end-all
tool, just that it is still useful, and if there are any OPS5 or OPS83
programmers out there I would love email from you detailing your
experiences with these *dinosaurs*.



Michael P. Brooks
E-mail: {mtuxo,ihnp4}!attunix!nitro!prophet