For Programmers: Free Programming Magazines  


Home > Archive > Prolog > March 2005 > [lptp] ERROR: Undefined procedure: prolog_listing: (:)/2









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author [lptp] ERROR: Undefined procedure: prolog_listing: (:)/2
student

2005-03-10, 3:57 am


I am trying to get Staerks' lptp package working with SWI-Prolog
on my PC but I keep getting the following error message:

ERROR: Undefined procedure: prolog_listing: (:)/2

For example,

?- consult(lptp).
....
LPTP, Version 1.06, July 21, 1999.
Copyright (C) 1999 by Robert F. Staerk
% /usr/local/lptp/src/lptp compiled 0.42 sec, 10,448 bytes

Yes
?- listing(check).


check(A) :-
ERROR: Undefined procedure: prolog_listing: (:)/2

If I am not mistaken, {:}/2 is declared as

lptp.pl: :- op(970,xfy,:). % two Peano dots, right
associative


Would someone please be so kind as to tell me what is going on here,
and what I have to do to make this problem go away?

Thank you.
Jan Wielemaker

2005-03-10, 8:57 am

On 2005-03-10, student <not@a.b.c.dINVALID> wrote:
>
> I am trying to get Staerks' lptp package working with SWI-Prolog
> on my PC but I keep getting the following error message:
>
> ERROR: Undefined procedure: prolog_listing: (:)/2
>
> For example,
>
> ?- consult(lptp).
> ...
> LPTP, Version 1.06, July 21, 1999.
> Copyright (C) 1999 by Robert F. Staerk
> % /usr/local/lptp/src/lptp compiled 0.42 sec, 10,448 bytes
>
> Yes
> ?- listing(check).
>
>
> check(A) :-
> ERROR: Undefined procedure: prolog_listing: (:)/2
>
> If I am not mistaken, {:}/2 is declared as
>
> lptp.pl: :- op(970,xfy,:). % two Peano dots, right
> associative
>
> Would someone please be so kind as to tell me what is going on here,
> and what I have to do to make this problem go away?


After redefining :, loading other sourcefiles may no longer work.
listing/1 is defined in the library and `autoloaded' if you call
listing, but it cannot be compiled correctly as terms holding : are read
differently.

The cleanest way to solve it is to make sure lptp can work with the default
definition of :. Another reasonable solution is to put lptp in a module
(operators are local to the module). You can also restore the original
definition after loading the file.

--- Jan
student

2005-03-11, 4:00 am

Jan Wielemaker wrote:
>
>
> After redefining :, loading other sourcefiles may no longer work.
> listing/1 is defined in the library and `autoloaded' if you call
> listing, but it cannot be compiled correctly as terms holding : are read
> differently.
>
> The cleanest way to solve it is to make sure lptp can work with the

default
> definition of :. Another reasonable solution is to put lptp in a module
> (operators are local to the module). You can also restore the original
> definition after loading the file.
>
> --- Jan


Thank you.

Sorry for the confusion on my part. Once I realized that xemacs
was not emacs and started using emacs, of course, LPTP started
working exactly as advertised.

For those of you who may not know about LPTP
[http://www.inf.ethz.ch/personal/staerk/lptp.html]:

"LPTP is an interactive theorem prover for the formal
verification of Prolog programs. It is a proof refinement system
that allows a user to construct formal proofs interactively. It
is possible to generate proofs deductively from the assumption
forwards to the goal or goal directed from the goal backwards to
the axioms. LPTP has the ability to search for proofs or parts
of proofs automatically. In the simplest case, LPTP just finds
the name of a lemma that already has been proved and is used at
a certain point in a proof. In the best case, LPTP finds
complete proofs. LPTP has been designed for correctness proofs
of pure Prolog programs. Pure Prolog programs may contain
negation, if-then-else and built-in predicates like is/2, </2
and call/n + 1. The programs, however, have to be free of cut
and database predicates like assert/1 and retract/1 which allow
to modify a program during runtime. The kernel of LPTP is
written in exactly the fragment of Prolog that can be treated in
LPTP. This means that LPTP uses no single cut. Moreover, in
principle it is possible to prove properties of LPTP in LPTP
itself." [user.pdf]

--
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com