HDTenEightyP/NetNews huggingface dataset:
From: ok@goanna.cs.rmit.oz.au (Richard A. O'Keefe)
Newsgroups: comp.lang.prolog
Subject: Re: (none)
Date: 14 Oct 92 06:03:19 GMT
Organization: Comp Sci, RMIT, Melbourne, Australia

In article <9210122012.AA08759@enuxha.eas.asu.edu>, gomez@enuxha.eas.asu.edu (JL Gomez) writes:
> I've been learning PROLOG and building up some list predicates.

This sounds as though you are saying that you _have_ written subseq/2
and rotate/3.  But from the rest of the posting it sounds as though
you want help in writing them.

%   subseq(Sub, Seq) is true if
%   Sub and Seq are lists and Sub is a subsequence of Seq.
%   (This corresponds to subseq0(Seq, Sub) in the Quintus library(lists).)

subseq([], _).			% empty is a subsequence of everything.
subseq([H|Sub], Seq) :-		% nonempty must come from Seq.
	append(_, [H|R], Seq),	% skip over a prefix of Seq, pick up H,
	subseq(Sub, R).		% and recur on what is left.

%   You can improve that a bit; the call to append/3 will construct a
%   list which we then ignore.  So we can do

skip_prefix([H|R], H, R).
skip_prefix([_|L], H, R) :-
	skip_prefix(L, H, R).

subseq([], _).
subseq([H|T], S) :-
	skip_prefix(S, H, R),
	subseq(T, R).

> 
> The others are rotate predicates like:
> 
> rotate([a,b,c,d,e],2,X).
> X = [c,d,e,a,b]
> 
> which rotates right, and then
To me that is a LEFT rotation; the elements of the list moved left.
(When they reached the left edge they wrapped around to the right,
but that is another matter.  If they were bits in a register with
the most significant bit at 'a' and the least significant bit at 'e'
this would involve a "rotate LEFT" instruction.)
> 
> rotate([a,b,c,d,e,f],-2,X]
> X = [e,f,a,b,c,d]
> 
> rotates left.
To me that is a RIGHT rotation; the elements of the list moved right.
(When the reached the right edge they wrapped around to the left,
but that is another matter.
Let's draw a before and after picture:
To rotate by +N:
	+---+---+      +---+---+
	| A | Z |  =>  | Z | A |
	+---+---+      +---+---+
where length(A) = N.  To rotate by -N, the same picture, but length(Z) = N.

So,
rotate(List, Amount, Result) :-
	length(List, Total),
	(   Amount >= 0 ->
	    Prefix is Amount
	;/* Amount < 0 */
	    Prefix is Total + Amount
	),
	Prefix =< Total,
	length(A, Prefix),
	append(A, Z, List),
	append(Z, A, Result).

I wrote similar predicates a long while ago, but although I found it
instructive to do so (most list processing predicates are _easy_ if
you draw a few pictures and think "append") I've never since found
any actual use for them.

For what it's worth, here's how I'd _really_ do rotate/3:

rotate(Amount, Original, Rotated) :-
	same_length(Original, Rotated, Length),
	    %	same_length/3 comes from library(lists).  Very handy.
	T is -Length,
	between(T, Length, Amount),
	    %   between/3 comes from library(between).  VERY handy.
	(   Amount >= 0 -> Prefix is Amount
	;/* Amount < 0 */  Prefix is Length + Amount
	),
	length(A, Prefix),
	append(A, Z, Original),
	append(Z, A, Rotated).

You can even call that with all its arguments unbound and it will
enumerate all the logical solutions.

Newsgroups: comp.lang.prolog
From: goldsmig@cgsvax.claremont.edu
Subject: Copy of ISO standard for Prolog
Organization: The Claremont Graduate School
Date: 14 Oct 92 10:56:23 PST

Does anyone have knowledge of where I can apply for a copy of the draft ISO
standard for Prolog?
Newsgroups: comp.lang.prolog
From: hassan@prl.dec.com (Hassan Ait-Kaci)
Subject: ILPS'93
Organization: Digital Equipment Corporation - Paris Research Laboratory
Date: Thu, 8 Oct 1992 11:16:45 GMT


Has the call fo submissions to the next ISLP been out yet? If so, can
someone send it to me? If not, is there any info on where and when
ISLP will take place?

Thanks.

-hak
From: msilver@East.Sun.COM (Mark Silver - SE Sun Microsystems)
Newsgroups: comp.lang.prolog
Subject: Use of SBPROLOG
Date: 9 Oct 1992 13:02:49 GMT
Organization: Sun Microsystems, Baltimore, Md.
Distribution: world
Reply-To: mark.silver@East.Sun.COM
NNTP-Posting-Host: pimlico.east.sun.com


-- 

  Where would be a good source for information on the use of sbprolog.
  I have already retrieved the sources and have built them on a Sun4.

  I am posting for someone who does not have access to news, so
  please forward any responses to:

  Jae_Eon.Ahn@Korea.Sun.COM (J.E. Ahn - Sun Korea TS Engineer)

			    Regards:  Mark

=============================================================================
Mark Silver       Washington DC Area               Phone 410-312-1716
Systems Engineer  Baltimore Intelligence District  Fax   410-312-1799
Sun Microsystems  6716 Alexander Bell Drive        MStop F679
                  Suite 200                
                  Columbia, Maryland  21046        mark.silver@East.Sun.COM
=============================================================================

Newsgroups: comp.lang.prolog
From: ryoung@utdallas.edu (Ryu Young)
Subject: Prolog for Microsoft Windows
Organization: Univ. of Texas at Dallas
Date: Tue, 13 Oct 1992 20:52:30 GMT

Sorry if it is one of FAQs.

I am looking for a Prolog running under Microsoft Windows 3.1
and utilizing Windows's resources.

I know of LPA Prolog for Windows a little bit.
[1] Is there any other available?

About LPA Prolog for *Windows*.

LPA Prolog for *Mac* has SAAG (stand alone application generator)
which is a kind of compiler generating *executable codes*.
[2] Does LPA Prolog for *Windows* have it?

Note: LPA Prolog for *Mac* is distributed in US by
      Quintus, so it's often named Quintus Prolog for Mac.

Also LPA Prolog for *Mac* supports graphic data
(including graph objects and images).
[3] Does LPA Prolog for *Windows* do the same or similar thing?

Again, LPA Prolog for *Mac* has an optional utility
named Prolog++, an object-oriented prolog.
[4] Does LPA Prolog for *Windows* support a similar thing?

Please e-mail me. (ryoung@utdallas.edu)

Thanks in advance.

Young
From: mmh@cs.qmw.ac.uk (Matthew Huntbach)
Newsgroups: comp.lang.prolog
Subject: Re: references to PARLOG ?
Date: 16 Oct 92 08:13:03 GMT
Organization: Computer Science Dept, QMW, University of London, UK.

From: aet@mullian.ee.mu.OZ.AU (bert thompson)
>i am using PARLOG, but unfortunately have no good references.
>can anyone suggest some good references?
>(i think there may be something in:
>Concurrent Prolog, Vol. 1, by Shapiro).

There are many variants on the concurrent logic languages,
although they're actually very similar. It doesn't really make
much sense to try and distinguish between "Parlog", "GHC" and
"Concurrent Prolog". The names are different because of the
three separate research groups that were working (concurrently)
on these languages. If it comes from the UK it'll be called
"<something> Parlog", from Israel "<something> Concurrent
Prolog" and Japan "<something> GHC". The language Strand is
essentially the same thing distributed by a commercial company.

Possible references on Parlog include the Clark and Gregory
paper in vol.6. no.1 of ACM Transactions on Programming
Languages and Systems (1986) or the Ringwood paper in
Communications of the ACM vol.31,no.1 (1988).

Matthew Huntbach
From: dale@saul.cis.upenn.edu (Dale Miller)
Newsgroups: comp.lang.prolog
Subject: ILPS'93: Preliminary Announcement
Date: 14 Oct 92 21:47:07 GMT


			   ************************
                         * PRELIMINARY ANNOUNCEMENT *
			   ************************
				       
		  INTERNATIONAL LOGIC PROGRAMMING SYMPOSIUM
				I L P S ' 9 3

		     Vancouver, British Columbia, Canada
			     26-29 October 1993

The 1993 International Logic Programming Symposium (formerly named the North
American Conference on Logic Programming (NACLP)) will be held on 26-29
October 1993 in Vancouver, British Columbia.  The technical program for the
conference will include tutorials, invited lectures, and presentations of
refereed papers.  Papers on any aspect of logic programming are invited.
Post conference workshops are scheduled for Saturday, 30 October.

The deadline for submitting papers to the Program Chair will be in
mid-April 1993.

A full announcement regarding this conference will appear shortly.  This
announcement and subsequent ones can be retrieved by anonymous ftp from
ftp.cis.upenn.edu from pub/meetings.

This Symposium is sponsored by the Association of Logic Programming
and Simon Fraser University.

  CONFERENCE CHAIR                      PROGRAM CHAIR
    Veronica Dahl                         Dale Miller
    School of Computer Science            Computer Science Department
    Applied Science Building 10857        200 South 33rd Street
    Simon Fraser University               University of Pennsylvania
    Burnaby, BC V5A 1S6  CANADA           Philadelphia, PA 19104-6389 USA
      E-mail: veronica@cs.sfu.ca            E-mail: dale@saul.cis.upenn.edu
      Phone: (604) 291-3372                 Phone: 215-898-1593
From: rao@cs.mu.OZ.AU (Kotagiri Ramamohanarao)
Newsgroups: comp.lang.prolog
Subject: VLDB Journal Special Issue on Prototypes of Deductive Database Systems
Keywords: deductive databases, logic programming, knowledge-based systems
Date: 16 Oct 92 03:04:51 GMT
Reply-To: rao@cs.mu.OZ.AU (Kotagiri Ramamohanarao)
Organization: Computer Science, University Of Melbourne, Australia
Originator: rao@munta.cs.mu.OZ.AU



			Call for Papers


The VLDB Journal is planning a special issue on Prototypes of Deductive
Database Systems. Potential authors are encouraged to submit original
papers describing prototype deductive database systems. Papers should
address the issues below.


  o Query and Update Language Description

  o Computational Model

  o Optimisation Techniques

  o Implementation and System Architecture

  o Performance Measurements

  o Applications


Potential authors are encouraged to submit original, journal quality papers
to the special issue editor.


      Professor Kotagiri Ramamohanarao          Fax: +61 3 282 2444
      Department of Computer Science            E-Mail: rao@cs.mu.oz.au
      University of Melbourne
      Parkville, 3052
      Victoria, Australia



  Send 6 copies of a complete manuscript of no more than 35 type-written, 
double-spaced pages.  For more specific information see the Guidelines 
for Manuscript Preparation of the VLDB Journal which can be obtained through 
the special issue editor or the responsible editor-in-chief Hans J. Schek
(schek@inf.ethz.ch). All papers will be reviewed through the Journal's
editorial board.

Important dates:


     March 1, 1993            Due date for manuscript
     June 1, 1993             Notification of acceptance
     August 1, 1993           Due date for final revised version


A preliminary statement of your intention to submit would be appreciated.
Newsgroups: comp.lang.prolog,news.answers
From: roland@cs.monash.edu.au (Roland Yap)
Subject: New Release of Constraint Logic Programming language, CLP(R)
Keywords: constraint logic programming, prolog, constraints
Organization: Computer Science, Monash University, Australia
Date: Wed, 14 Oct 1992 08:10:15 GMT


------------------
CLP(R) Version 1.2
------------------
 
We wish to announce the release of a new version of IBM's prototype
implementation of CLP(R).  This system is available for academic and
research purposes only, and is provided free of charge.  The system
is distributed with source code, manual, examples, etc..  Receipients 
of the system should note that the system comes with a disclaimer and 
user agreement embedded within the source code.  We are distributing 
CLP(R) in order to help widen the use of constraint programming, and 
to solicit feedback on the system.  Our preferred method of distribution 
is by electronic mail in a number of uuencoded files.
Requests for the system should be sent to:
 
     Joxan Jaffar, H1-D48
     IBM Thomas J. Watson Research Center
     P.O. Box 704
     Yorktown Heights, NY 10598
     U.S.A.
     (joxan@watson.ibm.com, joxan@yktvmh.bitnet)
 
CLP(R) is a constraint logic programming language with real-arithmetic
constraints.  The implementation contains a built-in constraint solver
which deals with linear arithmetic and contains a mechanism for delaying
nonlinear constraints until they become linear.  Since CLP(R) subsumes
PROLOG, the system is also usable as a general-purpose logic programming
language.  There are also powerful facilities for meta programming
with constraints.  Significant CLP(R) applications have been published in
diverse areas such as molecular biology, finance, physical modelling, etc.
 
The system, consisting of a compiler, byte-code emulator and constraint
solver, is written entirely in C.  It has been known to run on a number 
of machines: Suns, Vaxen, MIPS-based machines (Decstations, Silicon 
Graphics), IBM RS6000s and PS2s, PC's using a number of UNIX[tm]-based 
operating systems: AIX, System 5, BSD, Mach and SunOS, as well
as under PC's (386's and 486's) running: MS/DOS and OS/2 2.0.

Version 1.2 replaces the previous version 1.1.  It contains a number
of new features which includes support for MS/DOS and OS/2 2.0,
new non-linear constraints for arc sin and arc cos, style checking,
symbolic constants, new system predicates and other enhancements.
 
* UNIX is a trade-mark of AT&T Bell Laboratories.
 
(enquiries may also be directed to roland@bruce.cs.monash.edu.au)
From: cskeaa@vehka.cs.uta.fi (Ketola Aarne Vesa Pekka)
Newsgroups: comp.lang.prolog
Subject: Theorist
Date: 7 Oct 92 15:32:07 GMT
Reply-To: cskeaa@vehka.cs.uta.fi (Ketola Aarne Vesa Pekka)
Distribution: world
Organization: University of Tampere, Finland

I'm looking for a Theorist, that works with Mac LPAProlog.
Let me know if you have one.

-Pekka
cskeaa@vehka.cs.uta.fi
--
##########################  'Contrariwise', continued Tweedledee,'if it was
     Pekka Ketola        #    so, it might be; and if it were so, it would be;
  Keskisenkatu 6 K 63    #    but as it isn't, it ain't. That's logic.'
 33710 TAMPERE,  FINLAND #    (Lewis Carroll, 1871)
Newsgroups: comp.lang.prolog
From: fjh@munta.cs.mu.OZ.AU (Fergus James HENDERSON)
Subject: Re: Copy of ISO standard for Prolog
Organization: Computer Science, University of Melbourne, Australia
Date: Fri, 16 Oct 1992 05:21:06 GMT

goldsmig@cgsvax.claremont.edu writes:

>Does anyone have knowledge of where I can apply for a copy of the draft ISO
>standard for Prolog?

The draft standard is available via anonymous ftp from aisun1.ai.uga.edu in
the directory ai.prolog.standard.

-- 
Fergus Henderson             fjh@munta.cs.mu.OZ.AU      
This .signature virus is a self-referential statement that is true - but 
you will only be able to consistently believe it if you copy it to your own
.signature file!
Newsgroups: comp.lang.prolog
From: oruiz@uxa.cso.uiuc.edu (ruiz oscar eduardo)
Subject: Want Cheap Prolog
Organization: University of Illinois at Urbana
Date: Thu, 8 Oct 1992 19:38:28 GMT

I want to call C++ functions from Prolog predicates. I would like to know
if there is any sugestion regarding a good Prolog implementation which I can
use for that purpose. It should, of course, have some documentation in order
to know how to do it. Is there any cheap (read free or quasi-free) Prolog
going around which I can use??. Please let me know. Thanks a lot:
			Oscar E. Ruiz S.
			oruiz@uxa.cso.uiuc.edu
			oruiz@lebesgue.me.uiuc.edu
			(or answer this note)
Newsgroups: comp.lang.prolog
From: ludemann@quintus.com (Peter Ludemann)
Subject: Re: Uncompiled prolog (History of Prolog)
Organization: Quintus Corporation, Palo Alto, CA
Date: Wed, 14 Oct 1992 16:56:28 GMT

In article <15039@goanna.cs.rmit.oz.au>, ok@goanna.cs.rmit.oz.au (Richard A. O'Keefe) writes:

>                                             There were two other Prolog
> implementations that have some claim to "originality" and still have some
> influence:  Waterloo Prolog started out as someone's Masters project; it
> was developed from published descriptions of the _ideas_ of Prolog, but I
> heard that the author had no access to the sources of any Prolog.  Aspects
> of that design live on in IBM Prolog.  

That "someone" was Grant Roberts; probably his Masters thesis is still
available from the University of Waterloo (I read the thesis some years ago;
it appeared to give a fast implementation using very different techniques
from those used at Edinburgh).  It's a pity that Grant Robert's work has
languished in obscurity because he picked the wrong target hardware.

- peter ludemann		ludemann@quintus.com
From: ok@goanna.cs.rmit.oz.au (Richard A. O'Keefe)
Newsgroups: comp.lang.prolog
Subject: Re: Question about adding
Date: 8 Oct 92 06:14:40 GMT
Organization: Comp Sci, RMIT, Melbourne, Australia

In article <718322659.0@nwark.FidoNet>, Bert.Edens@f1160.n391.z1.FidoNet.Org (Bert Edens) writes:
>     monster(orc,4).
> where the latter is the number of hit points. What I want to do is add up a
> group of them and get the total hit points for an attack party. For
> example, it might be:
>     monster(orc,4). monster(kobold,5). monster(goblin,8).
> and I want to add them up.

You need a way to represent what is in the attack party.
For argument's sake, let's assume that a hit party is represented by
a list of HowMany*MonsterType pairs, e.g. [2*goblin,3*orc].

attack_party_hit_points(Monsters, HitPoints) :-
	attack_party_hit_point_loop(Monsters, 0, HitPoints).

attack_party_hit_point_loop([], HP, HP).
attack_party_hit_point_loop([K*M|KMs], HP0, HP) :-
	monster(M, H),
	HP1 is HP0 + K*H,
	attack_party_hit_point_loop(KMs, HP1, HP).

The data base is the place for information that doesn't change or changes
very infrequently; terms are the place for information that changes rapidly.
Newsgroups: comp.lang.prolog
From: torkel@sics.se (Torkel Franzen)
Subject: More about Alfred Horn and direct products
Organization: Swedish Institute of Computer Science, Kista
Distribution: comp
Date: Thu, 8 Oct 1992 13:16:51 GMT


  The deluge of requests for further information concerning this
matter [*] prompts me to report my latest findings. Horn's original
article, "On sentences which are true of direct unions of algebras"
(JSL Volume 16, No 1, March 1951) has been unearthed from the
Sjoland Archive. I quote from the introduction:

    It is well known that certain sentences corresponding to
    similar algebras are invariant under direct union; that
    is, are true of the direct union when true of each factor
    algebra. An axiomatizable class of similar algebras, such
    as the class of groups, is closed under direct union when
    each of its axioms is invariant. In this paper we shall
    determine a wide class of invariant sentences. We shall
    also be concerned with determining sentences which are
    true of a direct union provided they are true of some factor
    algebra. In the case where all the factor algebras are
    the same, a further result is obtained. ..it will be shown
    that these criteria are the only ones of their kind.

  Now, on examining his results, one finds that he proves that the
formulas Shoenfield calls "Horn formulas" - in our terminology,
formulas in prenex form with a matrix consisting of a conjunction
of Horn clauses [**] - are preserved under direct products. Startlingly,
he also proves the converse, i.e. that every formula preserved under
direct products is equivalent to a Horn formula. Anyway, I was
startled. However, on closer examination, Horn is only concerned
with algebras - structures in which identity is the only relation.
So his theorem characterizes the identity formulas preserved under
direct products. If we allow other formulas, there are counterexamples
to the converse. For example

     (x)p(x,x) & (x)q(x,x) & ExEy(~x=y & (p(x,y) v q(x,y)))

is preserved under direct products, but is not equivalent to a Horn
formula. (By the theorem I quoted earlier, there is no purely universal
counterexample.)


  [*] Somebody I met in the corridor mentioned it.

  [**] The Horn formulas, then, are those formulas that upon prenexification
and skolemization and splitting into clauses - the preprocessing needed
to feed them to resolution theorem provers - turn into a set of Horn
clauses.
From: mosh@cse.iitb.ernet.in (Mosh)
Newsgroups: comp.lang.prolog
Subject: Help with Cuts in a Prolog Meta-Interpreter
Date: 15 Oct 92 08:41:29 GMT
X-Unparsable-Date: Thu, 15 Oct 92 12:09:00 IST


Hello,

I am writing an interpeter for a prolog-like-language
(horn clause, including cuts) in prolog.

I am having some problems with implementing _cut_,
If somebody has already done this,
could he/she _Email_ me the meta-interpreter ?
I will summarize useful replies.

many thanks in advance, 

mosh@cse.iitb.ernet.in
Computer Sc, IIT, Bombay 76, INDIA.
From: billaud@greco-prog.fr (Michel BILLAUD)
Newsgroups: comp.lang.prolog
Subject: Re: Comprehensive understanding of logic languages
Date: 8 Oct 92 07:10:27 GMT
Reply-To: billaud@geocub.UUCP (Michel BILLAUD)
Organization: LaBRI - Universite Bordeaux I - France

In article <92276.202706COMTET@FRECP12.BITNET> COMTET@FRECP12.BITNET writes:
>Recently I had courses in languages such as Prolog and Lisp. The beginning of t
>he course was an attempt to describe comprehensively all logic languages. There
>are some terms that I didn't quite understand such as :
>logic of the first order

Explication simpliste: les propositions mathematiques sont codees par
des termes, exemple : qqsoit  X ilexiste Y telque  p(X,Y) ou non p(Y,X).
si les quantificateurs portent sur des symboles 'de base' on est au premier
ordre, si ils portent sur l'existence d'une fonction telle que gnagna, 
on est a un ordre superieur. 
Voir bouquin d'algebre universelle, genre Burris and Sankapannavar,
ou Gratzer, ou ....
>Horner's clause ( or assertion)

de HORN ! pas a confondre avec le schema de horner pour l'evaluation
des polynomes, ni l'accordeoniste minuscule.

>Could somebody give me either the meaning of those words or give me references
>about suchsubjects (books or articles)?

reference classique sur prolog: clocksin et mellish
Bouquin de R Lallement (sp ?) Logique, reduction et deduction, chez MASSON
Il y a plusieurs bouquins sur l' "automated reasoning" (ou deduction)
dont un des co-auteurs est z. manna, et qui sont facile a lire, et dont
le titre m'echappe. (cette phrase est une clause du premier ordre !)

M Billaud

-- 
Michel BILLAUD                 :  billaud@geocub.greco-prog.fr
Departement d'Informatique     :  phone W: 56.84.57.92  // 56.84.69.22
IUT "A", Universite Bordeaux I :  "Personne n'est exempt de dire des sottises.
33405 Talence  (FRANCE)        :   Le malheur est de les dire curieusement"
From: tyamamot (Taro Yamamoto)
Newsgroups: comp.lang.prolog
Subject: Re: (none)
Date: 13 Oct 92 06:02:28 GMT
Followup-To: comp.lang.prolog
Organization: Adobe Systems Incorporated

I am learning the language too. But, I got the following idea.
I am looking for any more elegant solution...

FYI.

-Taro Yamamot
tyamamot@adobe.com

rotate(List, Shift, RotatedList) :-
	Shift > 0, !,
		length(List, TotLen), Shift2 is TotLen - Shift,
		rot(List, Shift2, RotatedList).

rotate(List, Shift, RotatedList) :-
	Shift < 0, !,
		Shift2 is -Shift,
		rot(List, Shift2, RotatedList).			

rot(List, Shift, RotatedList) :- !,
	append(SubList1, SubList2, List), length(SubList2, Len), Len =:= Shift, !,
	append(SubList2, SubList1, RotatedList).

rot(List, Shift, RotatedList) :-
		length(List, Len),
		Shift2 is Len - Shift, !, rot(List, Shift2, RotatedList).



Disclaimer:  
Views and recommendations, express or implied, are my own, and
do not reflect the opinion or policy of my employers.
From: ok@goanna.cs.rmit.oz.au (Richard A. O'Keefe)
Newsgroups: comp.lang.prolog
Subject: Re: load_foreign_files predicate & SBProlog
Date: 15 Oct 92 04:32:05 GMT
Article-I.D.: goanna.15289
Organization: Comp Sci, RMIT, Melbourne, Australia

In article <1992Oct13.222629.21638@news.duc.auburn.edu>, sivand@eng.auburn.edu (Sivand Lakmazaheri) writes:
> Is "load_foreign_files" a built-in predicate in Quintus prolog?

Yes.  Or rather, load_foreign_files/2 is (the name of) a built-in predicate.
'load_foreign_files' is just this atom, y'know?

> If so, is there an equivalent predicate for it in SBprolog?
It is possible to interface that Prolog to foreign code (if the worst
comes to the worst, you have the full source code and can plug in anything
you want).  It all depends on how "equivalent" you need.