SlideShare a Scribd company logo
1 of 8
Download to read offline
An Abstraction-Based Genetic Programming System

                                  Franck Binard                                                               Amy Felty
                     School of Information Technology                                             School of Information Technology
                             and Engineering                                                              and Engineering
                      University of Ottawa, Canada                                                 University of Ottawa, Canada
                         fbinard@site.uottawa.ca                                                     afelty@site.uottawa.ca


ABSTRACT                                                                                      There has been some interest in experimenting with typed
                                                                                           representations in GP. The work presented in this article ex-
We extend tree-based typed Genetic Programming (GP)
                                                                                           ploits recent advances in type theory to extend the currently
representation schemes by introducing System F, an expres-
                                                                                           used tree-based typed GP representation schemes. Specifi-
sive λ-calculus, for representing programs and types. At
                                                                                           cally, we propose to use System F [4][12], an extension of the
the level of programs, System F provides higher-order pro-
                                                                                           simply typed λ-calculus obtained by adding an operation of
gramming capabilities with functions and types as first-class
                                                                                           abstraction on types, to represent the programs of a GP
objects, e.g., functions can take other functions and types
                                                                                           system. System F provides a strong form of polymorphism
as parameters. At the level of types, System F provides
                                                                                           and can describe all functions which are provably total in
parametric polymorphism. The expressiveness of the system
                                                                                           second-order logic. It renders all the usual data-types de-
provides the potential for a genetic programming system to
                                                                                           finable as pure abstractions and directly supports recursion
evolve looping, recursion, lists, trees and many other typical
                                                                                           without naming or special operators. In the system, types
programming structures and behavior. This is done without
                                                                                           such as ΠX.X → X → X , the type of any function that
introducing additional external symbols in the set of prede-
                                                                                           takes two arguments of some type and returns an object of
fined functions and terminals of the system. In fact, we actu-
                                                                                           this type as its output, can be defined. A term of this type,
ally remove programming structures such as if /then/else,
                                                                                           for example ΛXλxX λy X .x, a program that takes two argu-
which we replace by two abstraction operators. We also
                                                                                           ments and returns the first, will behave the same on any
change the composition of parse trees so that they may di-
                                                                                           argument type.
rectly include types.
                                                                                              System F is a worthwhile object of study as a representa-
                                                                                           tion scheme for GP for the following reasons:
Categories and Subject Descriptors
                                                                                              • Language lightness: The pure System F syntax uses
I.2.2 [Artificial Intelligence]: Automatic Programming—                                          a very small set of symbols. Yet, it is possible to rep-
program synthesis; F.4.1 [Mathematical Logic and For-                                           resent all normal programming structures (recursion,
mal Languages]: Mathematical Logic—lambda calculus                                              lists, trees, booleans, looping and so on) from within
and related systems                                                                             the language. In fact, all functions and terminals de-
                                                                                                fined for GP problems in other systems that are not di-
                                                                                                rectly related to the problem such as branching, loop-
General Terms
                                                                                                ing and recursion constructs can be eliminated for the
Experimentation, Languages, Theory                                                              same problems expressed in System F.

                                                                                              • Typing structure: System F has variables ranging
Keywords                                                                                        over functions, data and types, making the language
genetic programming, lambda calculus, polymorphism, types                                       very expressive while still maintaining full static type-
                                                                                                safety.
1.     INTRODUCTION                                                                           • Tree-like structure: System F programs are similar
   Genetic Programming (GP) is an evolutionary computa-                                         in structure to the programs written in other func-
tion search strategy in which solutions are usually repre-                                      tional languages such as Lisp. This tree-like structure
sented as executable parse trees [9].                                                           is generally considered a natural choice for GP.

                                                                                              • Second-order logic isomorphism: Under the Curry-
                                                                                                Howard isomorphism [6], System F corresponds to a
                                                                                                second-order logic and can therefore describe all func-
Permission to make digital or hard copies of all or part of this work for
                                                                                                tions which are provably total in second-order logic.
personal or classroom use is granted without fee provided that copies are
not made or distributed for profit or commercial advantage and that copies                       The isomorphism provides a dual meaning to the type
                                                                                                structure. For example, the type ΠX.X → X →
bear this notice and the full citation on the first page. To copy otherwise, to
republish, to post on servers or to redistribute to lists, requires prior specific               X can also be read as the second-order proposition
permission and/or a fee.
                                                                                                ∀X.X → X → X. Including the atomic type A in
GECCO’07, July 7–11, 2007, London, England, United Kingdom.
                                                                                                the system corresponds to adding the proposition A
Copyright 2007 ACM 978-1-59593-698-1/07/0007 ...$5.00.



                                                                                    2415
as an axiom. The second-order derivation rules can be            ing the creation of the initial population, each parse tree is
       used directly to produce new types. This becomes very            grown top-down by randomly choosing functions and termi-
       useful when used in conjunction with the next item.              nals and verifying their validity against the type possibility
                                                                        table. STGP has been applied to the problem of evolving
     • Deriving programs from types: There is an al-                    cooperation strategies in a predator prey environment [5].
       gorithm that takes types in a specific form as input              The solutions produced consistently outperformed the solu-
       and outputs constructors for the type. Constructors              tions produced by an untyped system. It is suggested that
       are functions that take the needed arguments and use             the reduced search space is the cause of the performance
       these arguments to produce objects corresponding to              improvements.
       the specified input type. For example, when given the                The PolyGP system [3] is also based on a type system.
       type ΠX.X → X → X, the algorithm produces the                    Used during program creation, the type system ensures that
       two terms: ΛXλxX λy X .x and ΛXλxX λy X .y.                      all programs created are type-correct. PolyGP implements
                                                                        polymorphism using different kinds of type variables. The
     • Strong Normalization: System F programs always
                                                                        system that is proposed in this document differs from PolyGP
       terminate. Partial normalization can be used to par-
                                                                        in the following 4 ways:
       tially evaluate parts of programs and can be combined
       with abstraction support to devise a hierarchical evo-             1. In PolyGP, program parse trees are represented in a
       lution mechanism that permits the evolution not only                  Curry style, where type information is kept distinct
       of programs, but also of program patterns.                            from the terms. This way of doing things requires
                                                                             the use of a type unification algorithm. We propose
This article is structured as follows: Section 2 summarizes
                                                                             a Church style representation, where terms are anno-
related previous work; Section 3 describes System F and a
                                                                             tated with enough type information so that there is no
running example expressed in this language; Section 4 de-
                                                                             need for a type unification algorithm.
scribes our use of System F in a GP context; Section 5 is
the concluding discussion.                                                2. Unlike PolyGP, in the System F-based GP system,
                                                                             parse trees contain types, and types are evolved at
2.    PREVIOUS WORK                                                          the same level as terms/programs. This is the first
                                                                             GP system we are aware of where types are explicitly
2.1 Previous work on types in GP                                             evolved during the run. This opens the door to the
                                                                             natural evolution of data structures and of operations
   In the original GP specification [9], the definitions of the
                                                                             on these data structures.
primitives (the predefined terminals and functions of the
system) are constrained by the closure requirement. All the               3. PolyGP’s recursion scheme requires the definition of
elements in the program’s parse tree must have the same                      special structures. System F’s expressive power elimi-
type. Closure is satisfied when “any possible composition                     nates this need.
of functions and terminals produces a valid executable com-
puter program” [10]. This implies that the programming                    4. PolyGP doesn’t eliminate the need to predefine func-
language in which the individuals of the system are coded                    tions that are not directly related to the problem. A
will always be a one-type or monomorphic language.                           System F-based GP system does.
   A mechanism called constrained syntactic structures is
                                                                        2.2 Previous work on recursion in GP
proposed in [9] to relax the closure property. Constrained
syntactic structures are problem-specific syntactic rules spec-             There are currently two ways of providing recursion sup-
ifying which primitives are allowed to be the child nodes of            port in GP. The representation proposed in this article pro-
each function in the program trees. Constrained syntactic               vides a third and new manner to achieve recursion in GP.
structures are used for problems requiring data typing.                 The explicit recursion approach [8][2], involves naming the
   In [11], Montana uses types to eliminate the closure con-            programs of the system so that they may refer to them-
straint of GP systems and to restrict the search space. The             selves. This requires additional overhead. Each program
method, called Strongly Typed Genetic Programming (STGP)                uses a slightly different language because its name must be
specifies a type for each argument of each function and for              included in the set of instructions to which it has access.
the value it returns. Terminals are also typed. The basic               Names have to be kept and managed. Another problem
STGP formulation is equivalent to Koza’s approach to con-               with the scheme is that special mechanisms must be put in
strained syntactic structures and both are limited by the               place to handle the cases where parts of programs that refer
need to specify multiple functions which perform the same               to themselves are used to construct a new program (with a
operation. Montana resolves the issue by using generic func-            different name) in a crossover operation. Finally, the num-
tions. These are functions defined on named lists of argu-               ber of recursive calls must be limited to avoid infinite loops.
ment types that have their return types inferred when they              Each recursive call has to be tabulated while the program
are embedded in a newly spawned tree. After a generic func-             is running and a system of flags has to be implemented. In
tion has been instantiated (by being embedded in a new tree)            contrast, the recursion scheme of the System F-based sys-
it is and behaves as a standard function. This is also how              tem proposed in this document does not need to provide
it is passed on to the program’s descendants. Montana uses              programs with the ability to call themselves in order to sup-
a table-lookup mechanism to produce legal parse trees. A                port recursion and has no need to check for infinite loops.
type possibilities table is computed beforehand to specify                 The implicit recursion approach [14] exploits PolyGP’s
all the types that can be generated at each tree depth level.           support for higher-order functions. Recursion is implemented
This table provides type constraints to the function selec-             using predefined higher-order functions. Unfortunately, in-
tion procedure used to generate type-correct programs. Dur-             creasing the number of primitives that are manipulated by



                                                                 2416
3.4
the GP system increases its search space and bloats its lan-                      α-conversion
guage with programming constructs that are not directly re-                   The α-conversion rule expresses the notion that the names
                                                                           of the bound variables are unimportant; for example λxU .x
lated to the problem that is being solved. The functions are
                                                                           and λy U .y are the same function, and ΠY.Y → Y is the
general higher-order structures with no direct relation to the
actual problem for which a solution is being evolved and it is             same type as ΠX.X → X.
not clear how it is decided which function goes with which
                                                                           3.5 Reducibility and strong normalization
problem. Finally, PolyGP implements these higher-order
operations on lists only. Implementing recursion on other                     An expression reaches its normal form when it can’t be
structures requires additional syntax. The System F scheme                 rewritten any further by the evaluation rules. It is normal-
proposed in this document doesn’t share these limitations.                 izable if it can be reduced to a normal form and is strongly
In particular, it evolves its own higher-order functions and               normalizable if every sequence of reductions starting with
naturally “understands” recursion on any structure.                        the expression terminates in a normal form. System F terms
                                                                           are strongly normalizing [7].
3.      SYSTEM F AND A RUNNING EXAMPLE
                                                                           3.6 General scheme for free structures
  The system is formulated in the Church style where types
                                                                              The calculus is impredicative making self-application pos-
