FAQ for comp.lang.pop

This file is


Subject: FAQ The role of this newsgroup

(Barely)Maintained by Aaron Sloman. Last updated: 16 Mar 2007 ; 30 Nov 2009

The comp.lang.pop news group has nothing to do with Post Office Protocol or POP3.
However, a precursor of the Pop-11 language, developed in Edinburgh University and used for much of their research in AI in the 1970s and after, was known as POP2. The most important core ideas of Pop-11 come from POP2. Other derivatives of POP2 were POP10, WPOP (Wonderpop), AlphaPop (For Mac). These are all now defunct. There never was a POP3 version.


CONTENTS


INTRODUCTION: WHAT IS COMP.LANG.POP FOR?
(Back to Contents)

The newsgroup comp.lang.pop was set up for discussion of the programming language Pop-11 and other languages in the Pop family (Pop2, Pop10, Wpop, Alphapop) and the other languages in the Poplog system, namely Prolog, Common Lisp and ML.

There is an associated email list "pop-forum", described below.

One use for the news group and email list is to report bugs in Poplog or associated libraries/packages, etc. or to request help help solving programming problems involving one or more of the Poplog languages, especially Pop-11, for which there is no other news group. When reporting a bug or requesting help it may be useful to use the file: http://www.cs.bham.ac.uk/research/poplog/BUGFORM.txt.

From time to time people post queries to this news group concerning email (POP3 protocols) because they misinterpret the name of the group. comp.lang.pop has nothing to do with email software, or the Post office protocol.

People wishing to discuss that sort of thing should post to a news group that is more directly relevant, e.g.

comp.mail.misc

or one of the other comp.mail groups. Their questions and answers are then more likely to be read by people with relevant knowledge and interests.


WHAT IS THE "POP" FAMILY OF LANGUAGES?
(Back to Contents)

The "Pop" family of languages, partly described in

all have an open stack (like Forth), incremental compilers (like Basic, Prolog, etc.) rich support for list processing (like Lisp), procedures as first class objects (like Scheme), and the compiler as a procedure which can be accessed at run time by users.

They vary in other details, e.g.:


THE MOST SOPHISTICATED VERSION IN THE POP FAMILY
(Back to Contents)

The most sophisticated version of the Pop language family is Pop-11, developed since about 1975 at Sussex University. It was initially implemented by Steve Hardy on a Digital Equipment PDP11/40 computer, at first running the RSX11D operating system, which we later replaced with Unix in 1976.

From about 1981, when it was ported to a VAX running VMS John Gibson took over as the chief architect, though many others made important contributions. After Chris Mellish implemented Prolog in Pop-11 (later much improved by John Gibson with low level support in the Poplog Virtual machine), it became known as Poplog, from about 1982. The Pop-11 language remained the core of Poplog and continued being developed until around 1988 when commercial sales ended and Poplog became available free of charge. It is hoped that future development will be done by a consortium of expert users. If you are interested in joining a developer's discussion list email A.Sloman AT cs.bham.ac.uk

Pop-11 includes all the features listed above (and many more!). There is a "primer", suitable for people with programming experience:
http://www.cs.bham.ac.uk/research/projects/poplog/primer


EXTENDABILITY USING INCREMENTAL COMPILATION
(Back to Contents)

Because Poplog incremental compiler facilities are available in a suite of Pop-11 procedures which compile code incrementally to a powerful general purpose virtual machine, it is not hard to develop new languages or extensions to old ones. This is how Common Lisp, Prolog and ML are implemented in Poplog, and many people have implemented various extensions to Pop-11 and other languages based on Pop-11.

E.g. Robin Popplestone, at the University of Massachusetts, Amherst has implemented a version of scheme in Pop-11. It can be used in the Poplog environment (supported by Ved) and will be automatically ported to new hardware/software platforms whenever Poplog is ported. The scheme package is included among those listed at

Other examples include various types of Object Oriented extensions to Pop-11, including the Flavours package implemented in the mid 1980s, and the Objectclass extension (similar in many ways to CLOS) added to Pop-11 in the mid 1990s.

