The HPR L/S library is all based around the HPR VM defined in abstract.hdr.
The library is written in F# (this runs just fine on mono/linux).
A VM contains variable declarations, executable code, temporal logic assertions and child machines.
A system is a list of VMs where each may be the root of a tree of VMs.
Variables are signed and unsiged integers of various precisions and 1-D arrays of such integers. Floating point is being added. A small amount of string handling is also provided.
All variable are static (no dynamic storage) and must be unique in a single namespace that spans the system.
The executable code of a VM has several basic forms:
The executable code may be clocked or nonclocked.
Fragments may be put in serial or parallel using the SP_par and SP_seq combinators. There are two variants of SP_par, for lockstep and asynchronous composition.