The Modular Action Description
language MAD was introduced in [Lifschitz and
Ren, 2006]. It is a
descendant of the C+ action language described in [Giunchiglia et
al., 2004] and of the
Causal Calculator (CCalc). MAD extends C+ by adding the
capability to split action descriptions into modules, and allowing
action/fluent constants to be redefined during the process of
"importing" a module. Its semantics is based on that of C+.
The current implementation of MAD
processes a modular action description and transforms it into a
single-module action description, but does not do any reasoning
itself. Instead, the single-module description may be output
in the language of the Causal Calculator, which can then be used as a
reasoning engine. In the near future we intend to add the
capability to transform MAD action descriptions into an
implemented language of answer set programming.
MAD version 0.4 was released on 10
July 2008.
(Revision 0.4r1 was released on 12
August 2008 and contains a few minor updates to example formalizations.
Revision 0.4r2 was released on 19 March 2009 as a result of
fixing some bugs in the implementation.)
The program, the user's manual, and
some example formalizations are available as a tarred, gzipped file:
mad-0.4r2.tar.gz
In order to run the Causal
Calculator on the output of MAD, you will need to get a copy from the CCalc homepage.
The software is written in the C
programming language. In order to build MAD from source, one needs a C
compiler, a Lex-like lexical analyzer generator, and a Yacc-like parser
generator.
We have tested our software on
Unix/Linux-like systems and used the following programs to build MAD
from source:
CCalc runs on Unix/Linux-like systems and requires a Prolog
implementation. More information may be found on the CCalc homepage.
Here are a couple of example
combinations with which we have successfully tested MAD:
[Erdoğan,
2008] is a dissertation
about how MAD was used to build a library of general-purpose action
descriptions and how this library was used to formalize many domains
from the
knowledge representation literature. In addition to the library
modules and several domains, it contains a detailed
treatment of the latest version of the MAD language and
implementation. (Note: The version of MAD software used in the
dissertation was 0.4r1. Please contact us separately if you would
like a copy of this older version.)
Some motivation and theoretical
background for extending C+ with library modules can be found in
[Erdoğan and
Lifschitz, 2006] and an early example of MAD being used
can be found in [Erdoğan et
al., 2007]. Recent work in [Lifschitz
and
Ren, 2007] has begun to extend the semantics of C+, and these
extensions will also
be
inherited by MAD.