Lustre is a formally defined, declarative, and synchronous dataflow programming language for programming reactive systems. It began as a research project in the early 1980s. A formal presentation of the language can be found in the 1991 Proceedings of the IEEE. In 1993 it progressed to practical, industrial use in a commercial product as the core language of the industrial environment SCADE, developed by Esterel Technologies. It is now used for critical control software in aircraft, helicopters, and nuclear power plants.
A Lustre program is a series of node definitions, written as:
Where <code>foo</code> is the name of the node, <code>a</code> is the name of the single input of this node and <code>b</code> is the name of the single output. In this example the node <code>foo</code> returns the negation of its input <code>a</code>, which is the expected result.
Additional internal variables can be declared as follows:
Note: The equations order doesn't matter, the order of lines <code>U = X and Y;</code> and <code>Z = not U;</code> doesn't change the result.