are embedded in terms, resulting in an extension of the pure
                                                                           sible; for example, the polymorphic identity ΛX.λxX .x can
λ-calculus.
                                                                           take its own type, ΠX.X → X and then itself as arguments.
3.1 Rules for types                                                        The definition of an object can refer to the collection to
  From a finite set of atomic types and an infinite set of                   which the object belongs. In this section, several type and
type variables, new types are constructed as:                              object definitions are presented as examples. With these ex-
                                                                           amples, we show how types and functions may be defined
     1. If U and V are types, then U → V is a type.
                                                                           as pure abstractions, describing structure. This implies that
     2. If V is a type, and X is a type variable, then ΠX.V is             any genetic program whose representation scheme is based
        a type.                                                            on System F would have the capacity to express the exam-
                                                                           ples below, no matter what the set of functions that are
The type ΠX.V is called an abstract type, and an object of
                                                                           defined for the genetic program is. There is another way to
this type can be expressed as:
                                                                           say this:
                          ΛX.(f unction body)                (1)
                                                                                 Any GP system based on System F that
Where X is the same type variable as the one in the type of                      has the capacity to name and to reuse terms
the object. The calculus requires that any variable of type                      and types also has the capacity to repre-
X within f unction body be bound by a λ-abstraction. A                           sent structures such as booleans, numbers,
function typed with an abstract type ΠX.V can be viewed                          pairs, lists, trees, tuples and all the usual
as a function which takes as its parameter a type ty and                         operations on those structures. In addi-
returns a function typed as V [ty/X].                                            tion, such a system can represent recursive
                                                                                 functions. The representation is encoded
3.2 Rules for terms                                                              in the structure of the tree and is indepen-
                                                                                 dent of the primitive terms and types that
     1. variables: xT , y T , z T , . . . of type T ,
                                                                                 are defined for the GP system.
     2. application: tu of type V , where t is of type U → V
                                                                           3.6.1 Finding the representations
        and u is of type U
                                                                             System F comes with a general scheme for the represen-
     3. λ-abstraction: λxU .v of type U → V , where xU is a
                                                                           tation of free structures. To generate objects of type ty,
        variable of type U and v is of type V ,
                                                                           where ty represents a structure, a series of constructors is
                                                                           needed. These are functions that take no, one, or several ar-
     4. universal abstraction: if v is a term of type V , then we
                                                                           guments and use them to produce objects of type ty. These
        can form ΛX.v of type ΠX.V , so long as the variable
                                                                           constructors can be recursive. For example one of the list
        X is not free in the type of a free variable of v.
                                                                           constructors creates a list from two arguments: a list of el-
     5. universal application: if t is a term of type ΠX.V and             ements of a given type, and an element of the same type.
        U is a type then tU is a term of type V [U/X]
                                                                           3.6.2 Format for the types
3.3 Evaluation/reduction rules
                                                                             Following [7], we restrict ourselves to types in the form:
     1. (λx.v)u evaluates to v[u/x]                                                          ΠX.S1 → . . . → Sn → X                    (2)
     2. (ΛX.v)U evaluates to v[U/X]
                                                                           with each Si in the form:
3.3.1 Naming and equivalence                                                                     i             i
                                                                                               T 1 → . . . → T ki → X                  (3)
     We write:
                                                                           Where the ‘X’ type variable in each Si is replaced by the
                                        def
                                name = E                                   name of the structure. For any type ty, each Si [ty/X] is the
to use the name name as a shorthand for the expression E,                  type of a function that “builds” an object of type ty. That
the two being treated as identical. The pure system is a                   function is a constructor. This implies that each structure
calculus of expressions without names.                                     requires f1 , . . . , fn constructor definitions. For example, if



                                                                    2417
ty is the integer type, there will be two constructors, the first
                                                                                                Table 1: Primitives for GP2
one, typed as ty → ty (a constructor that takes an integer
                                                                              Type
object and returns its successor, itself an integer object) and
                                                                                                 Abstract Type, ΠX.X → X → X
                                                                              ty Boolean
the other with type ty coding 0 (with no argument). Simi-
                                                                              Int                Generic
larly, if ty is the boolean type, it will require 2 constructors,
neither of which take any arguments: one that constructs                      Functions          Type
the object false and the other to produce true.                                                  Int → Int → Int
                                                                              +
                                                                                                 Int → Int → Int
                                                                              -
3.6.3 The boolean type
                                                                                                 Int → Int → Int
                                                                              /
                                 def
                                                                                                 Int → Int → Int
               ty Boolean = ΠX.X → X → X                                      *
                                                               (4)
                                                                                                 Int → Int → ty Boolean
                                                                              >
with
                                                                              Terminals          Type
                           def                   def
                                                               (5)
                     S1 = X                    S2 = X                         [0, . . . , 10]    Int
                                                                              TIME               Int
which gives two constructors, f1 and f2 , of type
S1 [ty Boolean/X] and S2 [ty Boolean/X]:

                                                                             3.6.6 What cannot be represented in System F
             f1 = te true = ΛX.λxX .λxX .xX
                def              def
                                  1    2   1                                    System F has the strong normalization property, so the
                                                               (6)
             f2 = te f alse = ΛX.λxX .λxX .xX
                def         def
                                                                             programs of the system always eventually terminate. The
                                    1    2   2
                                                                             unsolvability of the halting problem [13] implies that there
3.6.4 Lists                                                                  are computable functions that cannot be represented in Sys-
  The type of a list of objects of type U is definable as:                    tem F. This is not so bad as it sounds because as [1] puts it,
                                                                             in order to find computable functions that cannot be repre-
                       def
          ty ListU = ΠX.X → (U → X → X) → X                    (7)           sented in F, “one has to stand on one’s head”. In theory, we
                                                                             could do all the programming we would ever need without
So there are two Si :
                                                                             going outside the pure system. In practice, the genetic pro-
               def                       def
                                       S2 = U → X → X          (8)
            S1 = X                                                           grams we experiment with include primitive external func-
                                                                             tions and terminals defined as symbols and evaluated using
which gives two constructors, f1 and f2 of type ty ListU for
                                                                             a semantic evaluator that gives them meaning outside their
the empty list constructor and U → ty ListU → ty ListU
                                                                             System F representation.
for the one that constructs an object of type ty ListU from
an object of type U and an object of type ty ListU :                         3.6.7 A symbolic regression example
               = ΛX.λxX .λx2 →X→X .x1
                           U
    def       def                                                               The problem of symbolic regression can be stated as “given
 f1 = te nil          1
                                                                             a set of data points, find the underlying function in symbolic
    def         def
 f2 = te cons =
                                                                             terms” [9]. Table 1 defines the primitives of GP2 , a symbolic
 λp1 λp2 ListU ΛX.λxX .λx2 →X→X .x2 p1 (p2 X x1 x2 )
        ty
   U                     U
                    1                                                        regression GP system that uses System F to represent its in-
                                                               (9)           dividuals. GP2 models a real valued function of the variable
The second constructor illustrates how recursion happens.                    T IM E.
The polymorphic argument p2 is first applied to the type                         The set of primitives is used to predefine symbols that
variable X, which gives it the right type to “fit” inside the                 exist outside System F and to name constructs that exist
body of the constructor and makes it accept the arguments                    within it. The first primitives to be inserted are the atomic
x1 and x2 . The normalized form of the list (u1 , u2 , . . . , un )          types. For example, the type Int. Once the atomic types
of elements of type U is encoded as:                                         have been introduced in the system, the user can insert the
   ΛX.λxX .λy U→ X → X .y u1 (y u2 (. . . (y un x)) . . .)                   typed free variables of the system, such as 6 : Int or + :
                                                              (10)
                                                                             Int → Int → Int. The set is also a syntactic sugar mecha-
3.6.5 Integers                                                               nism. Composite expressions can be included, depending on
                                                                             the problem. For example, the type Int → Int → Int might
   The representation for integers requires two constructors:
                                                                             be renamed as BinaryN umericalOp or the booleans might
a constant (for 0) of type integer and the successor function
                                                                             be included, either by naming the type ΠX.X → X → X
from the integers to the integers, so:
                                                                             or by inserting an atomic boolean type in the set, with true
                        def
             ty Int = ΠX.(X → X) → X → X                      (11)           and false also defined as atomic symbols. The system’s de-
                                                                             signer might also decide to do both, or might even choose
And there are two Si :
                                                                             not to include a boolean type at all. Because it can still be
                     def                               def
               S1 = X → X                                                    expressed by the system, it is possible for it to evolve on its
                                                              (12)
                                                 S2 = X
                                                                             own.
So we need two constructors:                                                    In our sample implementation, an element of the Primi-
  f1 = te Succ = λp1 Int .ΛX.λxX→X λxX .x1 (p1 X x1 x2 )
                     ty
    def          def                                                         tives set may also be linked to an “evaluation recipe”, that
                                  1       2
                                                                             provides instructions as to how the object should be evalu-
  f2 = te 0 = ΛX.λxX→X λxX .x2
     def    def
                      1       2
                                                                             ated. During a run, there are functions that allow the user
                                                        (13)                 to pause the run and extend the Primitives set so that:
The ty Int object n is the function which to any type U and
function f of type U → U associates the function f n , i.e. f                  1. Complex structures that appear often might be re-
iterated n times.                                                                 placed by syntactic sugar, improving readability.



                                                                      2418
While (16) is a simple integer-valued decision tree based on
                                                                         the value of the variable T IM E:
                                                                         > T IM E 5 Int (> T IM E 10 Int 3 2) (> T IM E 0 Int 1 0)
                                                                                                                             (16)

                                                                         3.6.9 Recursion
                                                                            As an example of recursive behavior, let’s compute the
                                                                         Fibonacci sequence in System F using the primitives of GP2 .
                                                                         For this task, we may use the type:
                                                                                     def
                                                                            T rInt = ΠX.(Int → Int → Int → X) → X
                                                                         T rInt is in the required format and the constructor scheme
                                                                         can be applied mechanically to yield:
                                                                            tr = λiInt λj Int λkInt ΛXλxInt→Int→Int→X .x i j k
                                                                               def

                                                                         Finally let’s define:
                                                                            f ib = λdT rInt .
                                                                                 def

                                                                                  tr (+ (d Int (λxInt λy Int λz Int .x)) 1)
          Figure 1: Parse tree for expression 14
                                                                                      (d Int (λxInt λy Int λz Int .z))
                                                                                      (d Int (λxInt λy Int λz Int .(+ y z)))
  2. Some System F structures that are evaluated mechan-                 of type T rInt → T rInt. f ib has an invariant property on
                                                                         objects of type T rInt: Given j, the (n − 1)st term, and k,
     ically within the system might be replaced by a more
                                                                         the nth term in the Fibonacci sequence then (f ib (tr n j k))
     efficient evaluation recipe.
                                                                         evaluates to (tr (+ n 1) k (+ j k)). We can now compute
                                                                         the Fibonacci sequence for n+2 in many different ways. For
3.6.8 Computing from within the system
                                                                         example using the integers of Section 3.6.5:
  In the versions of the symbolic regression problem pre-                   te n T rInt f ib (tr 2 0 1)
