*3.3. Variables, Features and Footprints*

3.3.1. Variables, Features and Footprints: Syntax

Traditionally, the construction of syntactic entities in logic, like terms, expressions and formulas, starts by declaring what variables can be used in the language of a certain logic. Often, we assume an enumerable set of variables and then any term, expression or formula is based upon a chosen finite subset of this enumerable set of variables. Moreover, variable translations can be described by maps between finite sets of variables. Generalizing this traditional approach, we announce what kind of variables we want to use in our institution.

**Definition 2** (Second parameter: Variables)**.** *As the second parameter of an Institution of Statements, we choose a subcategory* Var *of the base category* Base*. We refer to the objects in* Var *as variable declarations while the morphisms in* Var *will be called variable translations. If* Base *has initial objects, we assume that* Var *contains exactly one of them denoted by* **0***.*

This is a completely different view on variables compared to the tradition in the theory

of institutions [2], where variables generally depend on the notion of signature.

**Example 6** (FOL: Variables)**.** *Variable declarations are traditionally just finite S-sets of variables. We take* Var*FOL to be the full subcategory of* Base*FOL* = [*S* → Set] *given by all finite and disjoint S-sets X* = (*Xs* | *s* ∈ *S*) *with Xs a subset of the set* {*x*, *x*1, *x*2,..., *y*, *y*1, *y*2,...} *for all s* ∈ *S.*

**Example 7** (ALC: Variables)**.** *Officially, there are no variables in ALC. To describe ALC as a fragment of FOL we need, however, variables. As* Var*ALC, we take the subcategory of* Set *with objects all finite subsets of the set* {*x*, *x*1, *x*2,..., *y*, *y*1, *y*2,...} *and morphisms all injective maps.*

