Push 3.0 Programming Language

Category Intelligent Software>Genetic Programming Systems/Tools and Cross-Omics>Agent-Based Modeling/Simulation/Tools

Abstract Push is a programming language intended primarily for use in evolutionary computation systems [such as ‘genetic programming’ (GP) systems], as the language in which evolving programs are expressed.

Push has an unusually simple syntax, which facilitates the development (or evolution) of mutation and recombination operators that generate and manipulate programs.

Despite this simple syntax, Push provides more expressive power than most other program representations that are used for program evolution.

Push programs can process multiple data types (without the syntax restrictions that usually accompany this capability), and they can express and make use of arbitrary control structures (e.g. recursive subroutines and macros) through the explicit manipulation of their own code (via a "CODE" data type).

This allows Push to support the automatic evolution of modular program architectures in a particularly simple way, even when it is employed in an otherwise ordinary genetic programming system (such as PushGP, which is a "generic" GP system except that it evolves Push programs rather than Lisp-style program trees - see below...).

Push can also support entirely new 'evolutionary computation' paradigms such as "autoconstructive evolution," in which genetic operators and other components of the evolutionary system themselves evolve (as in the Pushpop and SwarmEvolve2 systems - see below...).

Push Concepts --

Push achieves its combination of syntactic simplicity and semantic power through the use of a stack-based execution architecture that includes a stack for each data type.

A CODE data type, with its own stack and an associated set of code- manipulation instructions, provides many of the more interesting features of the language.

Push instructions, like instructions in all stack-based languages, take any arguments that they require and leave any results that they produce on data stacks.

To provide for "stack safe" execution of arbitrary code Push adopts the convention, used widely in stack-based genetic programming, that instructions requiring arguments that are Not available (because the relevant stacks are empty) become NO-OPs; that is, they do nothing.

Because Push's stacks are typed, instructions will always receive arguments and produce results of the appropriate types (if they do anything at all), regardless of the contexts in which they occur.

PushGP --

PushGP is a genetic programming system that evolves programs in the Push programming language.

PushGP has been used for a variety of applications, ranging from intelligent agent design to automatic 'quantum computer' programming.

Features/capabilities include:

1) Multiple data types without constraints on code generation or manipulation.

2) Arbitrary modularity without constraints on code generation or manipulation.

3) Evolved module architecture with No extra machinery.

4) Support for explicit, arbitrary recursion.

5) Support for ontogenetic "development" of code as it runs, via code- manipulation instructions.

PushGP for Automatic Quantum Computer Programming --

PushGP has been used in conjunction with the 'QGAME quantum computer' simulator to evolve novel programs for quantum computers.

Note: More information, including programming code, is available from the web page that accompanies the book, Automatic Quantum Computer Programming: A Genetic Programming Approach; Lee Spector 2004, New York: Springer Science+Business Media.

Pushpop --

Pushpop is an "autoconstructive evolution" system that also evolves Push programs.

In an autoconstructive evolution system the evolving programs construct their own children (and thereby their children's reproduction/diversification mechanisms and the evolutionary process, itself).

This contrasts with standard genetic programming systems (like PushGP) in which hand-written mutation and crossover operators are used.

SwarmEvolve 2.0 --

SwarmEvolve 2.0 is an autoconstuctive evolution system (see the "Pushpop" item above) in which flying agents, controlled by Push programs, evolve in a 3D environment.

This work involves the use of a Push interpreter embedded within Jon Klein's breve simulation environment (see G6G Abstract Number 20444).

System Requirements

Contact manufacturer.

Manufacturer

Manufacturer Web Site Push 3.0 Programming Language

Price Contact manufacturer.

G6G Abstract Number 20445

G6G Manufacturer Number 104073