# Functions related to Regular Expressions

Regular expressions extend the boolean algebra on languages by the Kleene-closure and language concatenation operation. Additionally, functions for the generating elements are provided, i.e. full- and alphabet language.

Note. The functions in this section ignore any attributes (controllability etc.) specified for the arguments. For the results, attributes are set to the default value. This may change in a future implementation.

## LanguageConcatenate

Concatenates two languages.

##### Signature:

LanguageConcatenate(+In+ Generator G1, +In+ Generator G2, +Out+ Generator GRes)

##### Detailed description:

With the languages L1 = Lm(G1) and L2 = Lm(G2) marked by the specified generators, respectively, the result L_res = Lm(GRes) marks the concatenation

L_res = {s r| s  L1, r  L2}.

The generated closed languages are ignored.

##### Example:
 G1 G2

 Lm(GRes) = Lm(G1) LmG(2)
##### Parameter Conditions:

Arguments may be non-deterministic. The result, however, is converted to a deterministic generator. The C++ API provides an alternative function without the conversion step.

## KleeneClosure

Compute Kleene closure for given language.

##### Signature:

KleeneClosure(+InOut+ Generator G)

KleeneClosure(+In+ Generator GArg, +Out+ Generator GRes)

##### Detailed description:

This function computes the Kleene-closure L* of the specified marked language L = Lm(G):

L* = {s1 s2 ... s_n| n  N and s_i  L for all i ≤ n}  {epsilon}.

The generated language is not considered.

 G GRes
##### Parameter Conditions:

The argument may be non-deterministic. The core implementation may lead to a non-deterministic result event for deterministic arguments. The wrapper function hence converts to a guarantee for a deterministic result.

## FullLanguage

Generator with Lm(G)=Sigma*.

##### Signature:

FullLanguage(+In+ EventSet Sigma, +Out+ Generator GRes)

##### Detailed description:

For a given alphabet Sigma, construct a generator generating and marking the so called full language Sigma*, i.e. Lm(G)=L(G)=Sigma*.

## AlphabetLanguage

Generator with Lm(G)=Sigma.

##### Signature:

AlphabetLanguage(+In+ EventSet Sigma, +Out+ Generator GRes)

##### Detailed description:

Construct a generator G that marks the given alphabet as language, i.e. Lm(G) = Sigma. Furthermore, L(G) = Sigma  {epsilon}.

## EmptyStringLanguage

Generator with Lm(G)={epsilon}.

##### Signature:

EmptyStringLanguage(+In+ EventSet Sigma, +Out+ Generator GRes)

##### Detailed description:

Construct a generator G that marks and generates the language that consists of the empty string epsilon only, i.e. Lm(G) = L(G) = {epsilon}.

libFAUDES 2.32b --- 2024.03.08 --- with "synthesis-observer-diagnosis-iosystem-hiosys-multitasking-coordinationcontrol-timed-iodevice-simulator-luabindings"