**Example 8** (mFOL: Variables)**.** *We choose as* Var*mF the full subcategory of* Set/*MmF* Base*mF* = SET/*MmF given by all finite MmF-typed sets* (*X*, *τ<sup>X</sup>* : *X* → *MmF*) *such that the pre-image τ*−<sup>1</sup> *<sup>X</sup>* (*S*) *is a subset of the set* {*xs*, *xs*1, *xs*2,..., *ys*, *ys*1, *ys*2,...} *and <sup>τ</sup>*−<sup>1</sup> *<sup>X</sup>* (*P*) = {*xp*}*.*

**Example 9** (CT: Variables)**.** *The variable declarations are* graphs of variables*, i.e., we work with two kinds of variables:* vertex variables *and* edge variables *that are connecting vertex variables. We choose* Var*CT to be the full subcategory of* Base*CT* = Graph *given by all finite graphs <sup>X</sup>* = (*XV*, *XE*,*scX*, *tgX*) *with XV a finite subset of the set* {*xv*, *xv*1, *xv*2, ... , *yv*, *yv*1, *yv*2, ...} *and XE a finite subset of the set* {*xe*, *xe*1, *xe*2, ... , *ye*, *ye*1, *ye*2, ...}*. "e" stands for edge while "v" refers to vertex.*

**Example 10** (RM: Variables)**.** *As* Var*RM, we choose the full subcategory of* Graph/*MRM* Base*RM* = GRAPH/*MRM given by all finite MRM-typed graphs* (*X*, *<sup>τ</sup><sup>X</sup>* : *<sup>X</sup>* <sup>→</sup> *MRM*) *such that the pre-image <sup>τ</sup>*−<sup>1</sup> *<sup>X</sup>* (*T*) *is a finite subset of the set* {*xt*, *xt*1, *xt*2, ... , *yt*, *yt*1, *yt*2, ...}*, <sup>τ</sup>*−<sup>1</sup> *<sup>X</sup>* (*D*) *is a finite subset of* {*xd*, *xd*1, *xd*2, ... , *yd*, *yd*1, *yd*2, ...} *and τ*−<sup>1</sup> *<sup>X</sup>* (*c*) *is a finite subset of* {*xc*, *xc*1, *xc*2,..., *yc*, *yc*1, *yc*2,...}*, respectively.*

Guided by Requirement 3 (p. 4), we introduced variables first and can utilize them now to define arities.

**Definition 3** (Third parameter: Footprint)**.** *The third parameter of an Institution of Statements is a footprint* Ξ = (Φ, *α*) *over* Var *given by a set* Φ *of feature symbols and a map α* : Φ → Var*Obj. For any feature symbol F* ∈ Φ*, the variable declaration α*(*F*) *is called the arity of F. We will often write αF for α*(*F*)*.*

**Remark 3** (Terminology: Footprint vs. signature)**.** *In most of our applications of DPF, footprints occur as meta-signatures, in the sense that each specification formalism (modeling technique) is characterized by a certain footprint. Each of the formalisms Universal Algebra, Category Theory, First-Order Logic, ER diagrams, class diagrams is characterized by a certain footprint. The sketch data model in [11] corresponds to a certain footprint and so on. For the footprint of the modeling technique* class diagrams*, we refer to [18,21].*

*Until today, we used in all our DPF papers the terms signature instead of footprint and predicate symbol instead of feature symbol (compare [13,21]). This turned out to be a source for serious misunderstandings and misleading perceptions; thus, we decided to coin new terms.*

**Remark 4** (Dependencies between features)**.** *Extending Makkai's approach [15], we worked in [13] with categories* Φ *of feature symbols, instead of just sets of feature symbols, and with arity functors α* : Φ → Var*, instead of just arity maps. Arrows between feature symbols represent dependencies between features. This allows us to reflect, already on the level of feature symbols and thus prior to arities and semantics of features that certain features depend on (are based upon) other features. As examples, one may express that both concepts pullback and pushout are based upon the concept commutative square and that the categorical concept inverse image depends on the concept monomorphism.*

*Any semantics of feature symbols then has to respect those dependencies. Dependency arrows are a tool to represent knowledge about and requirements on features prior to and independent of any kind of logic. Dependency arrows somehow make the framework of generalized sketches conceptual and structural round.*

*It may be worth mentioning that the concept of* order-sorted algebra *is somehow related to our idea of dependencies since it works with arrows between sort symbols [37].*

*In this first paper about Logics of Statements, we drop dependency arrows due to, at least, three reasons: (1) We do not want to deviate too much from the traditional first-order logic setting. (2) Dependencies trigger an additional theoretical overhead that may be not worth it at the moment. If we introduce dependencies between feature symbols, we should consequently describe, for example, to what extent and how they generate dependencies between feature expressions (introduced in*

*Section 3.4). On one side, this is technically not fully trivial, if possible at all. On the other side, such an effort has no relevance for our applications. (3) The requirements expressed by dependency arrows can be mimicked by the logical tools we are going to introduce later.*

**Example 11** (FOL: Footprint)**.** *We show, first, how an arbitrary traditional many-sorted signature* Σ = (*S*, *P*, *ar* : *P* → *S*∗) *can be transformed into a footprint* ΞΣ = (ΦΣ, *α*Σ) *and then we present a sample FOL-footprint to be used in the forthcoming parts of this example.*

*The set S of sort symbols has been already transformed into the IoS-setting by choosing the base category* [*S* → Set]*. The set* ΦΣ *of feature symbols is nothing but the set P of predicate symbols. Thus, it remains to transform each w* <sup>∈</sup> *<sup>S</sup>*<sup>∗</sup> *into a corresponding S-set X<sup>w</sup> of variables.*

*The empty sequence <sup>ε</sup>* <sup>∈</sup> *<sup>S</sup>*<sup>∗</sup> *is simply transformed into the empty S-set <sup>X</sup><sup>ε</sup>* := (<sup>∅</sup> <sup>|</sup> *<sup>s</sup>* <sup>∈</sup> *<sup>S</sup>*)*. A non-empty sequence w* = *s*1*s*<sup>2</sup> ...*sn gives rise to a list* [*x*1*: s*1, *x*2*: s*2, ... , *xn: sn*] *of variable declarations, i.e., to a canonical set* {*x*1, *x*2, ... , *xn*} *of variables, equipped with a canonical total order <sup>x</sup>*<sup>1</sup> <sup>&</sup>lt; *<sup>x</sup>*<sup>2</sup> <sup>&</sup>lt; ... <sup>&</sup>lt; *xn, together with a map from* {*x*1, *<sup>x</sup>*2, ... , *xn*} *into S. <sup>X</sup><sup>w</sup> is defined by X<sup>w</sup> <sup>s</sup>* := {*xi* | *si* = *s*} *for all s* ∈ *S. In the examples, we will use lists of variable declarations to represent S-sets of variables.*

*To complete the definition of* ΞΣ*, we simply set <sup>α</sup>*Σ(p) :<sup>=</sup> *<sup>X</sup>ar*(p) *for all* <sup>p</sup> <sup>∈</sup> ΦΣ <sup>=</sup> *P.*

*As an example for a FOL-footprint, we chose S* = {*prs*, *nat*} *with sort symbols "prs" for person and "nat" for natural number, respectively. The sample footprint* Ξ*FOL* = (Φ*FOL*, *αFOL*) *is then defined by the feature symbols* Φ*FOL* := {parent, male, age, less} *with the following S-sets as arities: αFOL*(parent) := ({*x*1, *x*2, *x*3}, ∅) *represented by* [*x*1*: prs*, *x*2*: prs*, *x*3*: prs*]*, αFOL*(male) := ({*x*}, ∅) *represented by* [*x: prs*]*, αFOL*(age) := ({*x*1}, {*x*2}) *represented by* [*x*1*: prs*, *x*2*: nat*] *and αFOL*(less) := (∅, {*x*1, *x*2}) *represented by* [*x*1*: nat*, *x*2*: nat*]*.*

**Example 12** (ALC: Footprint)**.** *A signature in ALC declares a set NC of* concept names *and a disjoint set NR of* role names*. In view of Definition 3, this means defining a footprint* Ξ*ALC* = (Φ*ALC*, *αALC*) *with* Φ*ALC* = *NC* ∪ *NR, αALC*(*F*) = {*x*} *for all F* ∈ *NC and αALC*(*F*) = {*x*1, *x*2} *for all F* ∈ *NR.*

*A signature in ALC also declares a set NO of* individual names (nominals, objects)*. In our framework, those sets of individual names are considered as* contexts *(see Definition 11).*

**Example 13** (mFOL: Footprint)**.** *An mFOL-footprint describes which one of the enumerable many formal tools n*-ary many-sorted predicates *we will have at hand. As an example, we consider an mFOL-footprint* Ξ*mF* = (Φ*mF*, *αmF*) *providing the formal tools unary many-sorted predicates, binary many-sorted predicates and tertiary many-sorted predicates, respectively.*

*We have* Φ*mF* := {un, bin, trt} *with αmF*(un)=(*X*un, *τX*un : *X*un → *MmF*) *given by X*un := {*xp*, *xs*} *and τX*un (*xp*) := *P, τX*un (*xs*) := *S. Analogously to Example 11, we represent the MmF-typed set* (*X*un, *τX*un ) *by the list* [*xp: P*, *xs: S*] *of variable declarations.* (*X*bin, *τX*bin ) *is defined by* [*xp:P*, *xs*1*: S*, *xs*2*: S*] *while* (*X*trt, *τX*trt ) *is given by* [*xp:P*, *xs*1*: S*, *xs*2*: S*, *xs*3*: S*]*, respectively. Keep in mind that, for any set M in* Set *the interpretation category* [*M* → Set] *and the slice category* Set/*M are equivalent.*

**Example 14** (CT: Footprint)**.** *Category Theory relies on a language based upon the concepts* object (vertex)*,* morphism (arrow, edge)*,* composition *and* identity*. The concept* graph *comprises already the concepts object (vertex) and morphism (arrow, edge); thus, a footprint for our diagrammatic reconstruction of the theory of small categories only needs to take care of composition and identity.*

*We do not have operations in footprints; thus, we have to formalize composition and identity by means of features (predicates). Therefore, the footprint* Ξ*CT for the formalism Category Theory declares two feature symbols* cmp *and* id*. The arities of the feature symbols in* Φ*CT* := {cmp, id} *are described in Table 1:*

**Table 1.** CT Footprint.


**Example 15** (RM: Footprint)**.** *The footprint* Ξ*RM* = (Φ*RM*, *αRM*) *declares features* Φ*RM* := {tb(n), pk, fk, tot, inj} *for the concepts* table with *n* columns*,* primary key*,* foreign key*,* not null *(total) and* unique *(injective), respectively. We discussed these concepts in Section 3.1.5 where we introduced the relational data model example. The arities of the feature symbols in* Φ*RM are MRM-typed graphs* (*G*, *τG*) *and are described in Table 2. Analogously to Example 13, we use the colon-notation "\_ : \_" to represent the typing morphisms τ<sup>G</sup>* : *G* → *MRM.*


**Table 2.** RM Footprint.

**Remark 5** (Category of footprints)**.** *We indicated the arrow from (2) to (3) in Figure 1 as* construction+choice *since we could straightforwardly define a category of footprints on* Var *while we decided to consider only one footprint. To also explore categories of footprints goes simply beyond the scope of this first paper on Logics of Statements. In Remark 20, we will, however, outline, what has to be done if we want or need to work with a category of footprints.*

## 3.3.2. Variables, Features and Footprints: Semantics

To make things not too complicated and to deviate not too far from traditional logic, we work here with the semantics-as-interpretation paradigm, also called indexed or Tarskian semantics. In contrast, we spelled out in [13] the semantics-as-instance paradigm, also called fibred semantics. To define the semantics of variables and features, we first have to decide for (potential) carriers of structures.

**Definition 4** (Fourth parameter: Carriers)**.** *As the fourth parameter of an Institution of Statements, we choose a subcategory* Carr *of* Base *of (potential) carriers of* Ξ*-structures.*

**Example 16** (FOL: Carriers)**.** *In this example, we follow the traditional approach and choose simply* Carr*FOL* :<sup>=</sup> Base*FOL* <sup>=</sup> Set*<sup>S</sup>* = [*<sup>S</sup>* <sup>→</sup> Set]*.*

**Example 17** (ALC: Carriers)**.** *ALC considers only non-empty sets as potential carriers and calls them* domains (of an interpretation)*. Thus, we take as* Carr*ALC the full subcategory of* Base*ALC* = Set *given by all non-empty sets.*

**Example 18** (mFOL: Carriers)**.** *A potential carrier of a* Ξ*mF-structure should provide a family of sets to define the semantics of sort symbols as well as a family of sets to define the semantics of* *predicate symbols. As* Carr*mF, we choose therefore the full subcategory of* Base*mF* = SET/*MmF given by all MmF-typed sets* (*C*, *τC*) *with C* ⊆ Set*Obj. Note that we consider here* Set*Obj (and thus also C) as an element in* SET*Obj and not as a subset of* SET*Obj (compare Remark 1).*

**Example 19** (CT: Carriers)**.** *We could choose only those graphs that appear as underlying graphs of small categories. We will, however, not restrict ourselves and choose, analogous to Example 16,* Carr*CT* := Base*CT* = Graph*.*

**Example 20** (RM: Carriers)**.** *Tables are sets of rows and data types are sets of data values while columns can be formalized as maps assigning to each row in a table the value in the corresponding column. As discussed in Section 3.1.5, these maps can be partial since there may be no values in some cells of a table.*

*Analogous to Example 18, we choose therefore as* Carr*RM the full subcategory of* Base*RM* = GRAPH/*MRM given by all MRM-typed graphs* (*G*, *τ<sup>G</sup>* : *G* → *MRM*) *with G a subgraph of gr*(Par)*. We consider here gr*(Par) *(and thus also G) as an element in* GRAPH*Obj and not as a subgraph of gr*(GRAPH) *(compare Remark 1). Be aware that we can have in G only maps from sets in τ*−<sup>1</sup> *<sup>G</sup>* (*T*) *to sets in <sup>τ</sup>*−<sup>1</sup> *<sup>G</sup>* (*D*) *since c is the only edge in MRM!*

The semantics of a variable declaration *X* ∈ Var*Obj* relative to a chosen carrier *U* ∈ Carr is simply the set of all **variable assignments** (keep in mind that Var Base and Carr Base):

$$\mathbb{E}\left[\|X\|\right]^{\mathrm{II}} := \mathsf{Base}(X, \mathsf{U}).\tag{1}$$

Structures for footprints are defined in full analogy to the definition of structures for signatures in traditional first-order logic.

**Definition 5** (Structures)**.** *A* Ξ*-structure* U = (*U*, Φ<sup>U</sup> ) *is given by an object U in* Carr*, the carrier of* U*, and a family* Φ<sup>U</sup> = {[[ *F* ]]<sup>U</sup> | *F* ∈ Φ} *of sets* [[ *F* ]]<sup>U</sup> ⊆ Base(*αF*, *U*) *of valid interpretations of feature symbols F in U.*

Homomorphisms are also defined in the usual way that "truth is preserved".

**Definition 6** (Homomorphisms)**.** *A homomorphism ς* : U→V *between* Ξ*-structures is given by a morphism ς* : *U* → *V in* Carr *such that ι* ∈ [[ *F* ]]<sup>U</sup> *implies ι*; *ς* ∈ [[ *F* ]]<sup>V</sup> *for all feature symbols F in* Φ *and all interpretations ι* : *αF* → *U.*

Identities of carriers define identity homomorphisms and composition of homomorphisms is inherited from composition in Carr. In such a way, we obtain a category Str(Ξ) of all available Ξ-structures. We are, however, free to choose only those structures we are interested in (see Figure 1).

**Definition 7** (Fifth parameter: Semantics)**.** *As the fifth parameter of an Institution of Statements, we choose a certain subcategory* Sem(Ξ) *of the category* Str(Ξ) *of all* Ξ*-structures.*

**Example 21** (FOL: Semantics)**.** *In accordance with the traditional approach* Sem(Ξ*FOL*) := Str(Ξ*FOL*) *comprises all* Ξ*FOL-structures* U*, given by an arbitrary S-set U, where S* = {*prs*, *nat*} *as in Example 11, together with arbitrary subsets* [[ parent ]]<sup>U</sup> <sup>⊆</sup> Set*S*(({*x*1, *<sup>x</sup>*2, *<sup>x</sup>*3}, <sup>∅</sup>), *<sup>U</sup>*)*,* [[ male ]]<sup>U</sup> <sup>⊆</sup> Set*S*(({*x*}, <sup>∅</sup>), *<sup>U</sup>*)*,* [[ age ]]<sup>U</sup> <sup>⊆</sup> Set*S*(({*x*1}, {*x*2}), *<sup>U</sup>*) *and* [[ less ]]<sup>U</sup> <sup>⊆</sup> Set*S*((∅, {*x*1, *<sup>x</sup>*2}), *<sup>U</sup>*)*, as well as all homomorphisms between those* Ξ*FOL-structures.*

**Example 22** (ALC: Semantics)**.** *Any* terminological interpretation I *in ALC includes the choice of a non-empty set* Δ<sup>I</sup> *, called* domain*, an interpretation of each* concept name *in NC as a subset of* Δ<sup>I</sup> ∼= Set({*x*}, Δ<sup>I</sup> ) *and an interpretation of each* role name *in NR as a subset of* Δ<sup>I</sup> × Δ<sup>I</sup> ∼= Set({*x*1, *x*2}, Δ<sup>I</sup> )*. Obviously, there is a one-to-one correspondence between a terminological interpretation and a* Ξ*FOL-structure in the sense of Definition 5. Homomorphisms are not considered in ALC; thus,* Sem(Ξ*ALC*) := Str(Ξ*ALC*) *is a discrete category.*

**Example 23** (mFOL: Semantics)**.** *In contrast to the Examples 21 and 22, we transform any carrier* (*U*, *τU*) *in* Carr*mF (see Example 18) into exactly one corresponding* Ξ*mF-structure* U *with:*

$$\begin{aligned} \lbrack \begin{aligned} \mathsf{un} \rbrack^{\mathsf{U}} &:= \{ \iota : (X\_{\mathsf{un}}, \tau\_{\mathsf{X}\_{\mathsf{un}}}) \to (\mathsf{U}, \tau\_{\mathsf{U}}) \mid \iota(\mathsf{x}p) \subseteq \iota(\mathsf{x}s) \} \\ \lbrack \mathsf{bin} \rbrack^{\mathsf{U}} &:= \{ \iota : (X\_{\mathsf{b}\mathsf{in}}, \tau\_{\mathsf{X}\_{\mathsf{b}\mathsf{in}}}) \to (\mathsf{U}, \tau\_{\mathsf{U}}) \mid \iota(\mathsf{x}p) \subseteq \iota(\mathsf{x}s\_{1}) \otimes \iota(\mathsf{x}s\_{2}) \} \\ \lbrack \mathsf{r}\mathsf{tr} \}^{\mathsf{U}} &:= \{ \iota : (X\_{\mathsf{t}\mathsf{r}t}, \tau\_{\mathsf{X}\_{\mathsf{t}\mathsf{r}t}}) \to (\mathsf{U}, \tau\_{\mathsf{U}}) \mid \iota(\mathsf{x}p) \subseteq \iota(\mathsf{x}s\_{1}) \otimes \iota(\mathsf{x}s\_{2}) \otimes \iota(\mathsf{x}s\_{3}) \} \end{aligned} $$

Str(Ξ*mF*) *is given by all these* Ξ*mF-structures and all homomorphims between them according to Definition 6. Note that the homomorphisms in* Str(Ξ*mF*) *resemble the idea of functors that preserve finite products and monomorphisms (inclusions).*

*To cover the traditional approach that a predicate in a first-order structure can be an arbitrary subset of a corresponding Cartesian product of sorts (compare Example 21), we choose as* Sem(Ξ*mF*) *the full subcategory of* Str(Ξ*mF*) *given by all* Ξ*mF-structures* U = ((*U*, *τU*), Φ<sup>U</sup> *mF*) *such that τ*−<sup>1</sup> *<sup>U</sup>* (*P*) *is the union of all power sets* ℘(*A*)*,* ℘(*A* ⊗ *B*)*,* ℘(*A* ⊗ *B* ⊗ *C*) *with A, B, C ranging over all the sets in τ*−<sup>1</sup> *<sup>U</sup>* (*S*)*.*

**Example 24** (Category Theory: Semantics)**.** *Analogously to Example 21,* Sem(Ξ*CT*) := Str(Ξ*CT*) *comprises all* Ξ*CT-structures* U = (*U*, Φ<sup>U</sup> *CT*) *given by an arbitrary small graph U together with arbitrary subsets* [[ id ]]<sup>U</sup> ⊆ Graph(*αCT*(id), *U*)*,* [[ cmp ]]<sup>U</sup> ⊆ Graph(*αCT*(cmp), *U*)*,* [[ mon ]]<sup>U</sup> ⊆ Graph(*αCT*(mon), *U*) *and* [[ fnl ]]<sup>U</sup> ⊆ Graph(*αCT*(fnl), *U*)*. That is, we also include structures like categories without identities, categories with partial composition and so on. Moreover,* Sem(Ξ*CT*) *includes all homomorphisms between those* Ξ*CT-structures.*

**Example 25** (RM: Semantics)**.** *Analogous to Example 23, we transform any carrier* (*U*, *τU*) *in* Carr*RM into exactly one corresponding* Ξ*RM-structure* U*. We take, however, into account that tables do have only finitely many rows:*

[[ tb(n) ]]<sup>U</sup> *is the set of all MRM-typed graph homomorphisms ι* : *αRM*(tb(n)) → (*U*, *τU*) *such that <sup>ι</sup>*(*xt*) *is a finite (!) subset of p*(*ι*(*xdi*) <sup>|</sup> <sup>1</sup> <sup>≤</sup> *<sup>i</sup>* <sup>≤</sup> *<sup>n</sup>*) *and the partial maps ι*(*xci*) : *ι*(*xt*) −→◦ *ι*(*xdi*) *are exactly the corresponding restricted projections.*

*Reflecting the usual definition of foreign keys, we define* [[ fk ]]<sup>U</sup> *as the set of all MRM-typed graph homomorphisms ι* : *αRM*(fk) → (*U*, *τU*) *such that ι*(*xc*1)(*ι*(*xt*1)) ⊆ *ι*(*xc*2)(*ι*(*xt*2))*, i.e., each value in row xc*<sup>1</sup> *in table xt*<sup>1</sup> *has to appear in row xc*<sup>2</sup> *in table xt*2*.*

[[ tot ]]<sup>U</sup> *is the set of all ι* : *αRM*(tot) → (*U*, *τU*) *such that ι*(*xc*) : *ι*(*xt*) −→◦ *ι*(*xd*) *is total.* [[ inj ]]U *comprises, correspondingly, all cases where ι*(*xc*) *is injective and* [[ pk ]]U *all cases where ι*(*xc*) *is as well total as injective.*

*As* Sem(Ξ*RM*)*, we can choose the full subcategory of* Str(Ξ*RM*) *given by all* Ξ*RM-structures* U = ((*U*, *τU*), Φ<sup>U</sup> *RM*) *such that <sup>τ</sup>*−<sup>1</sup> *<sup>U</sup>* (*T*) *is the union of all power sets* ℘*fin*( *p*(*Ai* <sup>|</sup> <sup>1</sup> <sup>≤</sup> *<sup>i</sup>* <sup>≤</sup> *<sup>n</sup>*) *with* <sup>1</sup> <sup>≤</sup> *<sup>n</sup> and the Ai's ranging over all the sets in <sup>τ</sup>*−<sup>1</sup> *<sup>U</sup>* (*D*)*. We could require, in addition, that the sets in τ*−<sup>1</sup> *<sup>U</sup>* (*D*) *are restricted to those data types that appear in a certain version of SQL, for example.*

#### *3.4. First-Order Feature Expressions*

3.4.1. Syntax of Feature Expressions

By a feature expression, we mean something like a "formula with free variables" in traditional FOL. However, we do not consider them as formulas, but rather as derived anonymous features. For us, a formula is, semantically seen, the subject of being "valid or not valid" in a given structure, while the semantics of a feature expression, with respect to a given structure, is the set of all its solutions, i.e., the set of all valid interpretations of the derived feature in this structure. We experience this perspective as the most adequate one when formalizing and working with constraints in Model Driven Software Engineering. Sets of solutions have also been utilized to define the validity of conditional existence equations in [7,9], for example.

**Definition 8** (Feature expressions: Syntax)**.** *For a footprint* Ξ = (Φ, *α*) *over* Var *we define inductively and in parallel a family* FE(Ξ) *of sets* FE(Ξ, *X*) *of (first-order) feature* Ξ*-expressions Ex on X, X Ex in symbols, where X varies over all the objects in* Var*:*


**Remark 6** (Notation for expressions)**.** *In traditional FOL, X and Y are sets of variables and, instead of arbitrary maps ϕ* : *X* → *Y, only inclusion maps ϕ* = *inX*,*<sup>Y</sup>* : *X* → *Y are considered. Moreover, only the quantified variables Y* \ *X are recorded while Y has to be (re)constructed as the union X* ∪ (*Y* \ *X*)*. In other words, our Y lists all (!) variables that are allowed to appear as* free variables *in Ex! We record the whole Y for three reasons: (1) Already in* Graph *(not to talk about arbitrary presheaf topoi), we do not have complements; (2) We quantify actually over morphisms with source Y when we define the semantics of quantifications (compare Definition 10); (3) In contrast to traditional FOL, ϕ* : *X* → *Y is allowed to be non-monic.*

*We allow non-monic morphims ϕ* : *X* → *Y to express identifications. In such a way, we can survive, for the moment, without explicit equations even in cases where* Var *is a subcategory of a set-based category. We illustrate this mechanism in the Examples 26 and 29.*

*If* Var *is a subcategory of a set-based category, like* Set*,* [*S* → Set]*,* Set/*MmF,* Graph *or* Graph/*MRM, for example, variable declarations X are constituted by single entities; thus, we can talk about individual "variables". Moreover, inclusions of sets give us corresponding* inclusion morphisms *at hand. In case, ϕ* = *inX*,*<sup>Y</sup>* : *X* → *Y is such an inclusion morphism we will drop ϕ (see Examples 26, 28 and 29).*

*If ϕ* : *X* → *Y is an isomorphism, quantification is obsolete; thus, we excluded those cases.*

**Remark 7** (Everything and Void)**.** *For the definition of sketch conditions in Section 6, we need another pair of symbols for "true" and "false"; thus, we decided to use for feature expressions the symbols and* ⊥*, respectively.*

*We consider and* ⊥ *not as* logical constants *but as* special feature symbols*, inbuilt in any Institution of Statements (analogously to the equation symbol in Universal Algebra).*

*To make this statement fully precise, we have to assume that* Base*, and thus also* Var*, has an initial object* **0***.* **0** *is then the arity of and* ⊥*, while the fixed semantics for any carrier U is given by the two subsets of the singleton* Base(**0**, *<sup>U</sup>*) = {!*<sup>U</sup>* : **<sup>0</sup>** <sup>→</sup> *<sup>U</sup>*}*, namely* [[ <sup>⊥</sup> ]]*<sup>U</sup>* <sup>=</sup> <sup>∅</sup> *and* [[ ]]*<sup>U</sup>* <sup>=</sup> {!*U*}*. Consequently, we could use then the same notation as for atomic expressions, namely X* (!*X*) *and X* ⊥(!*X*) *where* !*<sup>X</sup>* : **0** → *X is the unique initial morphism into X.*

**Remark 8** (Closed expressions: Syntax)**.** *If* Base *has an initial object* **0***, feature expressions of the form* **0** *Ex will be called closed expressions. Note that quantification will generate closed expressions only in case X* = **0** *where ϕ* = !*<sup>Y</sup>* : **0** → *Y is the only choice for ϕ, in this case.*

**Example 26** (FOL: Expressions)**.** *We intend to illustrate that and how traditional first-order formulas appear in our framework. First, we consider only those cases where the morphism ϕ in quantifications is an inclusion morphisms and will be therefore dropped.*

*In Example 11, we proposed to represent finite S-sorted sets by lists of variable declarations. The arity αFOL*(parent) := ({*x*1, *x*2, *x*3}, ∅) *for the feature symbol* parent ∈ Φ*FOL, for example, is represented by* [*x*1*: prs*, *x*2*: prs*, *x*3*: prs*]*. Pursuing the idea to consider a tuple as a convenient notation for an "associative array", we can denote the atomic expression* parent(*β*)*, with β* : *αFOL*(parent) → *Y an* {*prs*, *nat*}*-map, simply as* parent(*β*(*x*1), *β*(*x*2), *β*(*x*3))*.*

*Relying on this notational convention, we obtain, for example, the closed* Ξ*FOL-expression* **0** ∀([*x*<sup>1</sup> : *prs*, *x*<sup>2</sup> : *prs*, *x*<sup>3</sup> : *prs*, *y*<sup>1</sup> : *nat*, *y*<sup>2</sup> : *nat*] :

((parent(*x*1, *x*2, *x*3) ∧ age(*x*1, *y*1)) ∧ age(*x*2, *y*2)) −→ less(*y*1, *y*2) ) *(with* **0** *the empty S-set) expressing that a child is always younger than a parent.*

*Our main point, however, is to consider feature expressions as* derived features *enabling us to denote properties in an anonymous way. The following feature* Ξ*FOL-expression younger, for example, gives us the property* younger than *at hand by hiding the exact age of a person:*

[*y* : *prs*, *x* : *nat*] ∃([*y* : *prs*, *x* : *nat*, *x*<sup>1</sup> : *nat*] : (less(*x*, *x*1) ∧ age(*y*, *x*1)))

*The next feature* Ξ*FOL-expression sbl provides the property* being a sibling of someone*:*

$$\begin{array}{c} \left[ y : prs \right] \rhd \exists \left( \left[ y : prs, \mathbf{x}\_1 : prs, \mathbf{x}\_2 : prs, \mathbf{x}\_3 : prs \right] : \\ \mathbf{parent}(y, \mathbf{x}\_2, \mathbf{x}\_3) \land \mathbf{parent}(\mathbf{x}\_1, \mathbf{x}\_2, \mathbf{x}\_3) \land \neg \exists \left( \left. \mathbf{p}, \left[ \mathbf{x} : prs, \mathbf{x}\_2 : prs, \mathbf{x}\_3 : prs \right] : \top \right) \right| \right) \right) \end{array}$$

*with ϕ* : [*y* : *prs*, *x*<sup>1</sup> : *prs*, *x*<sup>2</sup> : *prs*, *x*<sup>3</sup> : *prs*] → [*x* : *prs*, *x*<sup>2</sup> : *prs*, *x*<sup>3</sup> : *prs*] *defined by the assignments y*, *x*<sup>1</sup> → *x*; *x*<sup>2</sup> → *x*2; *x*<sup>3</sup> → *x*3*. Note that the* Ξ*FOL-expression* ¬∃(*ϕ*, [*x* : *prs*, *x*<sup>2</sup> : *prs*, *x*<sup>3</sup> : *prs*] : ) *on* [*y* : *prs*, *x*<sup>1</sup> : *prs*, *x*<sup>2</sup> : *prs*, *x*<sup>3</sup> : *prs*] *encodes the inequality* ¬(*y* = *x*1)*.*

*For convenience, we could introduce an auxiliary feature symbol* sibling *with arity* [*y* : *prs*] *and use* sibling(*y*) *as a shorthand (macro) for this derived feature expression. The conjunction* (male(*y*) ∧ sibling(*y*)) *would then represent a unary property* being brother of someone*. To ensure that then any feature expression X Ex, containing the auxiliary feature symbol* sibling*, can be expanded into an equivalent feature expression X Ex , containing only the original feature symbols* male *and* parent*, we need a corresponding* substitution mechanism*.*

**Remark 9** (Substitution)**.** *Fortunately, we do not need substitution mechanisms to define Institutions of Statements and to utilize them for specifications purposes. We need, essentially, only a category as we show and demonstrate it in this paper. To develop, however, fully fledged and practical Logics of Statements and, especially, corresponding deduction calculi, we will need appropriate substitution mechanisms.*

*An exhaustive and systematic study on what additional categorical infrastructure we have to presuppose to have handy substitution mechanisms at hand is out of range for this paper. In Appendix A, we present, nevertheless, some first observations, definitions and constructions.*

**Example 27** (ALC: Expressions)**.** *ALC focuses on* derived concepts*, i.e., in our view, on feature expressions with X a singleton. To describe, however, all derived concepts as feature expressions, we have to use arbitrary finite sets of variables and inclusions between them. We outline the standard encoding of ALC in FOL. Using our notational conventions, the ALC construct "universal restriction* ∀R.C *for any role* R ∈ *NR, any (derived) concept* C*", can be described as follows: For any role* R *in NR, any expression* {*y*} C *and any variables x*1, *x*2*, not appearing in* C*, we have:* {*x*1} ∀({*x*1, *x*2} : R(*x*1, *x*2) → C*ψ*(*x*2)) *where ψ* : {*y*}→{*x*1, *x*2} *is given by ψ*(*y*) = *x*<sup>2</sup> *and the expression* {*x*1, *x*2} C*ψ*(*x*2) *is obtained by substituting each occurrence of y in* C *by x*<sup>2</sup> *and by extending each variable declaration Y in* C *by the "fresh variable" x*<sup>1</sup> *(compare Appendix A). Analogously, the ALC construct "the existential restriction* ∃R.C *of a concept* C *by a role* R ∈ *NR" can be described by existential quantification: For any role* R *in NR, any expression* {*y*} C *and any variables x*1, *x*2*, not appearing in* C*, we have:* {*x*1} ∃({*x*1, *x*2} : R(*x*1, *x*2) ∧ C*ψ*(*x*2))*.*

**Example 28** (mFOL: Expressions)**.** *This is an example where we do not need the full first-order power. Actually, we only need atomic feature* Ξ*mF-expressions to state that a set is the subset of a unary, binary or tertiary product of other sets.*

**Example 29** (CT: Expressions)**.** *To support the shift of paradigm from string-based to diagrammatic logic was one of our main motivations to develop our framework. Therefore, we will spend a bit more space and put some more effort on this example.*

*Representation and visualization of graph homomorphisms: For a finite graph A, we can represent and visualize a graph homomorphism ϕ* : *A* → *B by means of the corresponding* graph of assignments *A<sup>ϕ</sup>* = (*A<sup>ϕ</sup> <sup>V</sup>*, *<sup>A</sup><sup>ϕ</sup> E*,*scA<sup>ϕ</sup>* , *tgA<sup>ϕ</sup>* ) *with A<sup>ϕ</sup> <sup>V</sup>* := {(*v*, *ϕV*(*v*)) | *v* ∈ *AV*}*, Aϕ <sup>E</sup>* :<sup>=</sup> {(*e*, *<sup>ϕ</sup>E*(*e*)) <sup>|</sup> *<sup>e</sup>* <sup>∈</sup> *AE*} *where scA<sup>ϕ</sup> and tgA<sup>ϕ</sup> are defined for all e* ∈ *AE by scA<sup>ϕ</sup>* (*e*, *<sup>ϕ</sup>E*(*e*)) = (*scA*(*e*), *<sup>ϕ</sup>V*(*scA*(*e*))) *and tgA<sup>ϕ</sup>* (*e*, *ϕE*(*e*)) = (*tgA*(*e*), *ϕV*(*tgA*(*e*)))*, respectively. The graphs A and A<sup>ϕ</sup> are isomorphic by construction. Note that we actually simply lift the idea of "tuples as associative arrays" to graphs instead of sets of indexes.*

*We consider the graph Y, visualized below on the left. For the graph morphism ϕ* : *α*(cmp) → *Y, defined by the assignments xv*<sup>1</sup> → *yv*3*, xv*<sup>2</sup> → *yv*2*, xv*<sup>3</sup> → *yv*4*, xe*<sup>1</sup> → *ye*5*, xe*<sup>2</sup> → *ye*4*, xe*<sup>3</sup> → *ye*3*, the corresponding graph of assignments <sup>α</sup>*(cmp)*<sup>ϕ</sup> is visualized below in the middle. In many cases, we can fortunately use for α*(cmp)*<sup>ϕ</sup> the* shorthand graph*, on the right, without causing unambiguities.*

*As proposed in [3], we can also work with a sequential representation of the shorthand graph (compare also Example 26): We can represent finite graphs by a list of edges plus a list of vertexes, respectively. Pursuing the idea of* tuples as associative arrays*, a graph homomorphism ϕ*: *A* → *B is then denoted by a list of image edges and a list of image vertexes in graph B.*

*In such a way, we can visualize the atomic* Ξ*CT-expression* cmp(*ϕ*) *by the graph above and represent it also by the string* cmp(*ye*5, *ye*4, *ye*3; *yv*3, *yv*2, *yv*4)*. Since α*(cmp) *has no isolated vertexes, ϕ* : *α*(cmp) → *Y is uniquely determined by the edge-assignments; thus, we could even use the shorthand notation* cmp(*ye*5, *ye*4, *ye*3) *instead.*

Ξ*CT-Expressions: The* local *property* composition is defined for a certain pair of edges *can be formalized by the following feature* Ξ*CT-expression:*

*Universal quantification transforms this property into a* general *property* composition is always defined *formalized by the following feature* Ξ*CT-expression, where* **0** *is the empty graph:*

*The general property* composition is always unique *is given by the expression guc:*

$$\operatorname{guc} = \mathbf{0} \rhd \begin{pmatrix} \operatorname{xv}\_{2} & \operatorname{x} \left( \operatorname{xv}\_{2} \end{pmatrix}\_{\operatorname{xc}\_{1}} \begin{pmatrix} \operatorname{xv}\_{2} & \operatorname{xv}\_{2} \end{pmatrix}\_{\operatorname{xc}\_{1}} \begin{pmatrix} \operatorname{xv}\_{2} & \operatorname{xv}\_{2} \end{pmatrix}\_{\operatorname{xc}\_{1}} \begin{pmatrix} \operatorname{xv}\_{2} & \operatorname{xv}\_{2} \end{pmatrix}\_{\operatorname{xc}\_{1}} \\\operatorname{xc}\_{1} \xrightarrow{\operatorname{xc}\_{3}} \operatorname{xc}\_{3} \begin{pmatrix} \operatorname{xv}\_{3} & \operatorname{xv}\_{3} \end{pmatrix}\_{\operatorname{xc}\_{1}} \begin{pmatrix} \operatorname{xv}\_{2} & \operatorname{xv}\_{2} \end{pmatrix}\_{\operatorname{xc}\_{1}} \begin{pmatrix} \operatorname{xv}\_{2} & \operatorname{xv}\_{2} \end{pmatrix}\_{\operatorname{xc}\_{1}} \\\operatorname{xc}\_{1} \xrightarrow{\operatorname{xc}\_{2}} \operatorname{xc}\_{3} \begin{pmatrix} \operatorname{xv}\_{2} & \operatorname{xv}\_{2} \end{pmatrix}\_{\operatorname{xc}\_{1}} \begin{pmatrix} \operatorname{xv}\_{2} & \operatorname{xv}\_{2} \end{pmatrix}\_{\operatorname{xc}\_{1}} \begin{pmatrix} \operatorname{xv}\_{2} & \operatorname{xv}\_{2} \end{pmatrix}\_{\operatorname{xc}\_{1}} \end{pmatrix}\_{\operatorname{xc}\_{2}}$$

*where ϕ simply maps xe*<sup>3</sup> *and xe*<sup>4</sup> *to xe. Analogously, we can also represent the other axioms of categories–existence and uniqueness of identity morphisms, both identity laws and the associativity law–by means of feature* Ξ*CT-expressions. In addition, feature expressions are a handy tool to hide* auxiliary items *in diagrammatic specifications. The property* commutative square*, for example, is given by the feature* Ξ*CT-expression csq, where we hide the diagonal:*

$$\begin{array}{c|c|c|c|c|c} \text{xs} & \text{x}\mathbf{v}\_{2} & \text{x}\mathbf{v}\_{4} & \text{x} & \text{x}\mathbf{v}\_{1} & \text{x} & \text{x} & \text{x} & \text{x} \\ \text{x}\mathbf{v}\_{1} & \text{x}\mathbf{v}\_{2} & \text{x}\mathbf{v}\_{3} & \text{x}\mathbf{v}\_{1} & \text{x}\mathbf{v}\_{2} & \text{x}\mathbf{v}\_{3} & \text{x}\mathbf{v}\_{1} & \text{x}\mathbf{v}\_{2} & \text{x} \\ \text{x}\mathbf{v}\_{1} & \text{x}\mathbf{v}\_{2} & \text{x}\mathbf{v}\_{3} & \text{x}\mathbf{v}\_{4} & \text{x}\mathbf{v}\_{5} & \text{x}\mathbf{v}\_{5} & \text{x}\mathbf{v}\_{6} & \text{x}\mathbf{v}\_{7} \end{array}$$

*That concepts and constructions are defined by universal properties is the crucial characteristic of Category Theory as a modeling technique. The concept* monomorphism*, for example, is defined by the feature* Ξ*CT-expression mon:*

*mon* = *xv*<sup>1</sup> *xe xv*<sup>2</sup> ∀( *xv*<sup>1</sup> *xe xv*<sup>3</sup> *xe*<sup>3</sup> *xe*<sup>2</sup> *xe*<sup>1</sup> *xv*<sup>2</sup> : *xv*<sup>1</sup> *xe* cmp *xv*<sup>3</sup> *xe*<sup>3</sup> *xe*<sup>1</sup> *xv*<sup>2</sup> ∧ *xv*<sup>1</sup> *xe* cmp *xv*<sup>3</sup> *xe*<sup>3</sup> *xe*<sup>2</sup> *xv*<sup>2</sup> → ∃(*ϕ*, *xv*<sup>1</sup> *xe xv*<sup>3</sup> *xe*<sup>3</sup> *xe*<sup>4</sup> *xv*<sup>2</sup> : ))

*where ϕ maps xe*<sup>1</sup> *and xe*<sup>2</sup> *to xe*4*. In most cases, however, a universal property is the conjunction of a universally quantified existence assertion and a universally quantified uniqueness assertion (see Remark 10). The concept* final object*, for example, is defined by the feature* Ξ*CT-expression f nl where ϕ maps xe*<sup>1</sup> *and xe*<sup>2</sup> *to xe:*

$$f n l = x v \rhd \forall (x v\_1 \ x v : \exists (x v\_1 \xrightarrow{x c} x v : \top)) \land \forall (x v\_1 \xrightarrow{x c\_1} x v : \exists (q \, \_x x v\_1 \xrightarrow{x c} x v : \top))$$

*In case, we want to work with an explicit property* two parallel morphisms are equal*, we are free to utilize the* Ξ*CT-expression* [=] *where ϕ maps xe*<sup>1</sup> *and xe*<sup>2</sup> *to xe:*

$$\mathbb{F}[=] = \begin{array}{c} \raisebox{0.0pt}{ $\times$ }v\_1 \xleftarrow{\times v\_1} \raisebox{0.0pt}{ $\times$ }v\_2 \end{array} \quad \rhd \quad \exists \left( \begin{matrix} \varphi\_1 \end{matrix} \raisebox{0.0pt}{ $\times$ }v\_1 \xrightarrow{\times} \raisebox{0.0pt}{ $\times$ }v\_2 \ : \top \end{array} \right)$$

**Remark 10** (Limits and Colimits)**.** *The fact that the universal properties in Category Theory do have a uniform and relatively simple logical structure shaped the theory of generalized sketches in [15]. The main ingredients of the definition of (co)limits are categorical diagrams, i.e., graph homomorphisms, thus we can beneficially use feature* Ξ*CT-expressions to characterize the logical structure of the concept (co)limit.*

*The universal property, defining a finite (co)limit, is a conjunction of two assertions–existence of mediators and uniqueness of mediators. We can express those assertions by feature* Ξ*CT-expressions with the following structure (compare the definition of the concept final object in Example 29):* →

$$\begin{array}{c} \mathsf{exist}\_{I} := \mathsf{C}\_{I} \rhd \forall (\mathsf{C}\_{I} + \mathsf{C}\_{I}' : \mathrm{Ex}\_{1} \longrightarrow \exists (\mathsf{C}\_{I} + \mathsf{C}\_{I}' : \mathrm{Ex}\_{2}))\\ \mathsf{unique}\_{I} := \mathsf{C}\_{I} \rhd \forall (\mathsf{C}\_{I} + \mathsf{C}\_{I}' : \mathrm{Ex}\_{3} \longrightarrow \exists (\mathsf{q} , \mathsf{C}\_{I} + \mathsf{C}\_{I}' : \top)) \end{array}$$

*I is the shape graph of the (co)limit, i.e., the empty graph in the case of final objects. CI adds to I the shape of a (co)cone with base I while CI* + *C <sup>I</sup> extends CI with the shape of a second (co)cone with base I. Ex*<sup>1</sup> *is the conjunction of all atomic* cmp*-expressions on CI* + *C <sup>I</sup> turning both (co)cones into commutative ones. CI* → + *C <sup>I</sup> extends CI* + *C <sup>I</sup> by a single mediator while Ex*<sup>2</sup> *is the conjunction of all atomic* cmp*-expressions on CI* → + *C <sup>I</sup> expressing the commutativity requirements for the mediator. CI* ⇒ + *C <sup>I</sup> extends CI* + *C <sup>I</sup> by two parallel mediators and Ex*<sup>3</sup> *is the conjunction of all atomic* cmp*-expressions on CI* ⇒ + *C <sup>I</sup> expressing the commutativity requirements for both mediators. ϕ* : *CI* ⇒ + *C <sup>I</sup>* −→ *CI* → + *C <sup>I</sup> simply identifies the two mediators in CI* ⇒ + *C I.*

**Example 30** (RM: Expressions)**.** *To formalize declarations of tables and data base schemes, respectively, we need only atomic feature* Ξ*RM-expressions; thus, we consider in this example only atomic* Ξ*RM-expressions. To deal also with so-called* business rules*, we would need, however, the full spectrum of first-order* Ξ*RM-expressions.*

As seen in the examples, there are cases where we need only a restricted selection of first-order feature expressions. The freedom to select only the feature expressions we are interested in establishes a new parameter (see Figure 1).

**Definition 9** (Sixth parameter: Choice of expressions)**.** *As the sixth parameter of an Institution of Statements, we choose an* Var*Obj-indexed family* XE(Ξ) *of subsets* XE(Ξ, *X*) ⊆ FE(Ξ, *X*) *of first-order* Ξ*-expressions on X* ∈ Var*Obj.*

Despite the fact that the family FE(Ξ, *X*), *X* ∈ Var*Obj* of sets of first-order feature expressions is defined by mutual induction, there is no explicit relationship between the different sets FE(Ξ, *X*) since we do not base the definition of our framework on translation maps induced by variables translations, i.e., morphisms in Var (see Definition A1 in Appendix A). Therefore, the choice of XE(Ξ, *X*) for a certain *X* can be made independently from all the other choices! However, if we also incorporate later translation maps, it will be reasonable to require that the choices of the different XE(Ξ, *X*) are compatible with translation maps!

What are natural choices? We could simply choose all first-order feature expressions, i.e., XE(Ξ, *X*) = FE(Ξ, *X*) for all *X* ∈ Var*Obj*, as we will do it in the FOL-example as well as in the CT-example. The other extreme case is to forget about "first-order" and to restrict ourselves to atomic feature expressions. This we have done in [13] and in DPF [18,21] since first-order feature expressions have not been available. For the mFOL-example and the RM-example, it is sufficient to use atomic expressions only.

Besides these two extreme cases, we could, for example, exclude negation or we could choose a minimal set of logical connectives and so on. In the ALC-example, we choose only the first-order feature expressions necessary to encode ALC in first-order logic (compare Example 27).

If Base has an initial object, we could restrict ourselves to closed expressions only (see Remark 8). In this case, we are back to traditional institutions since we do not need contexts to utilize closed formulas for specification purposes. The definition of closed formulas and of the satisfaction relation for closed formulas goes, however, always via open formulas and therefore any deduction calculus for closed formulas is based on a manipulation of open formulas. In other words: We are convinced that the concept of a context, defined in Definition 11, is relevant and beneficial for any logic beyond propositional logic even for traditional first-order predicate logic!