sented in [9] and [11], branching is enabled via the primitive           where te n is the nth numeral of type ty Int. We could also
function IF T E. GP2 doesn’t include a branching struc-                  use lists and write:
ture, and doesn’t need one. For example, the expression                     te l T rInt (tr 2 0 1) (λuty λtT rInt .f ib t)
(+ 2 (+ 1 (IF T E (> T IM E 10) 3 4))), can be expressed                 where te l is a list of n elements of any type ty in GP2 . There
in System F using the primitives of GP2 as:                              are many other possibilities for the computation. Just as
                                                                         there was no need to extend GP2 with an IF T E function
             + 2 (+ 1 (> T IM E 10 Int 3 4 ))             (14)
                                                                         for branching, there is no need to extend GP2 for recursion.
The sub-expression (> T IM E 10) evaluates to a ty Boolean
(as defined in section 3.6.3). (te true Int) evaluates to the             4. SYSTEM F USE IN GP
term λxInt λy Int .x of type Int → Int → Int after replacing
                                                                            The individuals are programs constructed as a series of ap-
X by Int. This is a function that takes two arguments of
                                                                         plications of expressions from the BlockPopulation set, a set
type Int as inputs and outputs the first of the arguments.
                                                                         of well-formed normalized terms and types, built from the
Conversely, (te f alse Int) evaluates to a function of two Int-
                                                                         primitives defined for the system. BlockPopulation evolves
typed arguments that returns the second of the arguments.
                                                                         during the system’s run, but the initial set should spread
Figure 1 represents the resulting parse tree for expression
                                                                         out over as wide a search space area as possible. A term can
14 in the partial application style of program representation
                                                                         be an element of the BlockPopulation set if and only if it is
[3]. Each node in the tree is either a leaf (corresponding to
                                                                         carried as a block by an individual of the system.
a primitive) or a typed function application that is itself at
the root of a binary tree. Our research uses and augments                4.1 Complexity
this representation style in two ways:
                                                                           To monitor and minimize the memory cost associated each
                                                                         with expression, the complexity of an expression is calculated
  1. Tags are added to each node to indicate its type.
                                                                         as:
  2. Parse trees can be linked using both function applica-
                                                                           1. Atomic types have complexity 1.
     tion nodes and type application nodes. Type applica-
     tion is new to GP, and is one of the contributions of                 2. Arrow types have the complexity of their left type plus
     this research. Type application nodes link functions                     the complexity of their right type, plus 1.
     to types.
                                                                           3. The complexity of an abstract type is the complexity
  The result of the evaluation of the (> T IM E 10) term is                   of the body of its abstraction plus 2 (one for its type
directly used as a branching structure. This is only possible                 variable and one for itself).
because true and false are functions defined without using
                                                                           4. The complexity of a term variable is 1 plus the com-
any symbol from outside the language and therefore express
                                                                              plexity of its type.
abstract behavior. Boolean objects can be used as a decision
procedure between two arguments of any type. For example
                                                                           5. The complexity of an application term is the sum of
(15) is a decision between an addition and a subtraction:
                                                                              the complexities of its two arguments and of its type,
          > T IM E 10 (Int → Int → Int) + −               (15)                plus 1.



                                                                  2419
(1) ⎡λ x Int →Int λ y Int .xy, + ( + 1 2 ) , ( λ x Int λ y Int . > TIME 10 Int x y ) 3 4⎤                                    structure and except for the last one, the shape of their as-
    ⎣                                                                                   ⎦
                                                                                                                             sociated tree is determined by the type of the head element.
( 2 ) ⎡λ x Int . + ( + 1 2 ) ( > x 10 Int 3 4 ) , TIME ⎤
      ⎣                                                     ⎦                                                                   The expressive power of System F allows the sampling of
( 3) ⎡ λ x               . + ( + 1 2 )( x Int 3 4 ) , ( > TIME 10 )⎤
           ty _ Boolean                                                                                                      different sectors of the search space. For example, in Figure
      ⎣                                                              ⎦
                                                                                                                             2:
( 4 ) ⎡λ x                  .x ( x 1 2 ) ( > TIME 10 Int 3 4 ) , + ⎤
            Int → Int → Int
      ⎣                                                            ⎦
                                                                                                                                • (1) “understands” the problem as finding an operation
                                                                               (        ) ( x x )( x          )
    ⎡ ΛX λ x1X → X → X λ x2X λ x3X λ x4X λ x5X . > TIME 10 ( X → X ) x1 x2X                             x4X x5X ,⎤
                                                                                                X
                                                                                                                                  of type Int → Int and an Int to apply it to.
(5) ⎢                                                                                       1   3   1
                                                                                                                 ⎥
    ⎢ Int , +,3, 4, 1, 2                                                                                         ⎥
    ⎣                                                                                                            ⎦
                                                                                                                                • (2) sees the solution to the problem as an application
                                                                                                                                  of a function of type Int → Int to an Int.
Figure 2: Other ways to express the phenotype produced
by expression 18                                                                                                                • (3) looks at it from the point of view of the appli-
                                                                                                                                  cation of a function of type ty Boolean → Int to a
                                                                                                                                  ty Boolean.
     6. The complexity of an abstract term is the sum of the
                                                                                                                                • (4) considers the phenotype to be the application of
        complexities of the body of the abstraction, of its bound
                                                                                                                                  a function of type (Int → Int → Int) → Int to an
        term variable and of its type, plus 1.
                                                                                                                                  operator of type Int → Int → Int such as + or −.
     7. The complexity of a term abstracted by type is the
                                                                                                                                • (5) is the most abstract of all (but not the most ab-
        sum of the complexities of the body of the abstraction
        and of its type, plus 2.                                                                                                  stract possible). It sees the solution as an application
                                                                                                                                  of a function that takes as parameters 4 objects of some
  By providing an upper-bound on the complexity of both                                                                           type ty and a binary operator on tys and outputs a ty
blocks and individuals, it is possible to implement the kind of                                                                   object. In this sense the root function of genotype 5
bloating controlling measures usually associated with max-                                                                        is truly a polymorphic function usable with any type.
imum tree-depth values in typical GP systems.                                                                                     Because of this, the second element of the genotype, a
                                                                                                                                  type, also plays a role in shaping the overall structure
4.2 Generating the initial BlockPopulation set                                                                                    of the tree.
   The Primitives set is the kernel of the BlockPopulation
                                                                                                                                In the biological world genetically unrelated organisms
set. The initial set is constructed by adding new expressions,
                                                                                                                             will often evolve the same phenotypical solutions through
built from the ones that are already in it. The construction
                                                                                                                             completely different genetic pathways. System F’s versatil-
process stops when the sum of the complexities of all objects
                                                                                                                             ity produces a similar situation. In GP, it is the phenotype
in the BlockPopulation set is greater than maxComp, one of
                                                                                                                             that is fitness-scored. This implies that (18), (19) and all
the system-wide variables defined for the system. The rules
                                                                                                                             the genotypes of Figure 2 will obtain the same fitness score
used to produce new terms and new types are based on logic
                                                                                                                             on the same test cases. They express the same phenotype,
derivation rules. Each rule is a meta-operation that takes an
                                                                                                                             but they are not the same at the genotype level. Because
expression as input and outputs another expression. For ex-
ample, a rule might start with the input ΠX.X → X → X,                                                                       their tree structures are different, crossover will affect them
                                                                                                                             in different ways.
randomly pick a type ty from the BlockPopulation set and
produce the type ty → ty → ty. Another rule might start
                                                                                                                             4.3.1 GoalType
with the term tty→ty , pick a term aty in BlockPopulation
                                                                                                                                GoalType is the parameter of the system used to provide
and produce the term (t a).
                                                                                                                             a specification of the program that is being evolved. For
4.3 The system’s individuals                                                                                                 example, if the programs should output a list of objects of
                                                                                                                             type A on input of an object of type B, then GoalType can
  Genotypes are represented as lists of building blocks. The
                                                                                                                             be defined as:
head element of an individual must be a term. For example,
                                                                                                                                B → (ΠX.X → (A → X → X) → X)
the genotype corresponding to (17)
                                                                                                                             If we’re asking for an operation on objects of type Int, for
                             + (+ 1 2) (> T ime 10 Int 3 4)                                                    (17)          example as a variation of GP2 where the T IM E variable
                                                                                                                             is passed in as an argument to the program, then we can
might be represented as either (18) or (19) in GP2 .                                                                         define GoalType as:
                                                                                                                                Int → Int
                               [+, + 1 2, > T ime 10 Int 3 4]                                                  (18)
                                                                                                                             and evaluate a program Prog as: Prog(T IM E). GoalType
                                                                                                                             does not need to be included in the Primitives, but might
                             [+ (+ 1 2), > T ime 10 Int 3 4]                                                   (19)
                                                                                                                             encourage the production of recursive behavior when it is.
   From a program interpretation point of view, (18) ex-
                                                                                                                             4.3.2 Spawning
presses its solution as the application of the function + to
two Ints while (19) expresses its solution as the application                                                                   The first generation of individuals is randomly spawned.
of the function f (x) = x + 3 to a single Int. Both programs                                                                 Randomly creating terms of type GoalType amounts (via
do the same thing, but have different tree structures, trans-                                                                 the Curry-Howard isomorphism extended to system F) to
lating into different crossover points. Using this scheme,                                                                    building a proof of the proposition GoalType, using the
there are many other genotypes that can express the same                                                                     propositions that are available as the types of the terms in
phenotype. Figure 2 presents 5 other ways to express the                                                                     the BlockPopulation set. The rules for generating individu-
phenotype associated with (18). Each has a unique tree                                                                       als are simply an adaptation of second order logic derivation



                                                                                                                      2420
rules applied to the types that exist in the BlockPopulation             Figure 2, genotypes 5 and 3 may express the same pheno-
set. Elements of Individuals are System F programs of type               type, but any crossover operation defined on these genotypes
GoalType. At the implementation level, individuals are vec-              is likely to be as absurd as a crossover operation defined on
tors of pointers to expressions in the BlockPopulation set.              tigers and mushrooms would be. If natural species are con-
                                                                         sidered solutions to a problem defined by the environment in
4.4 Generalizing expressions with abstractions                           which they exist, then it might be suggested that a species
  The System F based representation allows the GP system                 represents an optimum solution in a search landscape that
to:                                                                      is very irregular. It could be said that reproduction is a
                                                                         way to search for small improvements around the peak rep-
  1. produce higher abstractions from successful specializa-             resented by the species; inter-species breeding insures that
     tions and                                                           absurd search solutions are not the most common outcome
                                                                         of the reproduction process.
  2. specialize abstractions so as to apply them in different
     contexts.
                                                                         4.5.1 Species differentiator
   System F’s isomorphism to second order logic makes this                 The species differentiator that we use is the type of the
sort of manipulation simple because it provides a set of rules           head element of its genotype list representation. For the
that can be used to increase or reduce the abstraction level.            genotypes of Figure 2, this translates into:
For example, given a term t : U in which the free vari-
able aA occurs, we can produce the equivalent valid term                    • (1) belongs to the species: (Int → Int) → Int → Int
((λxA .t[x/a]) a), and if it happens that A doesn’t occur
                                                                            • (2) belongs to the species Int → Int
elsewhere than in the type of the bound variable x, then
we can also produce the equivalent ((ΛX.λxX .t[x/a]) A a).
                                                                            • (3) is in the species ty Boolean → Int