Another example: Pop-11 has been extended with new syntax in Poprulebase, a sophisticated forward chaining rule based system for building expert systems, cognitive models, etc. described in

That in turn is the heart of the sim_agent toolkit for exploring architectures for interacting intelligent agents, summarised in

The system is still being actively developed. Its philosophy and some uses are outlined in

A Sloman & B Logan, Building cognitively rich agents using the Sim_agent toolkit,
Communications of the Association of Computing Machinery, 42, 3, pp. 71--77 March, 1999

Changes to support agents with greater self-monitoring capabilities introduced in July 1999 are described in

Other users have at various times used Pop-11 (and other Poplog languages) to develop various systems either for research purposes or as products or tools used in-house. E.g. I believe the company COGSYS sells a package based on Pop-11 for developing process control systems. Pop-11 is also at the heart of the prize-winning Clementine data mining system marketed world wide by ISL (Integral Solutions Ltd., address below).


COMMERCIAL DISTRIBUTION
(Back to Contents)

Poplog was sold commercially between around 1982 and 1998. Initially it ran on a VAX under VMS and supported only pop-11 and prolog, along with a very simple lisp system. Common Lisp was added a few years later, followed by Standard ML. It was later ported to many Unix platforms as well as VMS on DEC Alpha, and linux on a PC. Until late 1998, it was marketed commercially world wide by ISL.

In 1992 ISL and Sussex University won an ICP award for achieving five million dollars worth of sales.

Following the take-over of ISL by SPSS in December 1998, Poplog has been made available free of charge, from the Birmingham Poplog directory, including sources. Details are in

A mirror site is at

All this should help revive interest especially in Pop-11, which many users think is far better for teaching AI to novices than Java or Prolog, and probably more approachable to many (ordinary) people than Lisp, though lisp has many of the same benefits.

See the discussion in:

Among the free poplogs is a version which runs under windows95/98/NT, though without the X-based graphical facilities. That has never been sold separately by ISL though they use it for Clementine on PCs under NT.

Perhaps with the sources available someone will port Poplog's graphical tools to the Windows environment. (ISL use a commercial package which emulates X on a PC, but that is out of the question for most users because of costs.)


SOME HISTORY
(Back to Contents)

The first of the Pop family of languages was originally developed in the late 1960s by Robin Popplestone. After some evolution (and re-naming) it was used for research in Artificial Intelligence at Edinburgh University throughout most of the 1970s and beyond, though other languages (e.g. Prolog, Common Lisp, ML) were favoured by some of the AI research groups.

I learnt Pop2 there running on an Elliot 4130 computer in 1972-3. Most of the multi-user operating system was implemented in pop2. (There was a single heap shared by all users!) A Pop2 manual ("the silver book") was published by Edinburgh University Press sin 1972 or 1973, but has long been out of print.

The other Pop languages grew out of pop2, with the usual divergence as languages evolve, but the only version that has survived as far as I know is Pop-11 in the Poplog environment.


ALPHAPOP ON MAC
(Back to Contents)

Alphapop was a Mac based version of a subset of pop-11 (e.g. not including lexically scoped variables), developed and sold by Cognitive Applications in the late 1980s, but has not been updated for the latest versions of the Mac operating system and used an out of date C compiler. If they put the sources in the public domain perhaps someone will bring it up to date.


BOOK ON POP-11, AND A PRIMER
(Back to Contents)

There is a book that provides more information about the history of Pop-11 and Poplog up to the late 1980s, though I don't know whether it is still in print.

POP-11 Comes of Age: The Advancement of an AI Programming Language,
1989, Ed. J.A.D.W. Anderson, Ellis Horwood, Chichester

The occasion was the 21st birthday of Popplestone's original language.

My chapter in that book, written when I was at Sussex, can be found in

(It is hoped to include additional papers on Poplog and Pop-11 there later on.)

A fairly detailed introduction to a subset of Pop-11 can be found in the Pop-11 Primer available in various formats (plain text, latex source, postscript, html) from the Birmingham Poplog directory

