libFAUDES

Sections

Functions

Normal Sublanguages

Functions related to the notion of normality.

Given two languages L and K over a common alphabet Sigma,
and a set of observable events Sigma0  Sigma,
K is normal w.r.t (L,Sigma0) iff

Pinv0(P0(K))  L = K,

where P0 and Pinv0 denote the natural Projection from Sigma* to Sigma0* and its set-valued inverse, respectively.

The definition addresses situations were K is the closed-loop behaviour for a plant which is modelled by L and some supervisor that only observs events from Sigma0, Sigma0  Sigma_c. The projection P0(K) can be interpreted to model a supervisor with intended closed-loop behaviour K, while Pinv0(P0(K)) represents the effect the supervisor actually takes on the plant.

Example

Consider the very-simple machine example and assume that all events but beta_1 are reported to the supervisor, i.e. Sigma_o={alpha_1, alpha_2, beta_2}.

When in the case of restricted observation all controllable events are observable anyway, it is nearby to define a supervisor S0 on the alphabet Sigma0. A first candidate is the natural projection of the intended closed-loop behaviour L(S0) = P0(Closure(L(S))). The supervisor S0, however, will in adition to the events from Sigma0 at any time enable all unobservable events, i.e. beta_1. Thus, the actual closed-loop behaviour under restricted observation is given by Pinv0(L(S0)) cap L(G). If Closure(S) happened to be normal, the intended closed-loop behaviour would be achieved. However, in our example Closure(S) is not normal w.r.t L(G) and Sigma0:

Closure(S)

Pinv0(L(S0))  L(G)

Note that the candidate closed-loop at state 2 allows machine M2 to pick up a workpiece from the buffer which at that state is empty. This clearly violates the specification.

When considering the same scenario but with Sigma_o={alpha_1, beta_1, alpha_2}, i.e. beta_2 is the only unobservable event, in fact Closure(S) turns out to be normal and we have Pinv0(L(S0))  L(G) = Closure(S).

SupNorm

Computes the supremal normal sublanguage.

Signature:

SupNorm(+In+ Generator L, +In+ EventSet AObs, +In+ Generator K, +Out+ Generator GRes)
SupNorm(+In+ System GPlant, +In+ Generator GCand, +Out+ Generator GRes)

Detailed description:

SupNorm calculates the supremal sublanguage of the closed language K (prefix closure of the language marked by the specified argument K or GCand) that is normal w.r.t. the closed language L (prefix closure of the language marked by argument L or GPlant) The set of observable events may be given explicitely or is extracted from the plant generator. The function implements the Lin-Brandt-Formula from [S2]:
supnorm(K w.r.t. L) = K - Pinv0(P0(L-K))

Parameter Conditions:

Parameters have to be deterministic, result is deterministic. The resulting generator will be equipped with marking that is consistent to the plant, i.e. Lm(GRes) = L(GRes)  Lm(GPlant).

SupNormClosed

Computes the supremal normal and closed sublanguage.

Signature:

SupNormClosed(+In+ Generator L, +In+ EventSet AObs, +In+ Generator K, +Out+ Generator GRes)
SupNormClosed(+In+ System GPlant, +In+ Generator GCand, +Out+ Generator GRes)

Detailed description:

SupNormClosed calculates the supremal sublanguage of the closed language K (prefix closure of the language marked by the specified argument K or GCand) that is closed and normal w.r.t. the closed language L (prefix closure of the language marked by argument L or GPlant) and the set of observable events. The set of observable events may be given explicitely or is extracted from the plant generator. The function implements the Lin-Brandt-Formula from [S2]:
supnorm(K w.r.t. L) = K - Pinv0(P0(L-K))Sigma*

Parameter Conditions:

Parameters have to be deterministic, result is deterministic. The resulting generator will be equipped with marking that is consistent to the plant, i.e. Lm(GRes) = L(GRes)  Lm(GPlant).

IsNormal

Tests normality condition.

Signature:

IsNormal(+In+ Generator L, +In+ EventSet AObs, +In+ Generator K, +Out+ Boolean BRes)
IsNormal(+In+ System GPlant, +In+ Generator GCand, +Out+ Boolean BRes)

Detailed description:

Tests whether a language K (marked by argument K or GCand) is normal w.r.t. the language L (marked by argument L or GPlant) and the set of observable events. The latter may be given explicitely or is extracted from the plant generator.

The implementation performs the test by evaluating the defining equation of normality. This, perhaps, is slightly inefficient.

Parameter Conditions:

Arguments are required to be deterministic.

libFAUDES 2.18b --- 2010-12-17 --- plugins "example synthesis observer diagnosis hiosys iosystem multitasking timed simulator iodevice luabindings"