λ-abstraction is a way to produce generalizations. Consider
now a rewrite of part of (16) into the λ-abstraction:
                                                                            • (4) is in the species (Int → Int → Int) → Int
    λxInt λy Int λz Int . > T IM E x Int
                                                          (20)
                                                                            • (5) is in the species ΠX.(X → X → X) → X → X →
      (> T IM E y Int 3 2) (> T IM E z Int 1 0)
                                                                              X →X→X
In (20), the values of the decision cutoffs have been ab-
stracted out of the decision tree. The System F representa-              It is the type of the head element that enforces the structure
tion supports functional abstraction independently of type               of the parse tree that represents the genotype.
abstraction.
                                                                         4.5.2 Use of abstraction for crossover
4.4.1 Generalizing to polymorphism
                                                                            The crossover scheme outlined here is specific to this sys-
  To illustrate the simplicity of the process by which a poly-
                                                                         tem. It always produces a new program that includes ev-
morphic expression might be produced from a non-generic
                                                                         erything that is common in both parents at the phenotype
object, consider once again (16). The first step to the pro-
                                                                         level and has an equal probability of including blocks that
duction of a polymorphic version of the expression is to
                                                                         are not shared by either parent. Crossover in this system
rewrite it as a λ-abstraction. One possibility is:
                                                                         should be seen as two related but distinct operations:
   λxInt λy Int λwInt λz Int . > T IM E 5 Int
                                                          (21)              • In the normal sense, crossover uses two parents that
     (> T IM E 10 Int x y) (> T IM E 0 Int w z)
                                                                              belong to the same species as material for the produc-
Here, (21) has type Int → Int → Int → Int → Int and is                        tion of one or many children whose information is some
a function that implements the decision algorithm of (16),                    combination of the information from the parents.
but takes the possible return values as input. The second
                                                                            • Crossover at the genotype level also acts as both a se-
step to full abstraction is to replace the type of the bound
variables of the abstraction by a type variable and to add                    lection and a crossover operation at the block level.
the type abstraction symbol:                                                  When a block is identical at the same position in two
                                                                              parents, it becomes material for a recombination op-
    ΛY λxY λy Y λwY λz Y . > T IM E 5 Y
                                                          (22)                eration applied on blocks in what is in effect a selec-
      (> T IM E 10 Y x y) (> T IM E 0 Y w z)
                                                                              tion operation on the BlockPopulation set elements.
transforming the decision logic of the tree itself into a poly-               Blocks constructed from the recombination of blocks
morphic function that takes 4 arguments of any type and                       common to both parents are produced and inserted in
applies the logic of (16) to the arguments. The specific ad-                   the BlockPopulation set. In the population, these new
vantage of the System F representation scheme in this case                    genes are carried by the new offspring.
is the ease by which it is possible to produce a generalization
                                                                         The general case of crossover begins by identifying the blocks
of a phenotype.
                                                                         that are common to both parents. When the two parents
4.5 The crossover operator                                               contain similar blocks, an abstraction is produced from what
                                                                         is similar to both programs.
   Crossover produces a new list of System F expressions
from two parent lists in the same species. Our preliminary
                                                                         Algorithm sketch for general case of crossover.
experiments suggest that it makes little sense to try and
produce a quality offspring from two genotypes that are in                Given two parent programs within the species constraint of
completely different search space sectors. For example, in                the crossover operation:



                                                                  2421
(Background: Mathematical Structures) and 2
     1. One version of each shared block is pushed onto a
                                                                                 (Background: Computational Structures), Abramsky &
        shared stack (Shareds). When two blocks at the same
                                                                                 Gabbay & Maibaum (Eds.), Clarendon. Oxford
        position in the parents are not shared, one of the two
        is chosen randomly and is pushed onto the argument                       University Press, 1992.
        stack (Distincts). The system doesn’t actually ma-                 [2]   S. Brave. Using genetic programming to evolve
        nipulates or compare actual blocks, but only the point-                  recursive programs for tree search. In Proceedings of
        ers that reference them inside BlockPopulation.                          the Fourth Golden West Conference on intelligent
                                                                                 Systems, pages 60–65, NC, 1995. International Society
     2. The head block of the offspring is produced as an ab-                     for Computers and Their Applications, Raleigh.
        straction. The expressions that are in Distincts are
                                                                           [3]   C. Clack and T. Yu. Performance enhanced genetic
        its input and the expressions in Shareds are used to
                                                                                 programming. In P. J. Angeline, R. G. Reynolds, J. R.
        construct its body. The function is normalized and can
                                                                                 McDonnell, and R. Eberhart, editors, Evolutionary
        be used directly as a new block by inserting it into the
                                                                                 Programming VI, pages 87–100, Berlin, 1997. Springer.
        BlockPopulation set, where it may or may not already
                                                                           [4]   J. Girard. Une extension de l’interpr´tation de g¨del `
                                                                                                                        e          o   a
        exist. The second step might stop here, or the head
                                                                                 l’analyse, et son application ` l’´limination des
                                                                                                               ae
        might be degraded further into two or more blocks.
                                                                                 coupures dans l’analyse et la th´orie des types. In
                                                                                                                   e
        The blocks produced in this manner are inserted in
                                                                                 J. Fenstadt, editor, Proc. 2nd Scandinavian Logic
        BlockPopulation and the results of the insertion oper-
                                                                                 Symp., pages 63–92, Amsterdam, 1971. North-Holland.
        ations are used as the head blocks of the offspring.
                                                                           [5]   T. Haynes, R. Wainwright, S. Sen, and
                                                                                 D. Schoenefeld. Strongly typed genetic programming
     3. The third step adds the tail blocks to the offspring’s
                                                                                 in evolving cooperation strategies. In L. Eshelman,
        genotype by successive pop operations on Distincts.
                                                                                 editor, Genetic Algorithms: Proceedings of the Sixth
4.6 Evaluation                                                                   International Conference (ICGA95), pages 271–278,
                                                                                 Pittsburgh, PA, USA, 15-19 1995. Morgan Kaufmann.
   The evaluation procedure we use is also specific to our sys-
                                                                           [6]   W. A. Howard. The formulae-as-type notion of
tem. When it is possible to evaluate a block independently
                                                                                 construction, 1969. In To H. B. Curry: Essays in
from the genotypes in which it is embedded, the system
                                                                                 Combinatory Logic, Lambda Calculus, and Formalism,
stores and reuses the result of the evaluation of the building
                                                                                 pages 479–490. Academic Press, 1980.
block. For example, the block (+ 3 5) would be associated
with its value < 8.0 > at construction and would be evalu-                 [7]   L. J.Y. Girard and Taylor. Proofs and Types.
ated only once. The block is replaced directly by the result                     Cambridge University Press., 1997.
of the evaluation when a genotype that contains that block                 [8]   J. R. Koza. Genetic Programming: On the
is evaluated.                                                                    Programming of Computers by Means of Natural
                                                                                 Selection. MIT Press, Cambridge, MA, USA, 1992.
4.7 Sample implementation                                                  [9]   J. R. Koza. The genetic programming paradigm:
  We are currently experimenting with a sample C++ im-                           Genetically breeding populations of computer
plementation of a system corresponding to GP2 to find an                          programs to solve problems. In B. Soucek and the
optimal subset of formation rules for the generation of the                      IRIS Group, editors, Dynamic, Genetic, and Chaotic
BlockPopulation. Our main implementation will be pro-                            Programming, pages 203–321. John Wiley, New York,
duced in the functional language OCaml.                                          1992.
                                                                          [10]   J. R. Koza. Genetic programming version 2.
5.     CONCLUSIONS                                                               Submitted for inclusion in the Encyclopaedia of
                                                                                 Computer Science and Technology, 1997.
   The potential of System F as a representation scheme for
                                                                          [11]   D. Montana. Strongly Typed Genetic Programming.
GP comes from both its simplicity and expressiveness. It
                                                                                 Evolutionary Computation, 3:199–230, 1995.
is a language that doesn’t use many symbols, doesn’t have
                                                                          [12]   J. C. Reynolds. Towards a theory of type structure. In
many rules and yet is naturally capable of expressing many
                                                                                 Colloque sur la Programmation, volume 19 of LNCS,
computations in many different styles. It handles recursion
                                                                                 pages 408–425. Springer-Verlag, 1974.
and even allows us to define and work with many of the
                                                                          [13]   A. M. Turing. On computable numbers, with an
structures typically used by programmers. All this occurs
                                                                                 application to the Entscheidungsproblem. Proceedings
within the system using only two abstraction operations. In
                                                                                 of the London Mathematical Society, 42:230–265, 1936.
terms of safety, the programs are typed and always termi-
nate.                                                                     [14]   T. Yu and C. Clack. Recursion, lambda abstractions
                                                                                 and genetic programming. In J. R. Koza, W. Banzhaf,
                                                                                 K. Chellapilla, K. Deb, M. Dorigo, D. B. Fogel, M. H.
6.     ACKNOWLEDGMENTS
                                                                                 Garzon, D. E. Goldberg, H. Iba, and R. Riolo, editors,
  The authors acknowledge the support of the Natural Sci-
                                                                                 Genetic Programming 1998: Proceedings of the Third
ences and Engineering Research Council of Canada, and of
                                                                                 Annual Conference, pages 422–431, University of
Jane Street Capital, LLC for sponsoring the implementation
                                                                                 Wisconsin, Madison, Wisconsin, USA, 22-25 July
part of the project.
                                                                                 1998. Morgan Kaufmann.

7.     REFERENCES
 [1] H. Barendregt. Lambda calculi with types. In
     Handbook of Logic in Computer Science, Volumes 1



                                                                   2422

More Related Content

What's hot

Multilabel Classification by BCH Code and Random Forests
Multilabel Classification by BCH Code and Random ForestsMultilabel Classification by BCH Code and Random Forests
Multilabel Classification by BCH Code and Random ForestsIDES Editor
 
final report.doc
final report.docfinal report.doc
final report.docbutest
 
KAnnotator
KAnnotatorKAnnotator
KAnnotatorasedunov
 
C programming structures &amp; union
C programming structures &amp; unionC programming structures &amp; union
C programming structures &amp; unionBathshebaparimala
 
220 runtime environments
220 runtime environments220 runtime environments
220 runtime environmentsJ'tong Atong
 
18 Khan Precis
18 Khan Precis18 Khan Precis
18 Khan PrecisImran Khan
 

What's hot (7)

Multilabel Classification by BCH Code and Random Forests
Multilabel Classification by BCH Code and Random ForestsMultilabel Classification by BCH Code and Random Forests
Multilabel Classification by BCH Code and Random Forests
 
Function polynomial time
 Function polynomial time Function polynomial time
Function polynomial time
 
final report.doc
final report.docfinal report.doc
final report.doc
 
KAnnotator
KAnnotatorKAnnotator
KAnnotator
 
C programming structures &amp; union
C programming structures &amp; unionC programming structures &amp; union
C programming structures &amp; union
 
220 runtime environments
220 runtime environments220 runtime environments
220 runtime environments
 
18 Khan Precis
18 Khan Precis18 Khan Precis
18 Khan Precis
 

