/usr/lib/swi-prolog/doc/Manual/swiprolog.html is in swi-prolog-nox 5.10.4-3ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
<TITLE>SWI-Prolog 5.11.18 Reference Manual: Section 1.1</TITLE><LINK REL=home HREF="index.html">
<LINK REL=contents HREF="Contents.html">
<LINK REL=index HREF="DocIndex.html">
<LINK REL=summary HREF="summary.html">
<LINK REL=previous HREF="intro.html">
<LINK REL=next HREF="status.html">
<STYLE type="text/css">
/* Style sheet for SWI-Prolog latex2html
*/
dd.defbody
{ margin-bottom: 1em;
}
dt.pubdef
{ background-color: #c5e1ff;
}
dt.multidef
{ background-color: #c8ffc7;
}
.bib dd
{ margin-bottom: 1em;
}
.bib dt
{ float: left;
margin-right: 1.3ex;
}
pre.code
{ margin-left: 1.5em;
margin-right: 1.5em;
border: 1px dotted;
padding-top: 5px;
padding-left: 5px;
padding-bottom: 5px;
background-color: #f8f8f8;
}
div.navigate
{ text-align: center;
background-color: #f0f0f0;
border: 1px dotted;
padding: 5px;
}
div.title
{ text-align: center;
padding-bottom: 1em;
font-size: 200%;
font-weight: bold;
}
div.author
{ text-align: center;
font-style: italic;
}
div.abstract
{ margin-top: 2em;
background-color: #f0f0f0;
border: 1px dotted;
padding: 5px;
margin-left: 10%; margin-right:10%;
}
div.abstract-title
{ text-align: center;
padding: 5px;
font-size: 120%;
font-weight: bold;
}
div.toc-h1
{ font-size: 200%;
font-weight: bold;
}
div.toc-h2
{ font-size: 120%;
font-weight: bold;
margin-left: 2em;
}
div.toc-h3
{ font-size: 100%;
font-weight: bold;
margin-left: 4em;
}
div.toc-h4
{ font-size: 100%;
margin-left: 6em;
}
span.sec-nr
{
}
span.sec-title
{
}
span.pred-ext
{ font-weight: bold;
}
span.pred-tag
{ float: right;
padding-top: 0.2em;
font-size: 80%;
font-style: italic;
color: #202020;
}
/* Footnotes */
sup.fn { color: blue; text-decoration: underline; }
span.fn-text { display: none; }
sup.fn span {display: none;}
sup:hover span
{ display: block !important;
position: absolute; top: auto; left: auto; width: 80%;
color: #000; background: white;
border: 2px solid;
padding: 5px; margin: 10px; z-index: 100;
font-size: smaller;
}
</STYLE>
</HEAD>
<BODY BGCOLOR="white">
<DIV class="navigate"><A class="nav" href="index.html"><IMG SRC="home.gif" BORDER=0 ALT="Home"></A>
<A class="nav" href="Contents.html"><IMG SRC="index.gif" BORDER=0 ALT="Contents"></A>
<A class="nav" href="DocIndex.html"><IMG SRC="yellow_pages.gif" BORDER=0 ALT="Index"></A>
<A class="nav" href="summary.html"><IMG SRC="info.gif" BORDER=0 ALT="Summary"></A>
<A class="nav" href="intro.html"><IMG SRC="prev.gif" BORDER=0 ALT="Previous"></A>
<A class="nav" href="status.html"><IMG SRC="next.gif" BORDER=0 ALT="Next"></A>
</DIV>
<H2><A NAME="sec:1.1"><SPAN class="sec-nr">1.1</SPAN> <SPAN class="sec-title">SWI-Prolog</SPAN></A></H2>
<A NAME="sec:swiprolog"></A>
<P>SWI-Prolog started back in 1986 with the requirement for a Prolog
that could handle recursive interaction with the C-language: Prolog
calling C and C calling Prolog recursively. Those days Prolog systems
were very aware of its environment and we needed such a system to
support interactive applications. Since then, SWI-Prolog's development
has been guided by requests from the user community, especially
focussing on (in arbitrary order) interaction with the environment,
scalability, (I/O) performance, standard compliance, teaching and the
program development environment.
<P>SWI-Prolog is based on a very simple Prolog virtual machine called
ZIP
<CITE><A class="cite" href="Bibliography.html#Bowen:83">Bowen <EM>et al.</EM>,
1983</A>, <A class="cite" href="Bibliography.html#Neumerkel:93">Neumerkel,
1993</A></CITE> which defines only 7 instructions. Prolog can easily be
compiled into this language and the abstract machine code is easily
decompiled back into Prolog. As it is also possible to wire a standard
4-port debugger in the virtual machine there is no need for a
distinction between compiled and interpreted code. Besides simplifying
the design of the Prolog system itself this approach has advantages for
program development: the compiler is simple and fast, the user does not
have to decide in advance whether debugging is required and the system
only runs slightly slower when in debug mode. The price we have to pay
is some performance degradation (taking out the debugger from the VM
interpreter improves performance by about 20%) and somewhat additional
memory usage to help the decompiler and debugger.
<P>SWI-Prolog extends the minimal set of instructions described in
<CITE><A class="cite" href="Bibliography.html#Bowen:83">Bowen <EM>et al.</EM>,
1983</A></CITE> to improve performance. While extending this set care
has been taken to maintain the advantages of decompilation and tracing
of compiled code. The extensions include specialised instructions for
unification, predicate invocation, some frequently used built-in
predicates, arithmetic, and control (<A class="pred" href="control.html#;/2">;/2</A>, <A class="pred" href="control.html#|/2">|/2</A>),
if-then (<A class="pred" href="control.html#send_arrow/2">->/2</A>)
and negation-by-failure (<A class="pred" href="control.html#\+/1">\+/1</A>).
<H3><A NAME="sec:1.1.1"><SPAN class="sec-nr">1.1.1</SPAN> <SPAN class="sec-title">Books
about Prolog</SPAN></A></H3>
<A NAME="sec:books"></A>
<P>This manual does not describe the full syntax and semantics of
Prolog, nor how one should write a program in Prolog. These subjects
have been described extensively in the literature. See <CITE><A class="cite" href="Bibliography.html#Bratko:86">Bratko,
1986</A></CITE>,
<CITE><A class="cite" href="Bibliography.html#Sterling:86">Sterling &
Shapiro, 1986</A></CITE>, and <CITE><A class="cite" href="Bibliography.html#Clocksin:87">Clocksin &
Melish, 1987</A></CITE>. For more advanced Prolog material see <CITE><A class="cite" href="Bibliography.html#Keefe:90">O'Keefe,
1990</A></CITE>. Syntax and standard operator declarations conform to
the `Edinburgh standard'. Most built-in predicates are compatible with
those described in <CITE><A class="cite" href="Bibliography.html#Clocksin:87">Clocksin &
Melish, 1987</A></CITE>. SWI-Prolog also offers a number of primitive
predicates compatible with Quintus Prolog<SUP class="fn">1<SPAN class="fn-text">Quintus
is a trademark of Quintus Computer Systems Inc., USA</SPAN></SUP>
<CITE><A class="cite" href="Bibliography.html#QUINTUS:manual">Qui, 1997</A></CITE>
and BIM_Prolog<SUP class="fn">2<SPAN class="fn-text">BIM is a trademark
of BIM sa/nv., Belgium</SPAN></SUP>
<CITE><A class="cite" href="Bibliography.html#BIMPROLOG:manual">BIM,
1989</A></CITE>.
<P>ISO compliant predicates are based on ``Prolog: The Standard'',
<CITE><A class="cite" href="Bibliography.html#Deransart:96">Deransart <EM>et
al.</EM>, 1996</A></CITE>, validated using <CITE><A class="cite" href="Bibliography.html#stdprolog:98">Hodgson,
1998</A></CITE>.
<P></BODY></HTML>
|