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.
CONTENTS (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).
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.
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.
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:[pop.lib.auto]". (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:[pop.com]popenv.com (VMS Poplog)
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.
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.
POP-11 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 below).
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
PROLOG 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/
CLISP 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
PML 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
VED 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 University. 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.
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
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.
$usepop/pop/lib/auto/ includes a collection of autoloadable files which are essentially standard extensions to POP-11
$usepop/pop/lib/ved/ provides autoloadable files which extend the editor VED
$usepop/pop/lib/lib/ 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.
$usepop/pop/lib/data/ 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. See HELP * VED_WHAT REF * VED_?
$usepop/pop/lib/demo/ provides a collection of demonstration programs
$usepop/pop/lib/flavours/ provides an object oriented programming package, modelled loosely on ZETALISP FLAVORS
$usepop/pop/lib/include/ 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.
$usepop/pop/lib/psv/ Saved images for Prolog, Common Lisp, Poplog ML, Eliza, etc.
$usepop/pop/lib/pwm/ Programs concerned with the Poplog window manager (not in all versions of Poplog)
$usepop/pop/lib/sun/ Programs required for running the SUN POPLOG window manager and using VED on the sun terminal
$usepop/pop/lib/turtle/ 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.
$usepop/pop/lib/database/ Provides a collection of autoloadable procedures making use of the matcher to search a simple database of list structures.
$usepop/pop/lib/proto/ 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 versions.
$usepop/pop/clisp/flib $usepop/pop/clisp/modules Libraries for use with Common Lisp
$usepop/pop/plog/auto/ $usepop/pop/plog/lib/ Prolog library files.
$usepop/pop/pml/lib Libraries for use with the Poplog ML system
$usepop/pop/x Libraries concerned with the X windows system
$usepop/pop/pwm C source code for building the Poplog window manager
$usepop/pop/contrib Libraries and documentation provided by users
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 $usepop/pop/com/mkeliza
(on VMS the file is mkeliza.com)
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.
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 (popenv.com on VMS)
Users should all have login files which access these files, as described in the Administrator's Guide and User Guide.
If the operating system is changed and the system has to be rebuilt, command files to be used will be found in the directories $usepop/pop/src/ $usepop/pop/x/src/
See especially the file 'newpop' ('newpop.com' 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. $usepop/pop/com/mkplog
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 $usepop/pop/com/mkclisp
CORE SYSTEM BUILDING FILES NB. These files are only supplied to sites with POPLOG SOURCE LICENCES.
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.
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 --------- -------- $usepop/pop/com/ ($popcom) Login files and other command files, e.g. for building saved images
$usepop/pop/contrib ($popcontrib) Libraries and documentation provided by users
$usepop/pop/doc/ A collection of files ultimately intended for hard-copy manuals (Includes this document as 'sysspec')
$usepop/pop/help/ 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.
$usepop/pop/ref/ POP-11 and POPLOG System documentation. Some provisional VED system documentation
$usepop/pop/ref/doc_index Files required for the <ENTER>?? rapid lookup mechanism.
$usepop/pop/teach/ A collection of relatively verbose documentation files, used for teaching. Mostly concerned with POP-11, VED and AI techniques
$usepop/pop/lib Various sub-directories with POP-11 library programs.
$usepop/pop/lib/psv/ ($popsavelib) System saved images stored here (with names ending in '.psv').
$usepop/pop/lib/auto/ ($popautolib) POP-11 Auto-loadable library files used a great deal.
$usepop/pop/lib/database/ Another group of POP-11 autoloadable files.
$usepop/pop/lib/data/ Data files for demo or utility programs
$usepop/pop/lib/demo/ Some files for setting up demonstrations
$usepop/pop/lib/flavours Files for the flavours system. (see TEACH FLAVOURS)
$usepop/pop/lib/lib/ ($popliblib) Non-autolodable library files, accessed by means of the LIB or USES command.
$usepop/pop/lib/lib/blocks/ A demonstration program, a little like Winograd's SHRDLU.
$usepop/pop/lib/include/ O/S dependent system files
$usepop/pop/lib/proto/ Prototype versions of new libraries supplied for evaluation and comment.
$usepop/pop/lisp/... Source, libraries and documentation for the Common Lisp system.
$usepop/pop/lisp/auto/ Autoloadable Lisp libraries.
$usepop/pop/lisp/flib/ Library of format printing routines.
$usepop/pop/lisp/help/ Lisp HELP files.
$usepop/pop/lisp/modules/ Non autoloading LISP library.
$usepop/pop/lisp/ref/ Lisp system reference files.
$usepop/pop/lisp/src/ Source of the Common Lisp system. THIS DIRECTORY IS NOT REQUIRED FOR NORMAL RUNNING
$usepop/pop/plog/... Source, documentation and library files for the PROLOG system
$usepop/pop/plog/auto/ Prolog autoloadable libraries.
$usepop/pop/plog/help/ Prolog HELP files.
$usepop/pop/plog/lib/ Prolog library files.
$usepop/pop/plog/src/ Prolog Source files. THIS DIRECTORY IS NOT REQUIRED FOR NORMAL RUNNING
$usepop/pop/plog/teach/ Prolog TEACH files (may be extended).
$usepop/pop/pml/... Files concerned with the ML subsystem
$usepop/pop/pml/help ML online documentation $usepop/pop/pml/lib ML libraries $usepop/pop/pml/src Sources for creating the ML compiler THIS DIRECTORY IS NOT REQUIRED FOR NORMAL RUNNING
$usepop/pop/lib/turtle/ A collection of autolodable picture drawing files (drawing into a 2-D array, or into the editor).
$usepop/pop/lib/ved/ ($popvedlib) Autoloadable extensions to the VED editor. See $usepop/pop/ref/ved* for information.
$usepop/pop/pop/ ($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 VMS).
$usepop/pop/x/ Directories concerned with the Poplog interface to the X Windows system. The organisation described below is provisional and may change.
$usepop/pop/x/Xpw C source code for the Poplog widget set THIS DIRECTORY IS NOT REQUIRED FOR NORMAL RUNNING
$usepop/pop/x/bin 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.
$usepop/pop/x/com Command files for making X saved images
$usepop/pop/x/plog Location for Prolog-specific X libraries
$usepop/pop/x/pop Pop-11 based interface to X Windows, includes the
$usepop/pop/x/pop/compat 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)
$usepop/pop/x/pop/help Help files concerned with X facilities
$usepop/pop/x/pop/lib Many of the most useful Poplog X Windows tools are here
$usepop/pop/x/pop/lib/X11
$usepop/pop/x/pop/lib/xlib Low level interface procedures
$usepop/pop/x/pop/ref Poplog X reference documentation
$usepop/pop/x/pop/teach Poplog X tutorial documentation
$usepop/pop/x/src [May not be supplied] THIS DIRECTORY IS NOT REQUIRED FOR NORMAL RUNNING
$usepop/pop/src/ 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 (newpop.com on VMS) is used for re-building POPLOG. THIS DIRECTORY IS NOT REQUIRED FOR NORMAL RUNNING
$usepop/pop/src/syscomp/ System building utilities (not normally supplied).
$usepop/pop/contrib/... Programs and documentation contributed by users, including all the programming examples for the Gazdar and Mellish textbook on Computational Linguistics.
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.)
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. ----------