Viewers also liked

POLÍTICA DE INCLUSÃO À CULTURA
POLÍTICA DE INCLUSÃO À CULTURAPOLÍTICA DE INCLUSÃO À CULTURA
POLÍTICA DE INCLUSÃO À CULTURAPaula Izabela
 
Proving Properties of Programs Using Automatically Generated Models
Proving Properties of Programs Using Automatically Generated ModelsProving Properties of Programs Using Automatically Generated Models
Proving Properties of Programs Using Automatically Generated Modelsfbinard
 
Towards an automated biological programming tool
Towards an automated biological programming toolTowards an automated biological programming tool
Towards an automated biological programming toolfbinard
 
Deadlock Preventive Adaptive Wormhole Routing on k-ary n-cube Interconnection...
Deadlock Preventive Adaptive Wormhole Routing on k-ary n-cube Interconnection...Deadlock Preventive Adaptive Wormhole Routing on k-ary n-cube Interconnection...
Deadlock Preventive Adaptive Wormhole Routing on k-ary n-cube Interconnection...fbinard
 
Luchas del movimiento educacional
Luchas del movimiento educacionalLuchas del movimiento educacional
Luchas del movimiento educacionalLobo Noble
 
ciclo menstrual y embarazo
ciclo menstrual y embarazociclo menstrual y embarazo
ciclo menstrual y embarazoFlorcita Puma
 
Sistemes operatius
Sistemes operatiusSistemes operatius
Sistemes operatiusandreacnc
 
Интернеттегі мәтінге қойылатын талаптар
Интернеттегі мәтінге қойылатын талаптарИнтернеттегі мәтінге қойылатын талаптар
Интернеттегі мәтінге қойылатын талаптарAsqat Yerkimbay
 

Viewers also liked (9)

POLÍTICA DE INCLUSÃO À CULTURA
POLÍTICA DE INCLUSÃO À CULTURAPOLÍTICA DE INCLUSÃO À CULTURA
POLÍTICA DE INCLUSÃO À CULTURA
 
Proving Properties of Programs Using Automatically Generated Models
Proving Properties of Programs Using Automatically Generated ModelsProving Properties of Programs Using Automatically Generated Models
Proving Properties of Programs Using Automatically Generated Models
 
Towards an automated biological programming tool
Towards an automated biological programming toolTowards an automated biological programming tool
Towards an automated biological programming tool
 
Deadlock Preventive Adaptive Wormhole Routing on k-ary n-cube Interconnection...
Deadlock Preventive Adaptive Wormhole Routing on k-ary n-cube Interconnection...Deadlock Preventive Adaptive Wormhole Routing on k-ary n-cube Interconnection...
Deadlock Preventive Adaptive Wormhole Routing on k-ary n-cube Interconnection...
 
Luchas del movimiento educacional
Luchas del movimiento educacionalLuchas del movimiento educacional
Luchas del movimiento educacional
 
ciclo menstrual y embarazo
ciclo menstrual y embarazociclo menstrual y embarazo
ciclo menstrual y embarazo
 
Sistemes operatius
Sistemes operatiusSistemes operatius
Sistemes operatius
 
Интернеттегі мәтінге қойылатын талаптар
Интернеттегі мәтінге қойылатын талаптарИнтернеттегі мәтінге қойылатын талаптар
Интернеттегі мәтінге қойылатын талаптар
 
Curs actic bàsic
Curs actic bàsicCurs actic bàsic
Curs actic bàsic
 

Similar to An Abstraction-Based Genetic Programming System

Object-oriented Programming in Python
Object-oriented Programming in PythonObject-oriented Programming in Python
Object-oriented Programming in PythonJuan-Manuel Gimeno
 
Intellectual technologies
Intellectual technologiesIntellectual technologies
Intellectual technologiesPolad Saruxanov
 
Model-Driven Software Development - Language Workbenches & Syntax Definition
Model-Driven Software Development - Language Workbenches & Syntax DefinitionModel-Driven Software Development - Language Workbenches & Syntax Definition
Model-Driven Software Development - Language Workbenches & Syntax DefinitionEelco Visser
 
Object Oriented Programming in Python
Object Oriented Programming in PythonObject Oriented Programming in Python
Object Oriented Programming in PythonJordi Vilaplana
 
PYFML- A TEXTUAL LANGUAGE FOR FEATURE MODELING
PYFML- A TEXTUAL LANGUAGE FOR FEATURE MODELINGPYFML- A TEXTUAL LANGUAGE FOR FEATURE MODELING
PYFML- A TEXTUAL LANGUAGE FOR FEATURE MODELINGijseajournal
 
What's New In Python 2.4
What's New In Python 2.4What's New In Python 2.4
What's New In Python 2.4Richard Jones
 
IRJET - Pseudocode to Python Translation using Machine Learning
IRJET - Pseudocode to Python Translation using Machine LearningIRJET - Pseudocode to Python Translation using Machine Learning
IRJET - Pseudocode to Python Translation using Machine LearningIRJET Journal
 
A DSEL for Addressing the Problems Posed by Parallel Architectures
A DSEL for Addressing the Problems Posed by Parallel ArchitecturesA DSEL for Addressing the Problems Posed by Parallel Architectures
A DSEL for Addressing the Problems Posed by Parallel ArchitecturesJason Hearne-McGuiness
 
A Man-Computer Interactive System
A Man-Computer Interactive SystemA Man-Computer Interactive System
A Man-Computer Interactive SystemJames Heller
 
Unit1 principle of programming language
Unit1 principle of programming languageUnit1 principle of programming language
Unit1 principle of programming languageVasavi College of Engg
 
Concepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming LanguagesConcepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming Languagesppd1961
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programmingmukhtarhudaya
 
Functional Paradigm.pptx
Functional Paradigm.pptxFunctional Paradigm.pptx
Functional Paradigm.pptxFurretMaster
 
Coates p: the use of genetic programing in exploring 3 d design worlds
Coates p: the use of genetic programing in exploring 3 d design worldsCoates p: the use of genetic programing in exploring 3 d design worlds
Coates p: the use of genetic programing in exploring 3 d design worldsArchiLab 7
 
4+1view architecture
4+1view architecture4+1view architecture
4+1view architecturedrewz lin
 

Similar to An Abstraction-Based Genetic Programming System (20)

Object-oriented Programming in Python
Object-oriented Programming in PythonObject-oriented Programming in Python
Object-oriented Programming in Python
 
50120140503001
5012014050300150120140503001
50120140503001
 
50120140503001
5012014050300150120140503001
50120140503001
 
50120140503001
5012014050300150120140503001
50120140503001
 
Intellectual technologies
Intellectual technologiesIntellectual technologies
Intellectual technologies
 
Model-Driven Software Development - Language Workbenches & Syntax Definition
Model-Driven Software Development - Language Workbenches & Syntax DefinitionModel-Driven Software Development - Language Workbenches & Syntax Definition
Model-Driven Software Development - Language Workbenches & Syntax Definition
 
Object Oriented Programming in Python
Object Oriented Programming in PythonObject Oriented Programming in Python
Object Oriented Programming in Python
 
PYFML- A TEXTUAL LANGUAGE FOR FEATURE MODELING
PYFML- A TEXTUAL LANGUAGE FOR FEATURE MODELINGPYFML- A TEXTUAL LANGUAGE FOR FEATURE MODELING
PYFML- A TEXTUAL LANGUAGE FOR FEATURE MODELING
 
What's New In Python 2.4
What's New In Python 2.4What's New In Python 2.4
What's New In Python 2.4
 
IRJET - Pseudocode to Python Translation using Machine Learning
IRJET - Pseudocode to Python Translation using Machine LearningIRJET - Pseudocode to Python Translation using Machine Learning
IRJET - Pseudocode to Python Translation using Machine Learning
 
Perl Reference.ppt
Perl Reference.pptPerl Reference.ppt
Perl Reference.ppt
 
A DSEL for Addressing the Problems Posed by Parallel Architectures
A DSEL for Addressing the Problems Posed by Parallel ArchitecturesA DSEL for Addressing the Problems Posed by Parallel Architectures
A DSEL for Addressing the Problems Posed by Parallel Architectures
 
A Man-Computer Interactive System
A Man-Computer Interactive SystemA Man-Computer Interactive System
A Man-Computer Interactive System
 
Unit1 principle of programming language
Unit1 principle of programming languageUnit1 principle of programming language
Unit1 principle of programming language
 
Concepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming LanguagesConcepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming Languages
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
Functional Paradigm.pptx
Functional Paradigm.pptxFunctional Paradigm.pptx
Functional Paradigm.pptx
 
Coates p: the use of genetic programing in exploring 3 d design worlds
Coates p: the use of genetic programing in exploring 3 d design worldsCoates p: the use of genetic programing in exploring 3 d design worlds
Coates p: the use of genetic programing in exploring 3 d design worlds
 
final
finalfinal
final
 
4+1view architecture
4+1view architecture4+1view architecture
4+1view architecture
 

Recently uploaded

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 

Recently uploaded (20)

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 

