Updated A.Sloman June 1990


Select headings to return to index

This file is $usepop/pop/doc/sysspec

Copyright, University of Sussex 1986,1987,1990 - All rights reserved

THE SUSSEX UNIVERSITY POPLOG SYSTEM ===================================

This file gives an overview of the POPLOG directory structure. For information on library mechanisms see REF * LIBRARY.

    (for online use put cursor on desired entry then do <ENTER> g)


What follows is an overview of POPLOG, including incremental compilers for POP-11, PROLOG Common LISP and Standard ML, a screen editor (and word-processor) VED, Poplog Window Manager, interface to the X windows system, and many program libraries and documentation files.

At present POPLOG runs under VMS, and a variety of versions of the Unix operating system (including Ultrix, SunOS HP-UX and Dynix), on a variety of processors including VAX, M680?0, SPARC, 80386, MIPS.

A complete detailed specification of the system would be very lengthy, so this is a brief over-view of the system as supplied. We reserve the right to change the organisation of the files, and to add extra features. However, at least all the facilities listed here will be provided, though not all will be fully supported. (See below).

Disk space required

The complete system requires between 20 and 30 Mbytes of file space depending on how many saved images are used, which language systems are installed, and whether the object libraries are kept online. It is possible to reduce the amount of disk space considerably by removing unwanted directories. See the Poplog Administrator's Guide for details.

Memory requirements

Experience suggests that useful work can be done with POP-11 and VED on a single user machine with about 2 MBytes memory. However, with the growth of operating systems, window managers, etc. it is now recommended that a minimum of 4 Mbytes be provided for a diskless workstation, and preferably 8 Mbytes. However Poplog itself can run in far less memory, e.g. process sizes start from under 1.5 Mbytes. A 16Mbyte Sun-3 has been able to support over 20 students logged in simultaneously.

When the system is converted to run on smaller systems, memory limitations may make it necessary to leave out portions of POPLOG.

File Specifications

In this document file specifications have been given in UNIX format. POPLOG provides automatic translation from UNIX file specifications on VMS machines. The file specifications in this document can easily be converted to VMS as follows:

    (a) the UNIX environment variable "$usepop" at the beginning of a
      file name corresponds to a VMS disk specification "usepop:"
    (b) everything between the first and the last occurrences of the
      character "/" corresponds to a VMS directory name, and
    (c)everything to the right of the last "/" is the file name.

So, for example: the UNIX file specification "$usepop/pop/doc/sysspec" would refer to the VMS file "usepop:[pop.doc]sysspec" (i.e. this file) and the UNIX directory specification "$usepop/pop/lib/auto/" would refer to the VMS directory "usepop:[]". (Note that the final "/" character is not required by UNIX but is included here for the sake of clarity.)

In what follows names preceded by a $ are either unix environment variables or VMS logical names. They are given in lower case, though in VMS they would be upper case (though translated automatically from inside POPLOG). Examples are $usepop, $popsys, $popsavelib. The Poplog environment variables are set up in the file

$usepop/pop/com/popenv (Unix Poplog) usepop:[] (VMS Poplog)

Levels of support

The POPLOG system is very large and includes many library programs which have been found useful by some users, though they do not form part of the main system. It also includes a large amount of teaching material, which has been developed at Sussex University for teaching programming and Artificial Intelligence, some of which refers to library and demonstration programs that are provided with the system.

The files that are not part of the main system are provided 'AS IS'. We cannot offer full support for them, as the man-power requirements would be too great, though we will be prepared to receive written reports of bugs or other infelicities and will attempt to deal with problems in later releases. In some cases it may be possible to provide help or advice. But no guarantees can be given.

The portions of POPLOG which are fully supported are:
    The system generation command files
    The POP-11 language system, including:
        the POP-11 autolodable library files in $usepop/pop/lib/auto/
    The PROLOG language system including its autoloadable library
        and help system, and other essential library files.
    The COMMON LISP language system, including its autoloadable
        and help system, and other essential library files.
The ML language system, including its help and library files
    The VED screen editor VED, the online help system based on VED
        and the VED autoloadable library files in $usepop/pop/lib/ved/
The X windows interface
For use with SUN workstations a window-manager program is provided which handles SUN windows communicating with a POPLOG process that may be running on the same machine or a different machine. At a later date versions of the window manager will be supplied for other workstations.

Unsupported portions of POPLOG

