Currently, this site is home to two related technologies:
The Tulip Engine is a fast general-purpose .NET dataflow engine with the control flow semantics of a 'production' system (an extension of Post's canonical system). It implements a self-propagating list comprehension monad that processes lists of relational tuples, together with the recursive mechanisms and working memory that characterize production systems.

Tulip Rules exploits the Tulip Engine to provide an inferencing rules engine with similar capabilities and characteristics to a Rete rules engine. Although the Tulip Engine does not implement the Rete algorithm, Tulip Rules expolits the engine to provide a computationally equivalent approach, including equivalent optimization, built over the tuple list comprehension monad.
Tulip = TUple LIst Processor.
A technical overview of Tulip technology is available at
Here is a screenshot of an early implementation of 'LINQ-to-Rules'.  This is an 'internal DSL' which allows developers to create rule sets using C# or VB.NET (the example below is written in C#).  It uses LINQ expressions to define rule logic.  LINQ-to-Rules is envisaged as (potentially) a family of LINQ providers for different lower-level rule representations.  Tulip Rules will, in the first instance, deliver a LINQ-to-PRD' provider.  This will convert rule set expressions like that show below directly into W3C RIF PRD.  RIF = 'Rule Interchange Format'.  PRD = 'Production Rule Dialect'.  The PRD specification is a W3C standard for representing production rule sets.
 LINQ to Rules

Last edited Dec 16, 2011 at 11:10 PM by tuplelister, version 38