Skip to content
George Heineman edited this page Feb 8, 2018 · 25 revisions

The nextgen-solitaire repository contains the latest manifestation of applying Combinatory Logic Synthesis (CLS) to synthesize Java Solitaire variations in a product line.

History

We have developed a number of prototype tools for applying CLS to synthesizing Solitaire Product Line members. The genesis of the idea occurred at a Dagstuhl Seminar Design and Synthesis from Components (June 2014).

Researchers Jakob Rehof, Boris Düdder and George Heineman put together two independent research streams:

  1. Using Inhabitation in Bounded Combinatory Logic with Intersection Types for Composition Synthesis [Boris Düdder (Technical University of Dortmund), Oliver Garbe (Technical University of Dortmund), Moritz Martens (Technical University of Dortmund), Jakob Rehof (Technical University of Dortmund), Paweł Urzyczyn (University of Warsaw)]
  2. An Instance-Oriented Approach to Constructing Product Lines from Layers [Heineman (WPI)]

The Solitaire Product Line example is the result of this combined effort.

V0.6 using synthesis tool developed by Boris Düdder

We started with a tool developed by Boris Düdder as part of his PhD dissertation Automatic Synthesis of Component & Connector-Software Architectures with Bounded Combinatory Logic, 2014.

The first working iteration (LaunchPad-v0.6) was completed in November 2014, using a standalone F# executable on a Windows platform which synthesized three different variations -- FreeCell, Narcotic and Klondike.

View Artifacts for V0.6 where you can find installation instructions.

V1.0 using LaunchPad plugin in Eclipse

The paper Towards migrating object-oriented frameworks to enable synthesis of product line members describes the initial prototype of a tool developed to work with product lines.

View Artifacts for V1.0 where you can find installation instructions.

Version 1.0 was released on March 15, 2015 and is referred to by the FeatureIDE developers on their web site.

V2.0 using Scala

The current Scala implementation hosted on http://combinators.org represents the culmination of several years of work investigating the use of combinatory logic synthesis to support the automated composition of non-trivial software systems. Jan Bessai has coded a Scala implementation of the CLS algorithm. The most important result of this effort is that it eliminates our dependence on domain-specific languages. All combinators are coded in Scala and processed using the Scala Build Tool (sbt) which means we can take full advantage of modern development environments such as IntelliJ.

Version 2.0 was released on December 18, 2017

View Artifacts for V2.0 where you can find installation instructions.