copilot-0.21: A lazy-list language for generating constant-time and constant-space C programs. Uses Atom as a backend.




This module provides a way to check that a Copilot specification is compilable


Main error checking functions

check :: StreamableMaps Spec -> Maybe ErrorSource

Check a Copilot specification. If it is not compilable, then returns an error describing the issue. Else, returns Nothing

data Error Source

Used for representing an error in the specification, detected by check


BadSyntax String Var

the BNF is not respected

BadDrop Int Var

A drop expression of less than 0 is used

BadSamplingPhase Var Var Phase

if an external variable is sampled at phase 0 then there is no time for the stream to be updated

BadType Var Var

either a variable is not defined, or not with the good type ; there is no implicit conversion of types in Copilot

NonNegativeWeightedClosedPath [Var] Weight

The algorithm to compile Copilot specification can only work if there is no negative weighted closed path in the specification, as described in the original research paper

DependsOnClosePast [Var] Var Weight Weight

Could be compiled, but would need bigger prophecyArrays

DependsOnFuture [Var] Var Weight

If an output depends of a future of an input it will be hard to compile to say the least


data SpecSet Source


Varied other things