JAZZYK(1) Programming language for cognitive agents JAZZYK(1) NAME Jazzyk - interpreter of the Jazzyk programming language (In varietate concordia!) SYNOPSIS jazzyk [options] [file] DESCRIPTION Jazzyk is an experimental, special-purpose programming language for development of knowledge intensive (intelligent) agent systems. Jazzyk agents consist of * a number of knowledge bases, each realized by a separate * specialized knowledge representation module (plug-in), and an agent program in a form of a set of possibly nested rules of the basic form: when Query then Update. Jazzyk was designed to exploit power of heterogeneous knowledge representation (KR) technolo‐ gies in a single agent system. Each such a KR technology is encapsulated in a separate Jazzyk KR module providing a simple generic interface consisting of a set of query and update opera‐ tions. Semantics of Jazzyk based on Behavioural State Machines, an adaptation of computational model of Gurevich’s Abstract State Machines. Theory of Behavioural State Machines, and in turn also Jazzyk, draws a strict distinction between agent’s knowledge representational and behavioural aspects. While an agent’s delibera‐ tion abilities reside in its KR modules, its behaviour are encoded as a Behavioural State Machine. OPTIONS GENERAL OPTIONS: --help display the help message and exit --version output version information and exit --license display the GNU GPL license information and exit COMPILER OPTIONS: -0 [--stdin] after reading in program files, read also standard input. This option is useful to exe‐ cute for example automatically generated programs, or programs preprocessed by a spe‐ cialized filters. -I [--include path] macro preprocessor include path(s); Provided include paths will be passed to the inter‐ nal macro preprocessor invocation via -I option. By default, the macro preprocessor searches only in the current path (path in which the interpreter was invoked (see pwd(1))). The source code can include also files from other then the current directory, but it has to use relative paths to find the included file correctly. Otherwise all the paths where include files reside, should be passed to the interpreter using -I options. --no-mp bypass the macro preprocessor; Internal macro preprocessor will not be invoked on the input file(s) and the content will be passed directly to the compiler. This option can be useful in the case the input source code either does not use any higher level macro overlay definitions, or it is already preprocessed by the macro preprocessor. INTERPRETER OPTIONS: -L [--libraries path] add an absolute system path to the location of external plug-ins; Plug-ins are standard shared dynamically loadable libraries and by default the interpreter searches in the standard system paths where libraries are present. Use this option in the case you have KR plug-ins installed in a non-standard location (w.r.t. your OS), or the interpreter has difficulties to find the requested plug-ins. -o [--ordered] pick the first applicable rule to apply from a set transformer; By default, when the interpreter executes a set mental state transformer {<transformer> ; <transformer}, it first randomly shuffles the transformer set and then searches for an applicable rule from the beginning. This way a random applicable rule is chosen from the original set transformer. Using this option disables the random shuffling step and lets the inter‐ preter to choose the first applicable rule of the set transformer w.r.t. the ordering as defined in the source code. -n [--cycles num] perform only num interpreter cycles and quit; 0 (default) means endless interpreter cycle loop. -q [--no-check-query] switch off checking sanity of resulting query variable substitutions. Modules are allowed to not substitute all the provided free variables. DEBUG OPTIONS: -e [--only-macros] print the output of macro preprocessor run only; do not compile, or interpret; Using this option amounts to the same effect as if GNU M4 (m4(1)) were executed with the default options described later in this manual and the corresponding input file (or standard input stream). -E [--compile] run preprocessor and compile only; do not interpret; This option is useful for verify‐ ing whether the program is interpretable. This means that it is well-formed according to the syntax rules of the Jazzyk language and additional semantical constraints hold: each module referenced either in update, query, or notification expression/statement is also declared in the program (Note: it can be declared also after the first use!) -p [--print] pretty print the program tree structure after compilation stage; This is a convenience feature to check that the compiler understood the structure of the program correctly. Currently it prints only a rough structure of the program. In the future it should print the executable formatted source code of the input program. DIAGNOSTICS When failing, the interpreter provides informative error messages in the standard compiler for‐ mat with the location in the source file and an error message. The error output can be parsed and processed by IDEs and text editors like vim(1), emacs(1) and others. Messages are written to the standard error output. During the internal invocation of the GNU M4 (m4) macro preprocessor, the interpreter forwards whatever error messages of m4 as well. GNU M4 INVOCATION GNU M4 macro preprocessor is internally invoked with the following default arguments: $ m4 -s -E -I $(PACKAGELIBDIR) ... Where $(PACKAGELIBDIR) stands for the default installation directory where internally used shared macros are placed. When the default installation prefix is used, this should be /usr/lib/jazzyk. For more details, see the installation instructions of the jazzyk package and help message of its configure script. For more details on the m4 options semantics see m4(1). BUGS As of time of writing this manual, no issues and bugs are known to me. For more details see the Changelog file. In the case you will spot any bugs, or problems, or you have some enhance‐ ment/feature request,do not hesitate and contact the author, or maintainer. AUTHOR The Jazzyk interpreter was written by Peter Novak pno at aronde.net as a result of his research work towards PhD. degree in Computational Intelligence Group of Clausthal University of Tech‐ nology, Clausthal, Germany (http://cig.in.tu-clausthal.de). Peter Novak <pno at aronde.net>, http://peter.aronde.net/ SEE ALSO GNU M4 m4(1). PUBLICATIONS The list of papers related to Jazzyk until February 2008. 1. Peter Novak, Juergen Dix: Modular BDI Architecture Proceedings of Fifth International Joint Conference on Autonomous Agents and Multiagent Systems AAMAS’06, Future University, Hakodate, Hokkaido, Japan, pg. 1009-1016 Association for Computing Machinery/2006, May 2006 2. Peter Novak, Juergen Dix: Adding structure to agent programming languages Proceedings of Fifth International Workshop on Programming Multi-Agent Systems Pro‐ MAS’07, Hawai’i, USA, May 2007 3. Peter Novak: Behavioral State Machines: programming modular agents AAAI 2008 Spring Symposium: Architectures for Intelligent Theory-Based Agents, AITA’08 AAAI Press, Menlo Park, California, USA, March 2008 4. Peter Novak: Jazzyk: A programming language for hybrid agents with heterogeneous knowledge represen‐ tations Proceedings of Sixth International Workshop on Programming Multi-Agent Systems, Pro‐ MAS’08 Estoril, Portugal, May 2008 ACKNOWLEDGEMENTS Prof. Dr. Juergen Dix participated on development of the underlying theory of the Jazzyk pro‐ gramming language. Bernd Fuhrmann (at the time a diploma student at Computational Intelligence Group) developed a prototype of the Jazzyk interpreter (labelled Jazyk) and provided a valuable input in crafting deeper technical details of the Jazzyk interpreter. I thank them. COPYING PERMISSIONS Jazzyk - Modular BDI Agent Architecture programming language interpreter Copyright (C) 2006, 2007 Peter Novak <pno at aronde.net> Jazzyk is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; with‐ out even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Programming language for cognitive agents 2009/01/10 JAZZYK(1)