What Is A Language? - Zistack/program-modeling-language GitHub Wiki

A (programming) language, for the purposes of this project, needs to be properly defined.


A variable is a set of sets of unique nodes. Every node in every set is unique.

A relation is a set of sets of edges. An edge may connect nodes or edges together.

A constraint is a set of valid values for a relation. To clarify, this would be a set of sets of sets of edges.

A relation is said to be concrete if a constraint exists for it, or abstract if one does not.

A language object is some conbination of variables, relations, and constraints. These may be defined such that there are multiple distinct kinds of language objects.

An language object has _execution_s. An execution is a set of valid values, where each value of an execution assigns a value to each relation in the language object.

A primitive is an object that either declares a variable, a relation, a constraint, or some combination thereof.

Composition rules are functions that take language objects/primitives as arguments, and produce language objects.

A language is a set of primitives and a set of composition rules.

Useful Definitions

Desides defining what a language is, there are some useful concepts that can be defined for the purpose of talking about constraints over language design.


A derived relation is a concrete relation between some interface set of relations and/or variables that is defined by the existance of some specific set of edges (the derived relation structure) between a body set of relations and/or variables. The body set is a superset of the interface set. The edges of the derived relation are defined by those sets of interface nodes or edges which are connected by instances of the derived relation structure.

Two concrete relations are said to be equivalent if there exists an isomorphism between the variables and relations related by the two relations and the relations' constraints.

A concrete relation R is said to be constructible in language L if some language object that can be produced by language L can contain a derived relation shich is equivalent to concrete relation R.