Not fully supported at present are:
    The POP-11 TEACH files and the library programs they refer to
    The POP-11 program libraries not listed above
    The PROLOG TEACH files and the library programs they refer to
    The PROLOG program libraries not listed above
    The documentation and program libraries provided in the "contrib"
        directory $usepop/pop/contrib

POP-11, PROLOG, LISP and ML are integrated with the editor, VED, described below.

System overview

    This is the core language. It is a LISP-like language with an
    appearance more like PASCAL. It is a much expanded superset of POP2
    the language developed for AI research at Edinburgh University. The
    main features of POP-11 are defined in the files in $usepop/pop/ref/.
    Information on library files is given in HELP and TEACH files (see
POP-11 provides a wide variety of syntactic constructs, list processing, pattern matching, properties (hashed association tables), processes, tree-structured sections, save and restore, 'autoloading' of library files, many built in data-types, and user-defined data-types, lexical and dynamic scoping of variables, facilities for implementing compilers, and many other features. Most of the facilities of Common Lisp are also in POP-11, including indefinite precision arithmetic, ratios, complex numbers. Yet POP-11 is a much smaller system than most Common Lisp systems. A fairly complete specification of Pop-11 can be found the files in $usepop/pop/ref/ and $usepop/pop/help
POP-11 is the main systems implementation language used in POPLOG.
There is a substantial amount of online documentation. The book POP-11: A PRACTICAL LANGUAGE FOR ARTIFICIAL INTELLIGENCE by Barrett, Ramsay and Sloman and published by Ellis Horwood and John Wiley provides a good introduction to a subset of the language. Other references are given in $usepop/pop/help/poprefs
    The Prolog compiler is implemented using POP-11 compiler routines.
    The syntax corresponds closely to Prolog as described in
    W. Clocksin and C.S. Mellish: PROGRAMMING IN PROLOG, though there
    are some minor alterations, for compatibility with DEC-10 Prolog.
    Library packages are available which allow tighter compatibility
    with PDP-11 Prolog.
Prolog procedures can call POP-11 (or LISP) procedures, and vice versa.
The main features of POPLOG Prolog are described in files in the directory $usepop/pop/plog/help/
    This is a version of Common Lisp, the most widely-accepted dialect of
    LISP, designed to include the useful features of INTERLISP and
    MACLISP. A full specification of Common Lisp can  be found in Guy
    Steele's book "Common Lisp: The  Language" (Digital Press,  1984).
    POPLOG CLISP became available from Version 11, mid-1985.
Details of the system can be found in $usepop/pop/help/clisp
    POPLOG ML is an implementation of the polymorphic functional
    language ML version 2.0
Details of the system can be found in $usepop/pop/help/pml
    This is a powerful screen editor providing a great many features,
    including large and small cursor movements in 8 directions,
    horizontal and vertical scrolling, different modes for program and
    text files, simple text formatting facilities, multiple edit
    buffers, multiple screen windows. The editor can be tailored
    to suit a variety of terminals, and users can make their own
    temporary or permanent modifications. A library file provides a
    partial Emacs emulation.
The editor is integral with the rest of POPLOG, which means that the full power of POP-11 is available for writing programs to extend its power.
The editor recognises POP-11, PROLOG, LISP or ML files from the file extension, and allows a portion of the file to marked and then compiled. It is also possible to cause program output to go straight into a file in the editor, so that on a VDU output is not lost because of scrolling off the screen.
The editor is used for examining on-line documentation. See below.
Much of the behaviour of the editor is explained in online TEACH and HELP files. For details of relevant files see $usepop/pop/help/ved
The mechanisms by which VED adjusts itself to different terminals are described in $usepop/pop/ref/vedterminals (REF VEDTERMINALS) $usepop/pop/help/terminal (HELP TERMINAL).
The Poplog X Windows interface
    Since version 13.8 Poplog has provided several levels of support for
    interaction with  an X  Windows  server (Version  11, release  4  or
    later). The system files for this are in $usepop/pop/x/*
Introductory overview documentation can be found in the HELP X file, i.e. $usepop/pop/help/x
Additional features:
    Poplog Window Manager
        See $usepop/pop/help/pwm
    The FLAVOURS object-oriented programming extension to Pop-11
        See $usepop/pop/help/flavours
    A forward chaining production system: LIB NEWPSYS
        See $usepop/pop/help/newpsys
    A directory of software, documentation and teaching material
    supplied on an "as is" basis by Poplog users, mainly at Sussex
        See $usepop/pop/contrib


There are several levels of documentation, all accessible online using the editor. See $usepop/pop/help/documentation for an overview (HELP DOCUMENTATION)

The main HELP files are in the directory $usepop/pop/help/ and provide relatively short descriptions of facilities in the three languages and the editor. See HELP HELPFILES. There are other help directories for specific languages.

TEACH files are in the directories $usepop/pop/teach/ and $usepop/pop/plog/teach/ and provide more verbose explanations, suitable for beginners. There are also some introductions to Artificial Intelligence concepts and techniques, including parsing, building expert systems, searching, etc. For an overview see $usepop/pop/teach/teachfiles

REF files are in the directory $usepop/pop/ref/ and provide documentation on the central mechanisms and facilities in the POP-11 system, such as text itemisation, compilation, arrays and records, input-output facilities, system startup, etc.

DOC files are in the directory $usepop/pop/doc/ and are intended to provide documentation for printing out in the form of manuals. These may be accessed online, but this is not their primary use, and some doc files may require formatting before they can be read.

The editor provides commands which automatically search in one of these directories, and if the relevant files are not found the search continues in other directories. Users can modify the search lists, and can add new directories if they wish. See HELP INITIAL for more details. It is possible to extend the documentation categories, as described in HELP VEDGETSYSFILE

The PRINT command given to the editor will print the current file on the standard printer, whether it is a user file or a library file.

Search lists

The online documentation and libraries are accessed via search lists (lists of directory names) that can be altered by individuals or groups of individuals, tailoring the system to various needs. The built in search lists include 'local' library names so that system wide additions can easily be added which will automatically be accessed by the HELP, TEACH, LIB, or autoload commands, and will survive the installation of new releases.

Search lists can be altered either globally or in user programs run when the system starts up. See HELP INITIAL

Program libraries

The POPLOG system is provided with a collection of program libraries for a variety of purposes. The file REF LIBRARY explains some of the mechanisms used.

    includes a collection of autoloadable files which are essentially
    standard extensions to POP-11
    provides autoloadable files which extend the editor VED
    provides files which are not autoloadable, but require the use of
    the LIB or USES command. These files are demonstrations, utilities,
    and packages. For example LIB * SHOWTREE can be used for printing a
    tree structure into an editor buffer in a graphical format.
    provides files containing data for demonstration or utility programs
$usepop/pop/lib/data/ved_what (WITHDRAWN)
    This directory used to contain files needed for the ved_? and ved_??
    commands. However, the mechanism has been generalised and based on
    "REF" files, so this directory is no longer needed.
    provides a collection of demonstration programs
    provides an object oriented programming package, modelled loosely on
    Files defining some global constants used in system programs. These
    files can be merged into the current compiler stream using the
    "#_INCLUDE" or "include" mechanisms.
    Saved images for Prolog, Common Lisp, Poplog ML, Eliza, etc.
    Programs concerned with the Poplog window manager (not in all
    versions of Poplog)
    Programs required for running the SUN POPLOG window manager
    and using VED on the sun terminal
    Provides simple LOGO like facilities for drawing pictures into a 2-D
    array which may subsequently be printed out, or used as input to
    other programs. A version of the 'turtle' may be used with the
    editor to create pictures in editor files.
    Provides a collection of autoloadable procedures making use of the
    matcher to search a simple database of list structures.
    Contains prototype versions of new libraries, supplied for
    evaluation and comment. Being experimental, the facilities provided
    by such libraries may be modified in future. While all reasonable
    endeavours will be made to limit incompatible changes, programs
    using these facilities may require modification to utilise later
    Libraries for use with Common Lisp
    Prolog library files.
    Libraries for use with the Poplog ML system
    Libraries concerned with the X windows system
    C source code for building the Poplog window manager
    Libraries and documentation provided by users

Saved images

Facilities are provided for  creating saved images containing  regularly
used demonstration programs  or utilities. For  instance, a saved  image
containing  the  ELIZA   program  may  be   constructed  and  used   for
demonstration purposes. This  can be re-made  after the library  program
has been changed, using the command file

(on VMS the file is

The Prolog, Common Lisp and ML systems are provided in the form of saved images extending the core POPLOG system which includes POP-11 and VED.

As mkeliza and other 'mk..' files show, a saved image can be made to run some program or obey instructions whenever it is started up.

Saved images in POPLOG may be 'layered', so that different users may share a saved image with common utilities, etc., and build their own saved images relative to it.

The files in $usepop/pop/lib/demo/ provide a collection of demonstrations suitable for naive users indicating some of the features of Artificial Intelligence programs.

System saved images are stored in $usepop/pop/lib/psv ($popsavelib) Local saved images may be added in $poplocal/local/bin ($poplocalbin), or in user's own directories. When asked to start up with a saved image restored, POPLOG will search directories listed in $popsavepath, in order to find a saved image.

Command files

The $usepop/pop/com/ directory provides command files which are useful for setting up logical names (environment variables) and commands for users. See especially $usepop/pop/com/popenv ( on VMS)

Users should all have login files which access these files, as described in the Administrator's Guide and User Guide.

System building files

If the operating  system is changed  and the system  has to be  rebuilt,
command files to be used will be found in the directories

See especially the file 'newpop' ('' on VMS) and files in $usepop/pop/com whose names start with 'mk' (for making saved images when the system is re-built).

PROLOG source  files are  in  the directories  in  $usepop/pop/plog/.../
Command files are provided for rebuilding prolog, e.g.
There are also POP-11 library  files and system building files  provided
for COMMON LISP in the  directories $usepop/pop/lisp/.../ and a  command
file for re-building it in
    NB. These files are only supplied to sites with POPLOG SOURCE
A directory of source files and system-building utilities is provided. Most of the source files are written in an extended dialect of POP-11, known as Syspop, which proves C-like pointer manipulation facilities. These files are supplemented with a small number of assembler files for efficiency. A collection of POP-11 utilities is provided for re-compiling POP-11 source files in case they are altered, and command files to re-build the system.
At some time towards the end of 1990 it is expected that the Poplog system compiler POPC will be made available to users for producing "delivery" systems built using Pop-11 or Prolog.

The POPLOG directory tree

What follows is a list of the main directories included with the Poplog system. There is no guarantee that exactly the files listed here will be supplied at a later date. In fact what is most likely is that the files will be added to, though there may also be some re-arrangement.

Many of the directories are accessed by an environment variable or logical name. Where this is the case the name is given in capitals beside the directory name. The actual logical name will not be capitalised (except in VMS where case makes no difference in file specifications).

Directories that may be deleted once the system is installed and all the saved images have been built are marked.

Directory           Function
---------           --------
                    ($popcom) Login files and other command files, e.g.
                    for building saved images
                    ($popcontrib) Libraries and documentation provided
                    by users
                    A collection of files ultimately intended for
                    hard-copy manuals (Includes this document as
                    Files accessed by means of the HELP command. By
                    starting with HELP HELPFILES, it is possible to get
                    an overview of some of the main options available.
                    POP-11 and POPLOG System documentation.
                    Some provisional VED system documentation
                    Files required for the <ENTER>?? rapid lookup
                    A collection of relatively verbose documentation
                    files, used for teaching. Mostly concerned with
                    POP-11, VED and AI techniques
                   Various sub-directories with POP-11 library programs.
                    ($popsavelib) System saved images stored here (with
                    names ending in '.psv').
                    ($popautolib)   POP-11 Auto-loadable library files
                    used a great deal.
                    Another group of POP-11 autoloadable files.
                    Data files for demo or utility programs
                    Some files for setting up demonstrations
                    Files for the flavours system.  (see TEACH FLAVOURS)
                    ($popliblib)   Non-autolodable library files,
                    accessed by means of the LIB or USES command.
                    A demonstration program, a little like Winograd's
                    O/S dependent system files
                    Prototype versions of new libraries supplied for
                    evaluation and comment.
                    Source, libraries and documentation for the Common
                    Lisp system.
                    Autoloadable Lisp libraries.
                    Library of format printing routines.
                    Lisp HELP files.
                    Non autoloading LISP library.
                    Lisp system reference files.
                    Source of the Common Lisp system.
                    Source, documentation and library files for the
                    PROLOG system
                    Prolog autoloadable libraries.
                    Prolog HELP files.
                    Prolog library files.
                    Prolog Source files.
                    Prolog TEACH files (may be extended).
                    Files concerned with the ML subsystem
                    ML online documentation
                    ML libraries
                    Sources for creating the ML compiler
                    A collection of autolodable picture drawing files
                    (drawing into a 2-D array, or into the editor).
                    ($popvedlib)  Autoloadable extensions to the VED
                    editor. See $usepop/pop/ref/ved* for information.
                    ($popsys)   Executable or shareable images. On UNIX
                    systems, most of these files will all be linked
                    to the POP-11 image file. This is because the core
                    system behaves differently depending on what name
                    it is invoked with. The mechanism is explained, and
                    made use of, in $usepop/pop/com/popenv (but not on
                    Directories concerned with the Poplog interface to
                    the X Windows system. The organisation described
                    below is provisional and may change.
                    C source code for the Poplog widget set
                    Executables and saved images for X. These may
                    later be merged with $usepop/pop/pop ($popsys)
                    Includes libXpw.a the random archive library of
                    the poplog widget set.
                    Command files for making X saved images
                    Location for Prolog-specific X libraries
                    Pop-11 based interface to X Windows, includes the
                    Some facilities that are available from V13.9 for
                    compatibility with programs in earlier versions of
                    X, but which may be withdrawn after Poplog V15
                    (or perhaps sooner)
                    Help files concerned with X facilities
                    Many of the most useful Poplog X Windows tools are
                            Low level interface procedures
                    Poplog X reference documentation
                    Poplog X tutorial documentation
                    [May not be supplied]
                    Source files for re-building the system and making
                    saved images.    Most .W files and .O (.OBJ on VMS)
                    files are derived from .P files. .S (.MAR on VMS)
                    files are written in assembler. The 'newpop' command
                    file ( on VMS) is used for re-building
                    System building utilities (not normally supplied).
                    Programs and documentation contributed by users,
                    including all the programming examples for the
                    Gazdar and Mellish textbook on Computational

Local directories (for tailoring Poplog)

Many users will wish to add to the POPLOG system extensions local to their site. In order for these extensions not to be overwritten or affected by updates to the POPLOG system, these extensions may now be added into a directory structure outside the POPLOG tree. There is an environment variable defined, by default, to locate the root of this tree - $poplocal. However its location may be changed either for all users or by individual users, as explained in the Poplog Administrator's Guide.

Local Poplog directories must be located below $poplocal/local and should ideally mirror the structure of the main POPLOG tree with subdirectories such as com, auto, lib, teach, help, plog, lisp, etc. However, a different organisation may be more convenient, e.g. putting all local autoloadable files together in $poplocal/local/auto

The environment variable $poplocal is intended to be set up by the Poplog system manager before $usepop/pop/com/poplog is sourced so that the POPLOG startup procedure knows where to look for local extensions to the system. If the variable is not defined at the time $usepop/pop/com/poplog is sourced it will be set to the default position for a local tree; if the variable has a value it will be left unchanged. To maintain upward compatibility with previous releases of POPLOG (pre Version 13) the default position of these directories is $usepop/pop/local with $poplocal = $usepop/pop; i.e. the original position of the local tree. It is recommended that users move local extensions to a position outside the POPLOG tree and make use of the variable $poplocal. (Unix users may be able to make good use of symbolic links.)

The HELP, TEACH, REF, DOC, and LIB commands look for corresponding directories in the local tree before looking in the main system libraries. Similarly the autoloading mechanisms look in $poplocal/local/auto, and this is given the logical name $poplocalauto.

Local saved images should be stored in $poplocalbin, which defaults to $poplocal/local/bin (though $poplocalbin can be renamed). Alternatively they can be stored in the system directory $popsavelib.

(Some of the file and directory names are results of historical accidents, alas.)

Deleting unwanted files

After checking that everything works, and making a security dump of the
whole system, a considerable amount of space can be saved, by deleting
the following:
    All files in $usepop/pop/src/    - save several Mbytes
    All files in $usepop/pop/plog/src/
    All files in $usepop/pop/x/src/
Unwanted *.psv files in $usepop/pop/lib/psv ($popsavelib). E.g, if you don't use Common Lisp delete clisp.psv. If you don't use Prolog delete prolog.psv and logic.psv (a demonstration and teaching program).
The eliza.psv image is supplied only as a toy, and may be deleted.
If you don't have any machines at your site which can access this machine and which run the Poplog Window Manager, you can delete all the files in $usepop/pop/lib/pwm. Note that even if you cannot run the Poplog Window Manager on this machine, other machines may be able to use it with this copy of Poplog if they run the PWM and can access this machine (e.g. via "rlogin", or over tty lines).

If still short of space online help, ref, or doc files may be deleted, though the rapid access to documentation via the editor is one of the main features of Poplog. The program subdirectories of $usepop/pop/lib may be deleted apart from 'auto'. E.g demo and turtle may be unwanted.

NOTE: UNIX is a trade mark of Bell Laboratories VMS and Ultrix are trade marks of Digital Equipment Corporation SunOS is a trade mark of Sun Microsystems POPLOG is a trade mark of Sussex University

--- C.all/doc/sysspec --- Copyright University of Sussex 1991. All rights reserved. ----------