Frequently Asked Questions

Q0. Why is this system called B-Prolog?

This system was called ``Beta-Prolog'', meaning ``better'' in the beginning. Many users told me that: ``Beta'' is inappropriate because the system is very reliable. For this reason, I changed the name to ``B'' (still meaning better).

Q1. I tried to port B-Prolog to DEC Alpha. While compilation was successful, running it caused a crash with segmentation fault. What's the problem?

A. DEC Alpha is a 64-bit machine, but B-Prolog was written for running on 32-bit machines. To port the system to Alpha, you have to redefine some types such as ``long int'', etc. I have not tried the porting because I don't have an Alpha.

Q2. How can I build my Prolog program as a stand-alone application?

A. You can do this, but all the B-Prolog library and the compiler in ``bp.out'' goes with the application. The following tells you the trick:

In version 3.1 or newer, you can use the bi-directional interface with C to build stand-alone applications.

Q3. I want to have Prolog programs callable from C. Can I do this?

A. Yes, in version 3.1 or newer. See the chapter on "External Language Interface with C" in the manual.

Q4. Could you point out where I can get the Prolog source files of B-Prolog?

A. The distribution contains all the C source files such that you can install B-Prolog on your own computer. The Prolog source files are compiled as a whole into ``bp.out'', which is machine independent. The Prolog source files are not free. Contact the author for the price.

Q5. How can I deal with control stack overflows?

A. If your computer has more memory available, you can allocate more memory for use for the control stack. See the manual (Chapter Memory Management) about how to this.

Consulted programs are an order of magnitude slower and consume an order of magnitude more space than compiled programs. When I debug a large program, I usually run it in a mixed mode: those predicates (or files) which I really want to trace are consulted but all other predicates are compiled for execution.