Frama-C:
Plug-ins:
Libraries:

Frama-C API - Lti_system

This module aims to provide overapproximations of the behaviors of linear time-invariant systems, for both the transition and the permanent phases.

A LTI system corresponds to the following recursive equation :

X[t + 1] = AX[t] + Bε[t] + S

where :

  • š•‚ is a field ;
  • n is the system's state dimension, or order ;
  • m is the system's input space dimension ;
  • X[t] ∈ š•‚^n is the system's state vector at iteration t ;
  • μ[t] ∈ š•‚^m is an input vector at iteration t ;
  • A ∈ š•‚^{n Ɨ n} is the state matrix ;
  • B ∈ š•‚^{n Ɨ m} is the input matrix ;
  • S ∈ š•‚^n is the system's shift.

Several notes here :

  • The only hypothesis on A is that its eigenvalues are all lower than one in absolute value. It is a sufficient condition for the filter to converge. Conversely, there is no hypothesis on B. If the procedure cannot prove easily that this hypothesis is satisfied, it will simply return None.
  • All input vectors are supposed belonging to a box in š•‚^m.
  • Most presentations of LTI systems describe them using two equations, a recursive one equivalent to the one presented here and focused on the hidden state vector, and an output non recursive equation focused on transforming the hidden state vector into a usable output. However, as the two equations can be easily combined into one, it is not considered in this module.
  • Usually, the shift is not present, as it makes the system kind of affine instead of linear. However, the theory underlying this module can easily take it into account, and thus make it more general.

A complete documentation on the underlying theory will be added in a near future. For an example using this module, one can check its tests, located in ./test/lti_system.

module Make (K : Field.S) : sig ... end