A browsable version of the primer (with one postscript figure), produced using LaTex2html is in:

The html version can be fetched in a tar file and unpacked for local use:


POPLOG "REF" AND "HELP" FILES
(Back to Contents)

The most complete specification of the latest version of Pop-11 is available only in the REF and HELP directories that come with the poplog system. This has all been made available stripped of the special graphical characters for use when the documentation is read in the Poplog editor Ved:


ONLINE TEACHING MATERIAL ON POP-11
(Back to Contents)

There is quite a lot of browsable Pop-11 teaching material in these directories:

N.B. NO LONGER ACCESSIBLE VIA: ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/

David Young's popvision library, developed at Sussex University has a number of utilities for image analysis and neural nets, with a lot of teaching material for vision. It is available in a browsable form at:

The whole package is available in a gzipped tar file:

(NOTE: it was designed for use with an 8-bit graphic display. If used on a machine with 16 or 24 bit "Truecolour" you will need to start X up in 8 bit mode to use the display facilities in popvision. It is hoped that the relevant procedures will be generalised later.)

There is also a lot of teaching material based on Poplog and Pop-11 at Sussex University and in other places, though not yet made accessible externally.


WHAT DOES POP-11 LOOK LIKE?
(Back to Contents)

Pop-11 is an incrementally compiled language with power comparable to Common Lisp but with a syntax closer to more conventional languages. E.g. here is a typical procedure definition in Pop-11, for testing whether an item is in a list (equivalent to the built in pop-11 procedure member):


    define is_in(item, list) -> result;
         ;;; Return true if item is in the list, otherwise false

         lvars thing;
         for thing in list do
             if thing = item then
                 true -> result; return();
             endif
         endfor;

         ;;; not found, so
         false -> result;
     enddefine;

     ;;; Test it: the result is left on the stack. Stack contents are
     ;;; printed out using the "=>" operator:
     is_in(3, [2 3 5 8])=>
     ** <true>

     ;;; More tests showing the generality of a type-free definition
     is_in("three", [one two three]) =>
     ** <true>

     is_in("three", [one 1 two 2 three 3]) =>
     ** <true>

     is_in(3, [one two three]) =>
     ** <false>

The same thing can be defined recursively, in a more familiar functional style as often used in Lisp or Scheme, and without using an output variable in the header (unused results are left on the "user stack" in any case).


    define is_in(item, list);
         if null(list) then false
         elseif item = hd(list) then true
         else is_in(item, tl(list))
         endif
     enddefine;

     ;;; Test it:
     is_in("cat", [bat cat dog elephant])=>
     ** <true>

     is_in(3, [one two three])=>
     ** <false>

Compare a Lisp (or Scheme?) equivalent:


    (defun is_in(item list)
         (cond
             ((null list) nil)
             ((equal item (car list)) t)
             (t (is_in item (cdr list)))))

     ; Test it
     (is_in `cat `(bat cat dog elephant))
     T

[NOTE: in Pop-11, the infix operator "=" corresponds to "EQUAL" in Lisp, whereas "==" corresponds to "EQ".]

Pop-11 also has pattern matching built in, support for developing new incrementally compiled languages, an object oriented subsystem similar to CLOS, an interface to the X window system, and many other features.

This is how the pattern matcher could be used to define is_in:

    define is_in(item, list) -> result;
         list matches [== ^item == ] -> result;
     enddefine;

Where "==" matches arbitrary segments of a list. The use of a pattern matcher makes it much easier to develop knowledge-based systems.

Lots more examples of Pop-11 code can be found in the Primer and online teach files, described above, and in source code libraries in the Poplog directory:

See especially the documentation directories in

The most detailed documentation on Pop-11 (written for experts) is in the files in

supplemented by these

(Unfortunately, many of the files in the distributed documentation directories have special character codes for reading in the VED editor. I have produced "stripped" versions in the above directories.)

The FAQ assembled by Steve Leach and Graham Higgins is no longer available as the www.poplog.org site is defunct.


