HDTenEightyP/NetNews huggingface dataset:
From: jah@cs.mu.OZ.AU (James Harland)
Subject: Deadline Extension for Workshop on Deductive Databases at JICSLP'92
Originator: jah@munta.cs.mu.OZ.AU
Reply-To: jah@cs.mu.OZ.AU (James Harland)
Organization: Department of Computer Science, University of Melbourne
Date: Fri, 4 Sep 1992 07:12:25 GMT



	Due to several requests for an extension to the deadline of
September 7, the new deadline for submissions for the Workshop on Deductive
Databases at JICSLP'92 is SEPTEMBER 11. A revised CFP is given below. 


		 Final Call for Participation

		Workshop on Deductive Databases
	         Saturday, 14 November, 1992
		    in conjunction with the
       Joint International Conference and Symposium on Logic Programming
		November 9-13, 1992, Washington D.C., USA

The development of deductive database systems, which apply logic
programming techniques to databases, has been of growing interest in recent
years, and has resulted in a significant amount of interaction between
researchers of varying backgrounds. This workshop is intended to provide a
forum for theoreticians, implementors and those involved in applications to
exchange ideas on the development of deductive databases systems. Topics
may include (but need not be limited to) program transformations, parallel
and distributed execution, optimization and implementation techniques, and
applications.

Abstracts and/or proposals for system demonstrations should be send to the
address below:

	 Prof. Kotagiri Ramamohanarao
	 Department of Computer Science
	 University of Melbourne
	 Parkville, 3052
	 Australia

	 email: rao@cs.mu.oz.au
	 Phone: +61 3 282 2400
	 Fax:   +61 3 282 2444

Abstracts should be no more than 8-10 pages in length, and there is no
restriction on the format to be used. However, Latex/Tex format is
preferred, particularly styles similar to those used for submissions and/or
camera-ready copy for the main conference. Submission by email rather than
printed copies is strongly encouraged. 

Copies of all accepted abstracts will be distributed to participants at the
workshop. In order to provide continued access to the abstracts presented
at the workshop, the proceedings will be available as a University of
Melbourne technical report.

Submission Dead-line: September 11, 1992 (extended from September 7)
Notification Sent: October 1, 1992
Final Manuscript Due: October 15, 1992

Organizing Committee: Kotagiri Ramamohanarao, Guozhu Dong, James Harland
From: benanav@earth.njit.edu (Dan Benanav)
Newsgroups: comp.lang.prolog
Subject: Programs from Bratko Book?
Date: 4 Sep 92 03:29:14 GMT
Organization: New Jersey Institute of Technology, Newark, N.J.

Does anyone know if the programs from the Bratko Book 
Prolog Programming for AI are available somewhere?
I'm teaching a class and would like to have them.
                       
                        Thanks,
                       Dan
From: billaud@greco-prog.fr (Michel BILLAUD)
Newsgroups: comp.lang.prolog
Subject: Re: Help on problem needed!
Keywords: help
Date: 27 Aug 92 07:54:31 GMT
Reply-To: billaud@geocub.UUCP (Michel BILLAUD)
Organization: LaBRI - Universite Bordeaux I - France

In article <1992Aug26.130909.17909@neptune.inf.ethz.ch> marti@nugget.inf.ethz.ch (Robert Marti) writes:
>In article <1992Aug25.074623.25450@greco-prog.fr>, billaud@greco-prog.fr
>(Michel BILLAUD) writes:
>|> In article <meskes.713709771@ulysses>
>|> meskes@ulysses.informatik.rwth-aachen.de (Michael Meskes) writes:
>|> 
>|> > Can you program a IF...THEN...ELSE in Prolog without using the cut?
>|> 
>|> No. a proof by contradiction:
>
>[ proof deleted ]
>
>I am sorry to contradict your contradiction ;-)  As someone else has
>pointed out, it _is_ possible to program if-then-else without cut
>IN CERTAIN SPECIAL CASES.

