This document discusses applying category theory concepts to model-driven engineering. It begins with an introduction to category theory, defining categories and providing examples. It then argues that category theory can help answer questions about what models and meta-models are, as well as model transformations. The document proposes defining a category of models and discusses how this category formalizes concepts like meta-models, constraints, and model transformations using category theory structures and mappings. It concludes by noting opportunities to explore category theory concepts further in the context of model-driven engineering.
1. A category-theoretic view of model-driven
Meinte Boersma
DSL Consultancy
April 10th, 2014
A CT view of MD DSL Consultancy
2. About me
Owner/founder of DSL Consultancy
Creator of
Experienced in Xtend; Xtext, guerilla warfare...
...still learning category theory!
A CT view of MD DSL Consultancy
3. Agenda
What is Category Theory?
General introduction to CT
Why category theory for MD*?
Finding the category of models
Discussion and conclusion
A CT view of MD DSL Consultancy
4. What is category theory
Category theory is an abstraction of mathematics itself
that allows many intricate and subtle mathematical
results [...] to be stated, and proved, in a much simpler
way than without the use of categories.
(Wikipedia)
=⇒ Raising the level of abstraction!
A CT view of MD DSL Consultancy
5. Characteristics of category theory
1. capture essential complexity and separate it from the
incidental one
2. leave out unnecessary/technical details until you need them
3. lots of diagrams and ”chasing” those
A CT view of MD DSL Consultancy
6. General introduction
Definition A category C consists of:
objects, usually denoted with capitals
arrows, each having a source and a target object: S
f
−→ T
a composition operation ◦ on arrows such that for arrows f , g:
1. (identity) for every object X, an identity arrow idX exists
such that for every arrow S
f
−→ T: idT ◦ f = f ◦ idS
2. (associativity) if A
f
−→ B, B
g
−→ C and C
h
−→ D, then
h ◦ (g ◦ f ) = (h ◦ g) ◦ f
A CT view of MD DSL Consultancy
9. Examples of categories - from mathematics: Set
Description of Set:
objects: sets
arrows: S
f
−→ T are functions: f : S → T
composition: composition of functions
identity arrows: idX (x) = x ∀x ∈ X
A CT view of MD DSL Consultancy
10. Examples of categories - from mathematics: Rel
Description of Rel:
objects: sets
arrows: S
f
−→ T are binary relations: f ⊆ S × T
composition of A
f
−→ B and B
g
−→ C:
(a, c) ∈ g ◦ f ⇐⇒ (a, b) ∈ f and (b, c) ∈ g for some b ∈ B
identity arrows: idX = {(x, x) | x ∈ X}
Pub exercise: verify category laws
A CT view of MD DSL Consultancy
11. Examples of categories - from mathematics: Graph
A graph consists of
a set of nodes
a set of edges
functions (σ, τ) mapping edges to its source resp. its target
node
An arrow in Graph is a mapping of nodes and edges that respects
source and target nodes of edges.
Note: this sounds oddly familiar...
A CT view of MD DSL Consultancy
12. Examples of categories - from programming: Html
Description of Html:
objects: instances of HTMLElements
arrows: invocations of JavaScript functions that take and
return HTMLElements
composition: function composition
identity:
A CT view of MD DSL Consultancy
13. Examples of categories - from programming: Jqry
Description of Jqry:
objects: values of $(...)
arrows: invocations of members of $.fn
composition: function composition
identity:
Note: Html and Jqry look rather alike...
A CT view of MD DSL Consultancy
14. Examples of categories - summary
objects arrows composition
Set sets functions from source to target sets composition of functions
Rel sets binary relations between two sets ”connecting transitively”
Graph graphs mappings from source to target graph, re-
specting source and target nodes of edges
”following the mapping”
Html HTMLElements invocations of appropriate JS functions functional composition
Jqry $(..) invocations of members of $.fn invocation chaining
Hask Haskell types Haskell functions the . operator
A CT view of MD DSL Consultancy
16. Relations between categories
”Compare” categories with each other using . . .
Definition A functor
F : C −→ D
maps {objects | arrows} of C to {objects | arrows} of D such that
(identity) F(idS ) = idF(S) with S an object of C
(composition) F(f ◦ g) = F(f ) ◦ F(g) for arrows f , g of C
A CT view of MD DSL Consultancy
17. Examples of functors
the power set functor P : Set −→ Set
the ”graphing” functor Cat −→ Graph
monads are special kinds of functors on Hask
the ”wrapping” functor Html −→ Jqry:
A CT view of MD DSL Consultancy
18. Types of functors
functor type property
endo- C = D
covariant F(S)
F(f )
−→ F(T)
contravariant F(S)
F(f )
←− F(T)
for every arrow S
f
−→ T
A CT view of MD DSL Consultancy
19. Why category theory for MD*?
Bad reason: because the hipsters are doing it!
”Don’t you see: a monad simply is an endofunctor
arising as the composition of two adjoint functors with
two natural transformations, really!”
A CT view of MD DSL Consultancy
20. Why category theory for MD*?
To try and give answers to the following:
1. What is a model?
2. What is a meta model?
3. Model transformations
4. Discussion: semantics, meta model evolution, etc.
A CT view of MD DSL Consultancy
21. The category of models
Goal: a suitable category of models which answers our questions.
Challenge: CT assumes little ⇒ CT gives little off-the-shelf. . .
Idea: start with
Mod = (directed) graphs with (general) mappings; then: retrofit.
Note: Mod = Graph.
A CT view of MD DSL Consultancy
23. An example model - ”categorized”
nodes
edges
payloads
⇒ nodes and edges require a payload (names, . . .) ⇐ retrofit!
Arrows induce mapping of payloads through their base point.
A CT view of MD DSL Consultancy
24. Types of model arrows
What types of arrows can we think of?
model transformations
type systems
queries
is-a’s: ”going meta”
A CT view of MD DSL Consultancy
25. Arrows between models - caveats
Note:
not all {source | target} {nodes | edges} need to be mapped
each arrow is a transformation between a particular source
and target model
a model transformation that works on a class of models is a
(covariant) functor ⇐= requires some formalization
A CT view of MD DSL Consultancy
26. ”Going meta” - visualized
model pre-meta model
mappings
Note: mapping can carry extra information
A CT view of MD DSL Consultancy
27. ”Going meta” - formalized
Definition In Mod, a model M2 is pre-meta for M1 if an ”is-a”
arrow f exists that maps all source nodes and edges.
model
pre-meta model
is-a
A CT view of MD DSL Consultancy
31. Constraints
Many constraints are not expressible by pre-meta notion.
Just retrofit them to Mod where required!
Definition A constraint in M2 is a predicate function on models
M1 for which M2 is pre-meta.
A CT view of MD DSL Consultancy
32. ”Going meta” - with constraints
Simply ”store” the constraints in M2 as part of it!
Definition In Mod, a model M2 is meta for M1 if it is pre-meta
and it satisfies all constraints in M2.
A CT view of MD DSL Consultancy
33. Model transformations
Now define the sub-category
ModM2 := {M1 in Mod such that M2 is meta for M1}
Definition A model transformation is a functor
T : ModM2 −→ ModM2
that respects the constraints of M2.
Post-conference exercise: what about F(f )?
A CT view of MD DSL Consultancy
34. Uncharted territory
CT concepts untouched (by me):
duality
natural transformations
adjointness
A CT view of MD DSL Consultancy
36. Conclusion
CT provides a nice, tech-independent language for MD
Comes with its own semantics and ”API”
It still makes us work (”answers”)
CT-approach can be taken much further - see article
references
A CT view of MD DSL Consultancy
37. More information
Books:
1. Lawvere and Schanuel, Conceptual Mathematics
2. Simmons, An Introduction to Category Theory
3. Mac Lane, Categories for the Working Mathematician
Articles:
1. Diskin and Maibaum, Category Theory and Model-Driven
Engineering: From Formal Semantics to Design Patterns and
Beyond
2. Diskin and Wolter, A Diagrammatic Logic for Object-Oriented
Visual Modeling
Blogs and video lectures by John Bender
A CT view of MD DSL Consultancy