THE POPLOG VIRTUAL MACHINE AND TWO LEVEL COMPILER
(Back to Contents)

Poplog is a multi-language Artificial Intelligence development environment, in which Pop-11 is the core language and Prolog, Common Lisp, and Standard ML are also supported in any combination.

The implementation of Pop-11 and all the other language is based on pop-11 tools for developing incremental compilers that can also be used to implement other languages which will then run wherever Poplog does.

Poplog provides a high level language-independent and machine- independent virtual machine (the Poplog Virtual Machine) which is rich enough to support a wide range of languages. There are Pop-11 procedures for planting instructions for this virtual machine. When the instructions reach the end of a procedure definition, the high level PVM instructions are compiled in a machine independent fashion to a low level Poplog Implementation Machine. The instructions at that level are then compiled incrementally (a procedure at a time) using a machine dependent "back end" compiler to instructions for the current machine. This two level incremental compiler is used by all the Poplog languages.

Poplog compiled procedures are data-structures in the heap and can be garbage collected, unlike compiled procedures in some other AI languages.

During system development and porting to a new machine a different back end is used which produces files of assembler for the target machine (and other information required during the linking phase).

Because of all this most of the core of the Poplog system is implemented in Pop-11 (in a special dialect with some C-like extensions to provide more efficient low level mechanism.) Building a new version therefore always requires access to a running Poplog. The advantage of using Pop-11 as the main implementation language rather than C or C++ is that Pop-11 (like Lisp) is a higher level language making system development much easier and more reliable. Also new features can be developed as Pop-11 code in libraries available to users, and then after thorough testing can later be incorporated into the system.


ONLINE INFORMATION
(Back to Contents)

For more information on Pop-11 and Poplog, and a collection of AI teaching material in Pop-11, see the Birmingham Free Poplog directory

Including the following:

Further information is available from:

Very detailed documentation can be accessed through the doc/ subdirectory mentioned above:

This is also all available in a tar file docdirs.tar.gz

The sysdoc directory is available in sysdoc.tar.gz


POP-FORUM EMAIL LIST
(Back to Contents)

There is an email list partially linked to the comp.lang.pop news group. It is currently maintained at the University of Birmingham. If you wish to join the pop-forum email list please register yourself at
https://mailman.cs.bham.ac.uk/mailman/listinfo/pop-forum
Messages to pop-forum are automatically forwarded to the comp.lang.pop group. The reverse link no longer works.

There is also a mailing list 'poplog-dev' for discussion of issues relating to development of poplog. This is not linked to any news group. To join this go to
https://mailman.cs.bham.ac.uk/mailman/listinfo/poplog-dev


AVAILABILITY
(Back to Contents)

Poplog is now available free of charge. Information is available at

Poplog was originally developed mainly at Sussex University, and was previously marketed by ISL, who used Pop-11 in their Clementine data-mining system. ISL were bought in 1998 by SPSS

     SPSS (UK) Ltd.
     1st Floor
     St. Andrew's House
     West Street, Woking
     Surrey GU21 1EB
     Telephone: +44.1483.719200
     Fax: +44.1483.719290
     WEB http://www.isl.co.uk
         http://www.spss.com/

OPENPOPLOG AT SOURCEFORGE
(Back to Contents)

For further information see: http://www.cs.bham.ac.uk/research/poplog/openpoplog.html


ACKNOWLEDGEMENTS
(Back to Contents)

Many thanks to Lee Goddard (home AT leegoddard.com) and Graham Higgins (gjh AT bel-epa.com) for help with conversion of this file to HTML.


Aaron Sloman, ( http://www.cs.bham.ac.uk/~axs/ )
School of Computer Science, The University of Birmingham, B15 2TT, UK
EMAIL A.Sloman AT cs.bham.ac.uk (ReadATas@please !)
PAPERS: http://www.cs.bham.ac.uk/research/cogaff/
TOOLS: http://www.cs.bham.ac.uk/research/poplog/freepoplog.html
TALKS http://www.cs.bham.ac.uk/research/cogaff/talks/