An Abstraction-Based Genetic Programming System

  • 1. An Abstraction-Based Genetic Programming System Franck Binard Amy Felty School of Information Technology School of Information Technology and Engineering and Engineering University of Ottawa, Canada University of Ottawa, Canada fbinard@site.uottawa.ca afelty@site.uottawa.ca ABSTRACT There has been some interest in experimenting with typed representations in GP. The work presented in this article ex- We extend tree-based typed Genetic Programming (GP) ploits recent advances in type theory to extend the currently representation schemes by introducing System F, an expres- used tree-based typed GP representation schemes. Specifi- sive λ-calculus, for representing programs and types. At cally, we propose to use System F [4][12], an extension of the the level of programs, System F provides higher-order pro- simply typed λ-calculus obtained by adding an operation of gramming capabilities with functions and types as first-class abstraction on types, to represent the programs of a GP objects, e.g., functions can take other functions and types system. System F provides a strong form of polymorphism as parameters. At the level of types, System F provides and can describe all functions which are provably total in parametric polymorphism. The expressiveness of the system second-order logic. It renders all the usual data-types de- provides the potential for a genetic programming system to finable as pure abstractions and directly supports recursion evolve looping, recursion, lists, trees and many other typical without naming or special operators. In the system, types programming structures and behavior. This is done without such as ΠX.X → X → X , the type of any function that introducing additional external symbols in the set of prede- takes two arguments of some type and returns an object of fined functions and terminals of the system. In fact, we actu- this type as its output, can be defined. A term of this type, ally remove programming structures such as if /then/else, for example ΛXλxX λy X .x, a program that takes two argu- which we replace by two abstraction operators. We also ments and returns the first, will behave the same on any change the composition of parse trees so that they may di- argument type. rectly include types. System F is a worthwhile object of study as a representa- tion scheme for GP for the following reasons: Categories and Subject Descriptors • Language lightness: The pure System F syntax uses I.2.2 [Artificial Intelligence]: Automatic Programming— a very small set of symbols. Yet, it is possible to rep- program synthesis; F.4.1 [Mathematical Logic and For- resent all normal programming structures (recursion, mal Languages]: Mathematical Logic—lambda calculus lists, trees, booleans, looping and so on) from within and related systems the language. In fact, all functions and terminals de- fined for GP problems in other systems that are not di- rectly related to the problem such as branching, loop- General Terms ing and recursion constructs can be eliminated for the Experimentation, Languages, Theory same problems expressed in System F. • Typing structure: System F has variables ranging Keywords over functions, data and types, making the language genetic programming, lambda calculus, polymorphism, types very expressive while still maintaining full static type- safety. 1. INTRODUCTION • Tree-like structure: System F programs are similar Genetic Programming (GP) is an evolutionary computa- in structure to the programs written in other func- tion search strategy in which solutions are usually repre- tional languages such as Lisp. This tree-like structure sented as executable parse trees [9]. is generally considered a natural choice for GP. • Second-order logic isomorphism: Under the Curry- Howard isomorphism [6], System F corresponds to a second-order logic and can therefore describe all func- Permission to make digital or hard copies of all or part of this work for tions which are provably total in second-order logic. personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies The isomorphism provides a dual meaning to the type structure. For example, the type ΠX.X → X → bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific X can also be read as the second-order proposition permission and/or a fee. ∀X.X → X → X. Including the atomic type A in GECCO’07, July 7–11, 2007, London, England, United Kingdom. the system corresponds to adding the proposition A Copyright 2007 ACM 978-1-59593-698-1/07/0007 ...$5.00. 2415
  • 2. as an axiom. The second-order derivation rules can be ing the creation of the initial population, each parse tree is used directly to produce new types. This becomes very grown top-down by randomly choosing functions and termi- useful when used in conjunction with the next item. nals and verifying their validity against the type possibility table. STGP has been applied to the problem of evolving • Deriving programs from types: There is an al- cooperation strategies in a predator prey environment [5]. gorithm that takes types in a specific form as input The solutions produced consistently outperformed the solu- and outputs constructors for the type. Constructors tions produced by an untyped system. It is suggested that are functions that take the needed arguments and use the reduced search space is the cause of the performance these arguments to produce objects corresponding to improvements. the specified input type. For example, when given the The PolyGP system [3] is also based on a type system. type ΠX.X → X → X, the algorithm produces the Used during program creation, the type system ensures that two terms: ΛXλxX λy X .x and ΛXλxX λy X .y. all programs created are type-correct. PolyGP implements polymorphism using different kinds of type variables. The • Strong Normalization: System F programs always system that is proposed in this document differs from PolyGP terminate. Partial normalization can be used to par- in the following 4 ways: tially evaluate parts of programs and can be combined with abstraction support to devise a hierarchical evo- 1. In PolyGP, program parse trees are represented in a lution mechanism that permits the evolution not only Curry style, where type information is kept distinct of programs, but also of program patterns. from the terms. This way of doing things requires the use of a type unification algorithm. We propose This article is structured as follows: Section 2 summarizes a Church style representation, where terms are anno- related previous work; Section 3 describes System F and a tated with enough type information so that there is no running example expressed in this language; Section 4 de- need for a type unification algorithm. scribes our use of System F in a GP context; Section 5 is the concluding discussion. 2. Unlike PolyGP, in the System F-based GP system, parse trees contain types, and types are evolved at 2. PREVIOUS WORK the same level as terms/programs. This is the first GP system we are aware of where types are explicitly 2.1 Previous work on types in GP evolved during the run. This opens the door to the natural evolution of data structures and of operations In the original GP specification [9], the definitions of the on these data structures. primitives (the predefined terminals and functions of the system) are constrained by the closure requirement. All the 3. PolyGP’s recursion scheme requires the definition of elements in the program’s parse tree must have the same special structures. System F’s expressive power elimi- type. Closure is satisfied when “any possible composition nates this need. of functions and terminals produces a valid executable com- puter program” [10]. This implies that the programming 4. PolyGP doesn’t eliminate the need to predefine func- language in which the individuals of the system are coded tions that are not directly related to the problem. A will always be a one-type or monomorphic language. System F-based GP system does. A mechanism called constrained syntactic structures is 2.2 Previous work on recursion in GP proposed in [9] to relax the closure property. Constrained syntactic structures are problem-specific syntactic rules spec- There are currently two ways of providing recursion sup- ifying which primitives are allowed to be the child nodes of port in GP. The representation proposed in this article pro- each function in the program trees. Constrained syntactic vides a third and new manner to achieve recursion in GP. structures are used for problems requiring data typing. The explicit recursion approach [8][2], involves naming the In [11], Montana uses types to eliminate the closure con- programs of the system so that they may refer to them- straint of GP systems and to restrict the search space. The selves. This requires additional overhead. Each program method, called Strongly Typed Genetic Programming (STGP) uses a slightly different language because its name must be specifies a type for each argument of each function and for included in the set of instructions to which it has access. the value it returns. Terminals are also typed. The basic Names have to be kept and managed. Another problem STGP formulation is equivalent to Koza’s approach to con- with the scheme is that special mechanisms must be put in strained syntactic structures and both are limited by the place to handle the cases where parts of programs that refer need to specify multiple functions which perform the same to themselves are used to construct a new program (with a operation. Montana resolves the issue by using generic func- different name) in a crossover operation. Finally, the num- tions. These are functions defined on named lists of argu- ber of recursive calls must be limited to avoid infinite loops. ment types that have their return types inferred when they Each recursive call has to be tabulated while the program are embedded in a newly spawned tree. After a generic func- is running and a system of flags has to be implemented. In tion has been instantiated (by being embedded in a new tree) contrast, the recursion scheme of the System F-based sys- it is and behaves as a standard function. This is also how tem proposed in this document does not need to provide it is passed on to the program’s descendants. Montana uses programs with the ability to call themselves in order to sup- a table-lookup mechanism to produce legal parse trees. A port recursion and has no need to check for infinite loops. type possibilities table is computed beforehand to specify The implicit recursion approach [14] exploits PolyGP’s all the types that can be generated at each tree depth level. support for higher-order functions. Recursion is implemented This table provides type constraints to the function selec- using predefined higher-order functions. Unfortunately, in- tion procedure used to generate type-correct programs. Dur- creasing the number of primitives that are manipulated by 2416
  • 3. 3.4 the GP system increases its search space and bloats its lan- α-conversion guage with programming constructs that are not directly re- The α-conversion rule expresses the notion that the names of the bound variables are unimportant; for example λxU .x lated to the problem that is being solved. The functions are and λy U .y are the same function, and ΠY.Y → Y is the general higher-order structures with no direct relation to the actual problem for which a solution is being evolved and it is same type as ΠX.X → X. not clear how it is decided which function goes with which 3.5 Reducibility and strong normalization problem. Finally, PolyGP implements these higher-order operations on lists only. Implementing recursion on other An expression reaches its normal form when it can’t be structures requires additional syntax. The System F scheme rewritten any further by the evaluation rules. It is normal- proposed in this document doesn’t share these limitations. izable if it can be reduced to a normal form and is strongly In particular, it evolves its own higher-order functions and normalizable if every sequence of reductions starting with naturally “understands” recursion on any structure. the expression terminates in a normal form. System F terms are strongly normalizing [7]. 3. SYSTEM F AND A RUNNING EXAMPLE 3.6 General scheme for free structures The system is formulated in the Church style where types The calculus is impredicative making self-application pos- are embedded in terms, resulting in an extension of the pure sible; for example, the polymorphic identity ΛX.λxX .x can λ-calculus. take its own type, ΠX.X → X and then itself as arguments. 3.1 Rules for types The definition of an object can refer to the collection to From a finite set of atomic types and an infinite set of which the object belongs. In this section, several type and type variables, new types are constructed as: object definitions are presented as examples. With these ex- amples, we show how types and functions may be defined 1. If U and V are types, then U → V is a type. as pure abstractions, describing structure. This implies that 2. If V is a type, and X is a type variable, then ΠX.V is any genetic program whose representation scheme is based a type. on System F would have the capacity to express the exam- ples below, no matter what the set of functions that are The type ΠX.V is called an abstract type, and an object of defined for the genetic program is. There is another way to this type can be expressed as: say this: ΛX.(f unction body) (1) Any GP system based on System F that Where X is the same type variable as the one in the type of has the capacity to name and to reuse terms the object. The calculus requires that any variable of type and types also has the capacity to repre- X within f unction body be bound by a λ-abstraction. A sent structures such as booleans, numbers, function typed with an abstract type ΠX.V can be viewed pairs, lists, trees, tuples and all the usual as a function which takes as its parameter a type ty and operations on those structures. In addi- returns a function typed as V [ty/X]. tion, such a system can represent recursive functions. The representation is encoded 3.2 Rules for terms in the structure of the tree and is indepen- dent of the primitive terms and types that 1. variables: xT , y T , z T , . . . of type T , are defined for the GP system. 2. application: tu of type V , where t is of type U → V 3.6.1 Finding the representations and u is of type U System F comes with a general scheme for the represen- 3. λ-abstraction: λxU .v of type U → V , where xU is a tation of free structures. To generate objects of type ty, variable of type U and v is of type V , where ty represents a structure, a series of constructors is needed. These are functions that take no, one, or several ar- 4. universal abstraction: if v is a term of type V , then we guments and use them to produce objects of type ty. These can form ΛX.v of type ΠX.V , so long as the variable constructors can be recursive. For example one of the list X is not free in the type of a free variable of v. constructors creates a list from two arguments: a list of el- 5. universal application: if t is a term of type ΠX.V and ements of a given type, and an element of the same type. U is a type then tU is a term of type V [U/X] 3.6.2 Format for the types 3.3 Evaluation/reduction rules Following [7], we restrict ourselves to types in the form: 1. (λx.v)u evaluates to v[u/x] ΠX.S1 → . . . → Sn → X (2) 2. (ΛX.v)U evaluates to v[U/X] with each Si in the form: 3.3.1 Naming and equivalence i i T 1 → . . . → T ki → X (3) We write: Where the ‘X’ type variable in each Si is replaced by the def name = E name of the structure. For any type ty, each Si [ty/X] is the to use the name name as a shorthand for the expression E, type of a function that “builds” an object of type ty. That the two being treated as identical. The pure system is a function is a constructor. This implies that each structure calculus of expressions without names. requires f1 , . . . , fn constructor definitions. For example, if 2417
  • 4. ty is the integer type, there will be two constructors, the first Table 1: Primitives for GP2 one, typed as ty → ty (a constructor that takes an integer Type object and returns its successor, itself an integer object) and Abstract Type, ΠX.X → X → X ty Boolean the other with type ty coding 0 (with no argument). Simi- Int Generic larly, if ty is the boolean type, it will require 2 constructors, neither of which take any arguments: one that constructs Functions Type the object false and the other to produce true. Int → Int → Int + Int → Int → Int - 3.6.3 The boolean type Int → Int → Int / def Int → Int → Int ty Boolean = ΠX.X → X → X * (4) Int → Int → ty Boolean > with Terminals Type def def (5) S1 = X S2 = X [0, . . . , 10] Int TIME Int which gives two constructors, f1 and f2 , of type S1 [ty Boolean/X] and S2 [ty Boolean/X]: 3.6.6 What cannot be represented in System F f1 = te true = ΛX.λxX .λxX .xX def def 1 2 1 System F has the strong normalization property, so the (6) f2 = te f alse = ΛX.λxX .λxX .xX def def programs of the system always eventually terminate. The 1 2 2 unsolvability of the halting problem [13] implies that there 3.6.4 Lists are computable functions that cannot be represented in Sys- The type of a list of objects of type U is definable as: tem F. This is not so bad as it sounds because as [1] puts it, in order to find computable functions that cannot be repre- def ty ListU = ΠX.X → (U → X → X) → X (7) sented in F, “one has to stand on one’s head”. In theory, we could do all the programming we would ever need without So there are two Si : going outside the pure system. In practice, the genetic pro- def def S2 = U → X → X (8) S1 = X grams we experiment with include primitive external func- tions and terminals defined as symbols and evaluated using which gives two constructors, f1 and f2 of type ty ListU for a semantic evaluator that gives them meaning outside their the empty list constructor and U → ty ListU → ty ListU System F representation. for the one that constructs an object of type ty ListU from an object of type U and an object of type ty ListU : 3.6.7 A symbolic regression example = ΛX.λxX .λx2 →X→X .x1 U def def The problem of symbolic regression can be stated as “given f1 = te nil 1 a set of data points, find the underlying function in symbolic def def f2 = te cons = terms” [9]. Table 1 defines the primitives of GP2 , a symbolic λp1 λp2 ListU ΛX.λxX .λx2 →X→X .x2 p1 (p2 X x1 x2 ) ty U U 1 regression GP system that uses System F to represent its in- (9) dividuals. GP2 models a real valued function of the variable The second constructor illustrates how recursion happens. T IM E. The polymorphic argument p2 is first applied to the type The set of primitives is used to predefine symbols that variable X, which gives it the right type to “fit” inside the exist outside System F and to name constructs that exist body of the constructor and makes it accept the arguments within it. The first primitives to be inserted are the atomic x1 and x2 . The normalized form of the list (u1 , u2 , . . . , un ) types. For example, the type Int. Once the atomic types of elements of type U is encoded as: have been introduced in the system, the user can insert the ΛX.λxX .λy U→ X → X .y u1 (y u2 (. . . (y un x)) . . .) typed free variables of the system, such as 6 : Int or + : (10) Int → Int → Int. The set is also a syntactic sugar mecha- 3.6.5 Integers nism. Composite expressions can be included, depending on the problem. For example, the type Int → Int → Int might The representation for integers requires two constructors: be renamed as BinaryN umericalOp or the booleans might a constant (for 0) of type integer and the successor function be included, either by naming the type ΠX.X → X → X from the integers to the integers, so: or by inserting an atomic boolean type in the set, with true def ty Int = ΠX.(X → X) → X → X (11) and false also defined as atomic symbols. The system’s de- signer might also decide to do both, or might even choose And there are two Si : not to include a boolean type at all. Because it can still be def def S1 = X → X expressed by the system, it is possible for it to evolve on its (12) S2 = X own. So we need two constructors: In our sample implementation, an element of the Primi- f1 = te Succ = λp1 Int .ΛX.λxX→X λxX .x1 (p1 X x1 x2 ) ty def def tives set may also be linked to an “evaluation recipe”, that 1 2 provides instructions as to how the object should be evalu- f2 = te 0 = ΛX.λxX→X λxX .x2 def def 1 2 ated. During a run, there are functions that allow the user (13) to pause the run and extend the Primitives set so that: The ty Int object n is the function which to any type U and function f of type U → U associates the function f n , i.e. f 1. Complex structures that appear often might be re- iterated n times. placed by syntactic sugar, improving readability. 2418
  • 5. While (16) is a simple integer-valued decision tree based on the value of the variable T IM E: > T IM E 5 Int (> T IM E 10 Int 3 2) (> T IM E 0 Int 1 0) (16) 3.6.9 Recursion As an example of recursive behavior, let’s compute the Fibonacci sequence in System F using the primitives of GP2 . For this task, we may use the type: def T rInt = ΠX.(Int → Int → Int → X) → X T rInt is in the required format and the constructor scheme can be applied mechanically to yield: tr = λiInt λj Int λkInt ΛXλxInt→Int→Int→X .x i j k def Finally let’s define: f ib = λdT rInt . def tr (+ (d Int (λxInt λy Int λz Int .x)) 1) Figure 1: Parse tree for expression 14 (d Int (λxInt λy Int λz Int .z)) (d Int (λxInt λy Int λz Int .(+ y z))) 2. Some System F structures that are evaluated mechan- of type T rInt → T rInt. f ib has an invariant property on objects of type T rInt: Given j, the (n − 1)st term, and k, ically within the system might be replaced by a more the nth term in the Fibonacci sequence then (f ib (tr n j k)) efficient evaluation recipe. evaluates to (tr (+ n 1) k (+ j k)). We can now compute the Fibonacci sequence for n+2 in many different ways. For 3.6.8 Computing from within the system example using the integers of Section 3.6.5: In the versions of the symbolic regression problem pre- te n T rInt f ib (tr 2 0 1) sented in [9] and [11], branching is enabled via the primitive where te n is the nth numeral of type ty Int. We could also function IF T E. GP2 doesn’t include a branching struc- use lists and write: ture, and doesn’t need one. For example, the expression te l T rInt (tr 2 0 1) (λuty λtT rInt .f ib t) (+ 2 (+ 1 (IF T E (> T IM E 10) 3 4))), can be expressed where te l is a list of n elements of any type ty in GP2 . There in System F using the primitives of GP2 as: are many other possibilities for the computation. Just as there was no need to extend GP2 with an IF T E function + 2 (+ 1 (> T IM E 10 Int 3 4 )) (14) for branching, there is no need to extend GP2 for recursion. The sub-expression (> T IM E 10) evaluates to a ty Boolean (as defined in section 3.6.3). (te true Int) evaluates to the 4. SYSTEM F USE IN GP term λxInt λy Int .x of type Int → Int → Int after replacing The individuals are programs constructed as a series of ap- X by Int. This is a function that takes two arguments of plications of expressions from the BlockPopulation set, a set type Int as inputs and outputs the first of the arguments. of well-formed normalized terms and types, built from the Conversely, (te f alse Int) evaluates to a function of two Int- primitives defined for the system. BlockPopulation evolves typed arguments that returns the second of the arguments. during the system’s run, but the initial set should spread Figure 1 represents the resulting parse tree for expression out over as wide a search space area as possible. A term can 14 in the partial application style of program representation be an element of the BlockPopulation set if and only if it is [3]. Each node in the tree is either a leaf (corresponding to carried as a block by an individual of the system. a primitive) or a typed function application that is itself at the root of a binary tree. Our research uses and augments 4.1 Complexity this representation style in two ways: To monitor and minimize the memory cost associated each with expression, the complexity of an expression is calculated 1. Tags are added to each node to indicate its type. as: 2. Parse trees can be linked using both function applica- 1. Atomic types have complexity 1. tion nodes and type application nodes. Type applica- tion is new to GP, and is one of the contributions of 2. Arrow types have the complexity of their left type plus this research. Type application nodes link functions the complexity of their right type, plus 1. to types. 3. The complexity of an abstract type is the complexity The result of the evaluation of the (> T IM E 10) term is of the body of its abstraction plus 2 (one for its type directly used as a branching structure. This is only possible variable and one for itself). because true and false are functions defined without using 4. The complexity of a term variable is 1 plus the com- any symbol from outside the language and therefore express plexity of its type. abstract behavior. Boolean objects can be used as a decision procedure between two arguments of any type. For example 5. The complexity of an application term is the sum of (15) is a decision between an addition and a subtraction: the complexities of its two arguments and of its type, > T IM E 10 (Int → Int → Int) + − (15) plus 1. 2419
  • 6. (1) ⎡λ x Int →Int λ y Int .xy, + ( + 1 2 ) , ( λ x Int λ y Int . > TIME 10 Int x y ) 3 4⎤ structure and except for the last one, the shape of their as- ⎣ ⎦ sociated tree is determined by the type of the head element. ( 2 ) ⎡λ x Int . + ( + 1 2 ) ( > x 10 Int 3 4 ) , TIME ⎤ ⎣ ⎦ The expressive power of System F allows the sampling of ( 3) ⎡ λ x . + ( + 1 2 )( x Int 3 4 ) , ( > TIME 10 )⎤ ty _ Boolean different sectors of the search space. For example, in Figure ⎣ ⎦ 2: ( 4 ) ⎡λ x .x ( x 1 2 ) ( > TIME 10 Int 3 4 ) , + ⎤ Int → Int → Int ⎣ ⎦ • (1) “understands” the problem as finding an operation ( ) ( x x )( x ) ⎡ ΛX λ x1X → X → X λ x2X λ x3X λ x4X λ x5X . > TIME 10 ( X → X ) x1 x2X x4X x5X ,⎤ X of type Int → Int and an Int to apply it to. (5) ⎢ 1 3 1 ⎥ ⎢ Int , +,3, 4, 1, 2 ⎥ ⎣ ⎦ • (2) sees the solution to the problem as an application of a function of type Int → Int to an Int. Figure 2: Other ways to express the phenotype produced by expression 18 • (3) looks at it from the point of view of the appli- cation of a function of type ty Boolean → Int to a ty Boolean. 6. The complexity of an abstract term is the sum of the • (4) considers the phenotype to be the application of complexities of the body of the abstraction, of its bound a function of type (Int → Int → Int) → Int to an term variable and of its type, plus 1. operator of type Int → Int → Int such as + or −. 7. The complexity of a term abstracted by type is the • (5) is the most abstract of all (but not the most ab- sum of the complexities of the body of the abstraction and of its type, plus 2. stract possible). It sees the solution as an application of a function that takes as parameters 4 objects of some By providing an upper-bound on the complexity of both type ty and a binary operator on tys and outputs a ty blocks and individuals, it is possible to implement the kind of object. In this sense the root function of genotype 5 bloating controlling measures usually associated with max- is truly a polymorphic function usable with any type. imum tree-depth values in typical GP systems. Because of this, the second element of the genotype, a type, also plays a role in shaping the overall structure 4.2 Generating the initial BlockPopulation set of the tree. The Primitives set is the kernel of the BlockPopulation In the biological world genetically unrelated organisms set. The initial set is constructed by adding new expressions, will often evolve the same phenotypical solutions through built from the ones that are already in it. The construction completely different genetic pathways. System F’s versatil- process stops when the sum of the complexities of all objects ity produces a similar situation. In GP, it is the phenotype in the BlockPopulation set is greater than maxComp, one of that is fitness-scored. This implies that (18), (19) and all the system-wide variables defined for the system. The rules the genotypes of Figure 2 will obtain the same fitness score used to produce new terms and new types are based on logic on the same test cases. They express the same phenotype, derivation rules. Each rule is a meta-operation that takes an but they are not the same at the genotype level. Because expression as input and outputs another expression. For ex- ample, a rule might start with the input ΠX.X → X → X, their tree structures are different, crossover will affect them in different ways. randomly pick a type ty from the BlockPopulation set and produce the type ty → ty → ty. Another rule might start 4.3.1 GoalType with the term tty→ty , pick a term aty in BlockPopulation GoalType is the parameter of the system used to provide and produce the term (t a). a specification of the program that is being evolved. For 4.3 The system’s individuals example, if the programs should output a list of objects of type A on input of an object of type B, then GoalType can Genotypes are represented as lists of building blocks. The be defined as: head element of an individual must be a term. For example, B → (ΠX.X → (A → X → X) → X) the genotype corresponding to (17) If we’re asking for an operation on objects of type Int, for + (+ 1 2) (> T ime 10 Int 3 4) (17) example as a variation of GP2 where the T IM E variable is passed in as an argument to the program, then we can might be represented as either (18) or (19) in GP2 . define GoalType as: Int → Int [+, + 1 2, > T ime 10 Int 3 4] (18) and evaluate a program Prog as: Prog(T IM E). GoalType does not need to be included in the Primitives, but might [+ (+ 1 2), > T ime 10 Int 3 4] (19) encourage the production of recursive behavior when it is. From a program interpretation point of view, (18) ex- 4.3.2 Spawning presses its solution as the application of the function + to two Ints while (19) expresses its solution as the application The first generation of individuals is randomly spawned. of the function f (x) = x + 3 to a single Int. Both programs Randomly creating terms of type GoalType amounts (via do the same thing, but have different tree structures, trans- the Curry-Howard isomorphism extended to system F) to lating into different crossover points. Using this scheme, building a proof of the proposition GoalType, using the there are many other genotypes that can express the same propositions that are available as the types of the terms in phenotype. Figure 2 presents 5 other ways to express the the BlockPopulation set. The rules for generating individu- phenotype associated with (18). Each has a unique tree als are simply an adaptation of second order logic derivation 2420
  • 7. rules applied to the types that exist in the BlockPopulation Figure 2, genotypes 5 and 3 may express the same pheno- set. Elements of Individuals are System F programs of type type, but any crossover operation defined on these genotypes GoalType. At the implementation level, individuals are vec- is likely to be as absurd as a crossover operation defined on tors of pointers to expressions in the BlockPopulation set. tigers and mushrooms would be. If natural species are con- sidered solutions to a problem defined by the environment in 4.4 Generalizing expressions with abstractions which they exist, then it might be suggested that a species The System F based representation allows the GP system represents an optimum solution in a search landscape that to: is very irregular. It could be said that reproduction is a way to search for small improvements around the peak rep- 1. produce higher abstractions from successful specializa- resented by the species; inter-species breeding insures that tions and absurd search solutions are not the most common outcome of the reproduction process. 2. specialize abstractions so as to apply them in different contexts. 4.5.1 Species differentiator System F’s isomorphism to second order logic makes this The species differentiator that we use is the type of the sort of manipulation simple because it provides a set of rules head element of its genotype list representation. For the that can be used to increase or reduce the abstraction level. genotypes of Figure 2, this translates into: For example, given a term t : U in which the free vari- able aA occurs, we can produce the equivalent valid term • (1) belongs to the species: (Int → Int) → Int → Int ((λxA .t[x/a]) a), and if it happens that A doesn’t occur • (2) belongs to the species Int → Int elsewhere than in the type of the bound variable x, then we can also produce the equivalent ((ΛX.λxX .t[x/a]) A a). • (3) is in the species ty Boolean → Int λ-abstraction is a way to produce generalizations. Consider now a rewrite of part of (16) into the λ-abstraction: • (4) is in the species (Int → Int → Int) → Int λxInt λy Int λz Int . > T IM E x Int (20) • (5) is in the species ΠX.(X → X → X) → X → X → (> T IM E y Int 3 2) (> T IM E z Int 1 0) X →X→X In (20), the values of the decision cutoffs have been ab- stracted out of the decision tree. The System F representa- It is the type of the head element that enforces the structure tion supports functional abstraction independently of type of the parse tree that represents the genotype. abstraction. 4.5.2 Use of abstraction for crossover 4.4.1 Generalizing to polymorphism The crossover scheme outlined here is specific to this sys- To illustrate the simplicity of the process by which a poly- tem. It always produces a new program that includes ev- morphic expression might be produced from a non-generic erything that is common in both parents at the phenotype object, consider once again (16). The first step to the pro- level and has an equal probability of including blocks that duction of a polymorphic version of the expression is to are not shared by either parent. Crossover in this system rewrite it as a λ-abstraction. One possibility is: should be seen as two related but distinct operations: λxInt λy Int λwInt λz Int . > T IM E 5 Int (21) • In the normal sense, crossover uses two parents that (> T IM E 10 Int x y) (> T IM E 0 Int w z) belong to the same species as material for the produc- Here, (21) has type Int → Int → Int → Int → Int and is tion of one or many children whose information is some a function that implements the decision algorithm of (16), combination of the information from the parents. but takes the possible return values as input. The second • Crossover at the genotype level also acts as both a se- step to full abstraction is to replace the type of the bound variables of the abstraction by a type variable and to add lection and a crossover operation at the block level. the type abstraction symbol: When a block is identical at the same position in two parents, it becomes material for a recombination op- ΛY λxY λy Y λwY λz Y . > T IM E 5 Y (22) eration applied on blocks in what is in effect a selec- (> T IM E 10 Y x y) (> T IM E 0 Y w z) tion operation on the BlockPopulation set elements. transforming the decision logic of the tree itself into a poly- Blocks constructed from the recombination of blocks morphic function that takes 4 arguments of any type and common to both parents are produced and inserted in applies the logic of (16) to the arguments. The specific ad- the BlockPopulation set. In the population, these new vantage of the System F representation scheme in this case genes are carried by the new offspring. is the ease by which it is possible to produce a generalization The general case of crossover begins by identifying the blocks of a phenotype. that are common to both parents. When the two parents 4.5 The crossover operator contain similar blocks, an abstraction is produced from what is similar to both programs. Crossover produces a new list of System F expressions from two parent lists in the same species. Our preliminary Algorithm sketch for general case of crossover. experiments suggest that it makes little sense to try and produce a quality offspring from two genotypes that are in Given two parent programs within the species constraint of completely different search space sectors. For example, in the crossover operation: 2421
  • 8. (Background: Mathematical Structures) and 2 1. One version of each shared block is pushed onto a (Background: Computational Structures), Abramsky & shared stack (Shareds). When two blocks at the same Gabbay & Maibaum (Eds.), Clarendon. Oxford position in the parents are not shared, one of the two is chosen randomly and is pushed onto the argument University Press, 1992. stack (Distincts). The system doesn’t actually ma- [2] S. Brave. Using genetic programming to evolve nipulates or compare actual blocks, but only the point- recursive programs for tree search. In Proceedings of ers that reference them inside BlockPopulation. the Fourth Golden West Conference on intelligent Systems, pages 60–65, NC, 1995. International Society 2. The head block of the offspring is produced as an ab- for Computers and Their Applications, Raleigh. straction. The expressions that are in Distincts are [3] C. Clack and T. Yu. Performance enhanced genetic its input and the expressions in Shareds are used to programming. In P. J. Angeline, R. G. Reynolds, J. R. construct its body. The function is normalized and can McDonnell, and R. Eberhart, editors, Evolutionary be used directly as a new block by inserting it into the Programming VI, pages 87–100, Berlin, 1997. Springer. BlockPopulation set, where it may or may not already [4] J. Girard. Une extension de l’interpr´tation de g¨del ` e o a exist. The second step might stop here, or the head l’analyse, et son application ` l’´limination des ae might be degraded further into two or more blocks. coupures dans l’analyse et la th´orie des types. In e The blocks produced in this manner are inserted in J. Fenstadt, editor, Proc. 2nd Scandinavian Logic BlockPopulation and the results of the insertion oper- Symp., pages 63–92, Amsterdam, 1971. North-Holland. ations are used as the head blocks of the offspring. [5] T. Haynes, R. Wainwright, S. Sen, and D. Schoenefeld. Strongly typed genetic programming 3. The third step adds the tail blocks to the offspring’s in evolving cooperation strategies. In L. Eshelman, genotype by successive pop operations on Distincts. editor, Genetic Algorithms: Proceedings of the Sixth 4.6 Evaluation International Conference (ICGA95), pages 271–278, Pittsburgh, PA, USA, 15-19 1995. Morgan Kaufmann. The evaluation procedure we use is also specific to our sys- [6] W. A. Howard. The formulae-as-type notion of tem. When it is possible to evaluate a block independently construction, 1969. In To H. B. Curry: Essays in from the genotypes in which it is embedded, the system Combinatory Logic, Lambda Calculus, and Formalism, stores and reuses the result of the evaluation of the building pages 479–490. Academic Press, 1980. block. For example, the block (+ 3 5) would be associated with its value < 8.0 > at construction and would be evalu- [7] L. J.Y. Girard and Taylor. Proofs and Types. ated only once. The block is replaced directly by the result Cambridge University Press., 1997. of the evaluation when a genotype that contains that block [8] J. R. Koza. Genetic Programming: On the is evaluated. Programming of Computers by Means of Natural Selection. MIT Press, Cambridge, MA, USA, 1992. 4.7 Sample implementation [9] J. R. Koza. The genetic programming paradigm: We are currently experimenting with a sample C++ im- Genetically breeding populations of computer plementation of a system corresponding to GP2 to find an programs to solve problems. In B. Soucek and the optimal subset of formation rules for the generation of the IRIS Group, editors, Dynamic, Genetic, and Chaotic BlockPopulation. Our main implementation will be pro- Programming, pages 203–321. John Wiley, New York, duced in the functional language OCaml. 1992. [10] J. R. Koza. Genetic programming version 2. 5. CONCLUSIONS Submitted for inclusion in the Encyclopaedia of Computer Science and Technology, 1997. The potential of System F as a representation scheme for [11] D. Montana. Strongly Typed Genetic Programming. GP comes from both its simplicity and expressiveness. It Evolutionary Computation, 3:199–230, 1995. is a language that doesn’t use many symbols, doesn’t have [12] J. C. Reynolds. Towards a theory of type structure. In many rules and yet is naturally capable of expressing many Colloque sur la Programmation, volume 19 of LNCS, computations in many different styles. It handles recursion pages 408–425. Springer-Verlag, 1974. and even allows us to define and work with many of the [13] A. M. Turing. On computable numbers, with an structures typically used by programmers. All this occurs application to the Entscheidungsproblem. Proceedings within the system using only two abstraction operations. In of the London Mathematical Society, 42:230–265, 1936. terms of safety, the programs are typed and always termi- nate. [14] T. Yu and C. Clack. Recursion, lambda abstractions and genetic programming. In J. R. Koza, W. Banzhaf, K. Chellapilla, K. Deb, M. Dorigo, D. B. Fogel, M. H. 6. ACKNOWLEDGMENTS Garzon, D. E. Goldberg, H. Iba, and R. Riolo, editors, The authors acknowledge the support of the Natural Sci- Genetic Programming 1998: Proceedings of the Third ences and Engineering Research Council of Canada, and of Annual Conference, pages 422–431, University of Jane Street Capital, LLC for sponsoring the implementation Wisconsin, Madison, Wisconsin, USA, 22-25 July part of the project. 1998. Morgan Kaufmann. 7. REFERENCES [1] H. Barendregt. Lambda calculi with types. In Handbook of Logic in Computer Science, Volumes 1 2422