Yes (I'm happy to agree :-)), it's possible in certain special cases *only*.
The [deleted] result was about the impossibility to build a *general* 
IF-THEN-ELSE construct from AND/OR/TRUE/FAIL, so where's the contradiction?

Also, it's possible to replace cut by if-then-else in a number of cases
(clauses with no ";"), but not in *all* the cases. for example, try:
	p(X) :-  g(X), ((r(X),!,fail);true).

Michel


-- 
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 :  "Je veux jouer de l'helicon
33405 Talence  (FRANCE)        :        pon pon pon pon !    "
Newsgroups: comp.lang.prolog
From: jamie@cs.sfu.ca (Jamie Andrews)
Subject: comp.lang.prolog FAQ coming up
Organization: CSS, Simon Fraser University, Burnaby, B.C., Canada
Date: Wed, 26 Aug 1992 22:21:50 GMT

     The process of automation and authorization is (finally)
over, so I will be posting the comp.lang.prolog FAQ (Frequently
Asked Questions) list right after this message.

     The next posting of it will be on Sept. 16, and thereafter
(I hope) on the 1st and 16th of every month.  There may be some
bugs in the regular timed postings, but only in the first month,
I hope.

     Thank you for your support and suggestions.

--Jamie.
  jamie@cs.sfu.ca
"Every \item command in item_list must have an optional argument." LaTeX pg.168
Newsgroups: comp.lang.prolog
From: micha@ecrc.de (Micha Meier)
Subject: Re: Compilation of Disjuncts
Reply-To: micha@ecrc.de
Organization: European Computer-Industry Research Centre
Date: Thu, 3 Sep 1992 08:08:02 GMT

In article 92Sep2141625@vishnu.sics.se, matsc@sics.se (Mats Carlsson) writes:
>   do you do anything special about this construct, or do you just
>   consider it as an ordinary predicate with a definition like:
>   P ;_Q :- P.
>   _P; Q :- Q.
>
>SICStus Prolog does nothing special, and considers it as an ordinary
>predicate as you describe.

I guess this is slightly understated, because that would mean that all goals
inside a disjunction are metacalled, which is not the case in SICStus.

There are two basic ways to compile the disjunctive constructs, one is with
auxiliary procedures and the other in-line. If you have a clause

	p(X, Y) :- q, (r(X); s(Y)), t.

then the former method (used e.g. in SICStus, KCM, ...) is to transform it into

	p(X, Y) :- q, aux(X, Y), t.

	aux(X, _) :- r(X).
	aux(_, Y) :- s(Y).

(in case there is a cut involved, one might need to pass additional information
to aux/2).

The other method is done at the WAM level, the WAM code looks something like

	allocate
	get_variable Y1, A1
	get_variable Y2, A2
	call q/0
	try_me_else L1
	put_value Y1, A1
	call r/1
	branch L2
L1:	trust_me
	put_value Y2, A1
	call s/1
L2:	deallocate
	execute t/0

This method is used e.g. by (as far as I know) Quintus and Sepia and others.
Both methods have advantages and disadvantages. I think the latter is more
efficient, because no additional environment is created for the auxiliary
procedures and the disjunction choice point has always arity zero. There might as well
be less branches to make. On the other hand, the former method can be easily
done on the Prolog level with a preprocessor, so it is quite easy (well, modulo
cut and the like) to do. The in-line expansion, especially if one wants to
improve special cases like not/1, once/1 and if-then-else with a simple condition,
can very quickly turn into a dangerous adventure.

--Micha

---
Micha Meier			------------------------------------------------
ECRC, Arabellastr. 17		The opinions expressed above are private
D-8000 Munich 81		and may not reflect those of my employer.
micha@ecrc.de, Tel. +49-89-92699-108, Fax  +49-89-92699-170

Newsgroups: comp.lang.prolog
From: lhe@sics.se (Lars-Henrik Eriksson)
Subject: Re: Homework problems (was Re: Help on problem needed!)
Reply-To: lhe@sics.se (Lars-Henrik Eriksson)
Organization: SICS, Kista (Stockholm), Sweden
Date: Wed, 26 Aug 1992 07:03:39 GMT

In article <9223903.3477@mulga.cs.mu.OZ.AU>, fjh@munta (Fergus James HENDERSON) writes:
>Obviously no-one here would condone plaigiarism (I hope!); the point was,
>however, that elementary-level questions often get a somewhat hostile
>response here.

Indeed! I agree that there is no reason to do people's homework for
them, but there has been a strong tendency in this newsgroup to
discourage elementary questions in general.

We should ask ourselves who this newsgroups is for. Only for experts
or at least proficient prolog users, or also for beginners? If we
accept beginners, then we should also be prepared to answer simple
questions without remarks like "you should read book X by Y before
opening your mouth".
-- 
Lars-Henrik Eriksson                            Internet: lhe@sics.se
Swedish Institute of Computer Science           Phone (intn'l): +46 8 752 15 09
Box 1263                                        Telefon (nat'l): 08 - 752 15 09
S-164 28  KISTA, SWEDEN                         Fax: +46 8 751 72 30
Newsgroups: comp.lang.prolog
From: marti@nugget.inf.ethz.ch (Robert Marti)
Subject: Re: Help on problem needed!
Keywords: help
Organization: Dept. Informatik, Swiss Federal Institute of Technology (ETH), Zurich, CH
Date: Wed, 26 Aug 1992 13:09:09 GMT

In article <1992Aug25.074623.25450@greco-prog.fr>, billaud@greco-prog.fr
(Michel BILLAUD) writes:
|> In article <meskes.713709771@ulysses>
|> meskes@ulysses.informatik.rwth-aachen.de (Michael Meskes) writes:
|> 
|> > Can you program a IF...THEN...ELSE in Prolog without using the cut?
|> 
|> No. a proof by contradiction:

[ proof deleted ]

I am sorry to contradict your contradiction ;-)  As someone else has
pointed out, it _is_ possible to program if-then-else without cut
IN CERTAIN SPECIAL CASES.

Canonical example:
  IF X >= Y THEN Max := X ELSE Max := Y END

Prolog translation:
  % max(+X,+Y,?Max): Max is the maximum of X and Y
  max(X,Y,X) :- X >= Y.
  max(X,Y,Y) :- X < Y.

This works because < happens to be the logical negation of >=
provided that both arguments are ground.

-- 
Robert Marti                    |  Phone:    +41 1 254 72 60
Informationssysteme             |  FAX:      +41 1 262 39 73
ETH-Zentrum                     |  E-Mail:   marti@inf.ethz.ch
CH-8092 Zurich, Switzerland     |
Newsgroups: comp.lang.prolog
From: rhyspj@occs.cs.oberlin.edu (Rhys Price Jones)
Subject: Soliciting names for ACM/SIGCSE panelists
Organization: Oberlin College Computer Science
Distribution: comp
Date: Thu, 3 Sep 1992 13:05:17 GMT
X-Posted-From: occs.cs.oberlin.edu
X-Posted-Through: sol.ctr.columbia.edu

I am looking for participants in a panel discussion  for next year's
SIGCSE to discuss issues affecting choice of language in CS1 - the
introductory CS course.  Please e-mail me suggested names for
advocates of your particular favorite introductory language.

Thanks

--
Rhys Price Jones                            
Cyd-athro Cyfrifiaduriaeth                   ____
Associate Professor Computer Science        /   / /
Oberlin College                            /   / /
King 223C                                 /___/ /__      __
Oberlin OH 44074 - USA - UDA             / \   /  / / / (
(216) 775 8697                          /   \_/  /_/_/ __)
<rhyspj@occs.cs.oberlin.edu>                      __/_/
Newsgroups: comp.lang.prolog
From: bmtong@cucs11.cs.cuhk.hk (Tong Bo-Ming)
Subject: Re: Pipes in Quintus
Organization: Faculty of Engineering, The Chinese U. of Hong Kong
Date: Sun, 30 Aug 1992 09:03:17 GMT

jvp@doc.ic.ac.uk (Jeremy Pitt) writes:

>I've got this Quintus prolog program and this C program and, quite
>unreasonably really, I want them to `talk' to each other.

>However, the Quintus library predicate popen only allows me to get
>hold of one end of the pipe: I can either read from it or write
>to it, but not both.

>Does anybody either (a) know of an easy way of doing both or (b) have
>a library package which exports predicates to do this.

>Oh, and on top of that the C program writes its output to standard
>error (don't ask). So what I want is to be able to send stuff from
>my Quintus program through the pipe to the C program, and pick up 
>its output off standard error when its finished munging about with
>it.

>Don't want much, do I? However, any help with this would be greatly
>appreciated. Thanks,

>Jeremy
>--
>Jeremy Pitt, Department of Computing, Imperial College of Science, Technology
>& Medicine, Huxley Building, 180, Queen's Gate, London, England, SW7 2BZ.
>jvp@doc.ic.ac.uk    +44 71 589 5111 ext 4983

	I think it would be worth trying to create two named pipe files
(if you're using System V) in the /tmp directory, one for Quintus -> C
and the other for C -> Quintus.  You can redirect stderr and stdin of the
C program to these pipes.  Try using open/3 to open these pipe files in
Quintus (not quite sure whether this works).  If this does not work, try
redirecting Quintus' input and output streams to these files.  (tell/1,
told/0, etc).  If all these fails, write a small C program for opening
pipe files and link it to Quintus.

	Some time ago, I tried these techniques, but now I have already
forgotten how I let Quintus and C talk to each other exactly.  Of course,
the solution depends on the particular situation.  If this is not detailed
enough, you may send a email to me so that I will try these things out
myself to give you a more complete answer.
 ________________________________________________________________
| Was entstanden ist, das muB vergehen !                         |
| Was vergangen, auferstehen !                                   |
|                          Mahler: Symphony No. 2 "resurrection" |
|________________________________________________________________|
Tong Bo-Ming                              email: bmtong@cs.cuhk.hk
Newsgroups: comp.lang.prolog
From: gupta@nmsu.edu (Gopal Gupta)
Subject: Logic Programming as an Introductory Programming Paradigm
Organization: NMSU Computer Science
Date: Wed, 26 Aug 1992 15:42:23 GMT

		       Call for Participation

		Logic Programming as an Introductory
			Programming Paradigm

		Informal Birds-of-a-Feather Session
		
		Joint International Conference and 
		Symposium on Logic Programming '92

		      Tuesday, Nov 10th, 1992
			   6:00PM -- 8:30PM

		  Organizers: J. Reinfelds and G. Gupta

This informal session is  devoted to  discussion on  using  the  logic 
programming  paradigm to teach programming to beginners. The  emphasis 
is on  teaching  logic  programming (rather than Prolog), and  the aim 
is to induce beginners to learn ``declarative thinking." This approach 
can be  contrasted with  the functional programming  approach that has 
been becoming increasingly popular recently.

The discussion  is open to  all the participants in the conference who 
are  invited  to present  their  views on  (but  not  limited  to) the 
following issues:

1) Why is  Logic  Programming  a  more  suitable paradigm for teaching 
	programming to beginners?
2) Is there a need for  using LP for this purpose, or is FP enough, or
	is some other approach better?
3) How to evaluate the success of such an enterprise?
4) Your  experiences  related  to  using  LP  to  teach programming to
	beginners.

Dissenting views are specially welcome.  

As part of the session  we will  relate our  experience  with using LP 
(and a closely co-ordinated  sister course in discrete Math and Logic) 
to teach programming to Freshman students  at New Mexico State. Others 
are welcome to relate their experiences too. 

Please note  that the primary focus of the session will be on teaching 
logic programming to beginner programmers. Discussion related to teach-
ing Logic Programming to people other than beginners is not encouraged.

Please  send email (to gupta@nmsu.edu  or  juris@nmsu.edu) if  you are 
interested in participating. Please indicate in your email if you just 
want to attend the session or  whether you  intend to  present a short 
position paper too.

---------------------------------------------------------------------
Gopal Gupta
Department of Computer Science	   email: gupta@nmsu.edu
Box 30001, Dept. 3CU		      	  gupta@compsci.bristol.ac.uk
New Mexico State University	   Ph: +1 (505) 646 6236 
Las Cruces, NM 88003-0001	   Fax: +1 (505) 646 6218
USA
---------------------------------------------------------------------

	 
Newsgroups: comp.lang.prolog
From: chik@icot.or.jp (Takashi Chikayama)
Newsgroups: comp.lang.prolog
Subject: Re: Compilation of Disjuncts
Date: 3 Sep 92 02:10:51 GMT
Reply-To: chikayama@icot.or.jp
Organization: Institute for New Generation Computer Technology, Tokyo, Japan.

In article <MATSC.92Sep2141625@vishnu.sics.se>
	matsc@sics.se (Mats Carlsson) writes:

 |   do you do anything special about this construct, or do you just
 |   consider it as an ordinary predicate with a definition like:
 |   P ;_Q :- P.
 |   _P; Q :- Q.
 |
 |SICStus Prolog does nothing special, and considers it as an ordinary
 |predicate as you describe.

Don't you have to do something special to extend the scope of cut
operators?  As I understand it, the program A below has only one
solution of X=1, while the program B should have both X=1 and X=2.

   program A:
	p(X) :- q(X), (true, !; fail).
	q(1). q(2).
	?- p.
   program B:
	p(X) :- q(X), or((true, !), fail).
	q(1). q(2).
	or(T, _F) :- T.
	or(_T, F) :- F.
	?- p.

In case of SICStus, this "something special" might have been small.
More complicated mechanisms might be needed in an implementation
without a separate choice point stack.

Takashi Chikayama
ICOT
Newsgroups: comp.lang.prolog,news.answers
From: ted@nmsu.edu (Ted Dunning)
Newsgroups: comp.lang.prolog
Subject: Re: Help on problem needed!
Date: 29 Aug 92 04:16:31 GMT
	<14219@goanna.cs.rmit.oz.au> <meskes.714916931@ulysses>
Reply-To: ted@nmsu.edu
Organization: Computing Research Lab


In article <meskes.714916931@ulysses>
meskes@ulysses.informatik.rwth-aachen.de (Michael Meskes) writes:

   All the answers are quite interesting but the don't solve the
   problem.  As far as I know Prolog is turing-complete and the proofs
   I know don't use the Cut. So why isn't it possible to solve this
   problem im Prolog?

rok put his thumb on the answer... you can easily interpret languages
which implement things like if/then/else in pure prolog even if you
can't implement if/then/else directly.  in particular, the code for a
turing machine interpreter is only a few lines.  this proves turing
equivalence, and means that if you really wanted to, you could write
an interpreter for prolog _with_ a cut to run on this turing machine.
this wouldn't count as a correct answer on most exams (or homeworks!).

Just for example, here is just such a simulator (the turing machine
program is encoded in the step predicate):

turing(Tape, State, FinalTape, FinalState) :-
    step(State, Visible, NewState, NewCell, Direction),
    change_tape(NewCell, Tape, Direction, NewTape),
    turing(NewTape, NewState, FinalTape, FinalState).

turing(Tape, done, Tape, done).

change_tape(New, tape(_, [L|Left], Right), left, tape(L, Left, [New|Right])).
change_tape(New, tape(_, Left, [R|Right]), right, tape(R, [New|Left], Right)).
    
    
--

There ain't nothin' in this world that's worth being a snot over.
	Larry Wall
Newsgroups: comp.lang.prolog
From: sby@ern.doe.ernet.in (S. Bhardwaj Yadavalli)
Subject: Hypertext with Prolog
Organization: Department of electronics, New Delhi, India
Date: Fri, 4 Sep 1992 04:05:04 GMT

Query 1 :

Can any one give ANY references to ANY work done in the direction
of using a hypertext tool with Prolog ( Quintus Prolog ) preferably on Unix
386 ? In general has any on successfully implemented something of this type
? Some one SHOULD have !! 


Query 2 :

Where can I get a GOOD, WORKING, X-Window interface for Quintus Prolog ?
I remember to have seen someting reg XWIP ? Any help will be thankfully
acknowledged !!


S.Bharadwaj Yadavalli
AI Division
National Informatics Centre, New Delhi INDIA
From: ok@goanna.cs.rmit.oz.au (Richard A. O'Keefe)
Newsgroups: comp.lang.prolog
Subject: Re: Help on problem needed!
Keywords: help
Date: 27 Aug 92 07:29:44 GMT
Organization: Comp Sci, RMIT, Melbourne, Australia

In article <1992Aug25.074623.25450@greco-prog.fr>, billaud@greco-prog.fr (Michel BILLAUD) writes:
> In article <meskes.713709771@ulysses> meskes@ulysses.informatik.rwth-aachen.de (Michael Meskes) writes:
> 
> >Can you program a IF...THEN...ELSE in Prolog without using the cut?
> 
> No. a proof by contradiction:

Well, a lot depends on what goes in the gaps.  If the stuff to go in the
gaps is logical formulas, the proof goes through.  But with suitable
restrictions it is possible.  For example, define
	<test> ::= <expression> <a.relop> <expression>
	        |  <term> <t.relop> <term>
	        |  NOT <test>
	        |  <test> AND <test>
	        |  <test> OR <test>
where the understanding is that the arithmetic expressions whose values
are to be compared and the terms which are to be compared must be ground.
(NU-Prolog-style 'when' declarations for comparison predicates can do this.)
Then we can negate a formula:
	NOT(E1 a.R E2) => E1 NOT(a.R) E2		e.g. NOT(<) = >=
	NOT(T1 t.R T2) => T1 NOT(t.R) T2		e.g. NOT(@<) = @>=
	NOT(NOT(T))    => T
	NOT(X1 AND X2) => NOT(X1) OR NOT(X2)
	NOT(X1 OR  X2) => NOT(X1) AND NOT(X2)
and something of the form
	IF <test> THEN <true> ELSE <false>
can be converted to
	( <test>, <true>
	; NOT(<test>), <false>
	)
Note that SB-Prolog already recognises some special cases of this pattern,
so that ( X < 0, a ; X >= 0, b ) will be compiled as an if-then-else.

If you are writing an interpreter for some other language (e.g. a pure
functional programming language) you can _interpret_ an if-then-else in
that language without a Prolog cut.

-- 
You can lie with statistics ... but not to a statistician.
Newsgroups: comp.lang.prolog
From: baier@forwiss.uni-passau.de (Joern Baier)
Subject: Re: Time and Date in Quintus P.
Organization: University of Passau, Germany
Date: Fri, 4 Sep 1992 18:53:08 GMT

In article <Bu0yr6.LAC@acsu.buffalo.edu> v104n55k@ubvmsd.cc.buffalo.edu (David I Schwartz) writes:
>[...]
>Check out your library files. In version 3.1.1, there are predicates for 
>dates (date.pl) and random number generators (random.pl). I think these
>may be in your directory already. You'll have to look in these library
>files to see which predicates you'll need.
Yes, I found both files in the library. Thank you (and Fernando Pereira who
answered by mail)!
The random number generator works fine but the consulting of 'date.pl'
wasn't successful:

----------------------------------------------------------------------
gandalf:~/prolog/dp 104> prolog

Quintus Prolog Release 2.5.1 (DECstation 3100, Ultrix 3.1)
Copyright (C) 1990, Quintus Computer Systems, Inc.  All rights reserved.
1310 Villa Street, Mountain View, California  (415) 965-7700

| ?- [library(date)].
[consulting /private/projects/quintus/generic/qplib2.5.1/library/date.pl...]
 [consulting /private/projects/quintus/generic/qplib2.5.1/library/errno.pl...]
 [errno.pl consulted in module errno 0.500 sec 11,884 bytes]
ld:
Undefined:
gmtime
localtime
[ERROR: Foreign interface, call to Unix "ld" failed (error 413)]
 [Loading of foreign files NOT completed]
[date.pl consulted in module date 1.333 sec 22,508 bytes]

yes
| ?-
----------------------------------------------------------------------

Then I tried to compile 'date.c' directly:

----------------------------------------------------------------------
gandalf:~/prolog/dp/date 111> gcc date.c
date.c: In function `QD4mat':
date.c:358: warning: suggest parentheses around && within ||
ld:
Undefined:
main
QP_atom_from_string
collect: /usr/bin/ld returned 1 exit status
----------------------------------------------------------------------

It seems that 'QP_atom_from_string' is not defined.

What might help???

Thanx in advance and have a nice weekend,
			Joern
-- 
Joern Baier     (baier@forwiss.uni-passau.de) 
Jesuitengasse 9 	   __o
D-W8390 Passau 		 _ \<,_
Tel +49/851/35239 	(_)/ (_)