-
Notifications
You must be signed in to change notification settings - Fork 6
Home
The nextgen-solitaire repository contains the latest manifestation of applying Combinatory Logic Synthesis (CLS) to synthesize Java Solitaire variations in a product line.
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:
- 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)]
- An Instance-Oriented Approach to Constructing Product Lines from Layers [Heineman(WPI)]
The Solitaire Product Line example is the result of this combined effort.
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.
This was constructed from a library as follows:
- narcotic
- solitaire
- Solitaire.inhab
- Solitaire.scs
- moves
- DeckMove.{inhab, scs}
- PileMove.{inhab,scs}
- ResetDeckMove.{inhab, scs}
- controllers
- ColumnController.{inhab, scs}
- DeckController.{inhab, scs}
- PileController.{inhab, scs}
final
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.