Quick
index
main
eev
eepitch
maths
angg
blogme
dednat6
littlelangs
PURO
(C2,C3,C4,
 λ,ES,
 GA,MD,
 Caepro,
 textos,
 Chapa 1)

emacs
lua
(la)tex
maxima
 qdraw
git
lean4
agda
forth
squeak
icon
tcl
tikz
fvwm
debian
irc
contact

Sheaves for children

1. Sheaves for Children

Category Theory     <->  lambda calculus
  Topos Theory
    Sheaves
2. Why?

Category theory fascinates many people, but is usually done in a level
that is too abstract...

At the same time, that level of abstraction is exactly what is needed
to make lots of proofs be _almost_ automatic: _proving_ something in
CT means _constructing_ something, and all ``natural'' constructions
are equivalent. More or less like this:

  Let A and B be (arbitrary) sets. Then there is an ``obvious''
  function flip:A×B->B×A.

This idea can be formalized in (typed, polymorphic) lambda-calculus -
because lambda-calculus is made for expressing computations. Roughly,
we have this parallel:

  lambda-calculus:
    computations
    lambda-terms

  categories:
    constructions
    diagrams
3. Why? (2)

The new Girl from Ipanema

2012: 4-month long strike involving almost all federal universities in
Brazil

2013: many protests in Brazil, with many demands

Public education being dismantled.

Clear split between ``research universities'' and ``teaching
colleges''

Most texts about CT are for specialists in research universities...

Category theory should be more accessible.

To whom?...

Non-specialists (in research universities)
Grad students (in research universities)
Undergrads (in research universities)
Non-specialists (in conferences - where we have to be quick)
Undergrads (e.g., in CompSci - in teaching colleges)
(``Children'')
4. ZSets

Take a finite, non-empty subset of Nē;
translate it lowerleftwards as most as possible in Nē,
until you get something some touches both axes.
Subsets of Nē obtained in this way are said to be
"well-positioned", and we call them _ZSets_.

We can use a positional notation with bullets
to denote our favourite ZSets (unambiguously!)...

  V
  Lambda
  Kite
  House
5. ZDAGs

An arrow between points of Nē that goes one unit down
and 0/1/-1 units horizontally is called a _black pawn's move_.

Take a ZSet, D, and draw all possible black pawns moves
between its points; that gives us a set of arrows BPM(D),
that turns D, a ZSet, into a directed, acyclical, graph
in a canonical way.

Notation (note the change of font):
  D is a ZSet,
  bbD = (D, BPM(D)) is a _ZDAG_.

Example: K and bbK.
6. Closure and essentiality

We usually prefer transitive and reflexive relations.

If (A,R) is a graph,
then (A,R*) is its transitive-reflexive closure.

The operation R |-> R^* is well-known.
Now look for the smallest set of arrows, R^-,
such that (R^-)^* = R^*.

Example: bbK <==> bbK*

Fact: this generalizes to _any_ ZSet -
on ZSets/ZDAGs the dual operation to "*" is well defined!
For any ZSet D, (D, BPM(D)) is canonical in another sense -
the set BPM(D) has only the arrows that are "essential" to
generate bbD = (D, BPM(D)^*).

Duals of closure operations are usually _partial_ functions...

Magic fact: in the world of ZSets and ZDAGs _many_ closure
operations - many more that expected - have duals!

_Some people hate this_ - they seem to believe that a family
of particular cases in which some bonus properties hold
is useless for understanding the general case...

_They are wrong._
7. Truth-values

A function from a ZSet D to {0,1} is a _modal truth-value_.

The positional notation gives us a way to write modal truth-values
very compactly, and the points on a ZSet have a natural order -
the "reading order", in which we read them line by line,
left to right in each line.
This gives us a way to _read aloud_ modal truth-values.
Example:

    1           0
   2 3         0 1
    4           1
    5           0

  reading      P:K->{0,1}
  order on K   "0,0,1,1,0"

Now consider that each 1 is covered with black paint.
Then Kite 00110 is not _stable_, because the paint on position 4
may flow into the 0 of position 5.

_Stable_ modal truth-values are called
_intuitionistic truth-values_.
8. Priming

For any ZDAG D, write Omega(D) (supset Pts(D)) for the set of all
intuitionistic truth-values on D.

Example: Omega(V) = {...}
Diagram:

             1 1                (1,3)
              1                 /   \
           /     \             /     \
          v       v           v       v
      1 0           0 1	  (0,2)       (2,2)
       1	     1	      \       /
          \       /	       \     /
	   v     v	       	v   v
	     0 0                (1,1)
	      1                   |
              |                   |
              v                   v
             0 0                (1,0)
              0

   (Omega(V), supseteq) iso (K, BPM(K)) = V'

Some Omega(D)s are (isomorphic to) ZDAGs!
Which ones?
9. Priming: theorems

For each ZDAG bbD, let catD be bbD^* seen as a category.
We say that bbC subset bbD when there is a
proper inclusion catC `-> catD.
We say that bbD is 3-thin when 3 notsubseq bbD.
We say that bbD is square-thin when square notsubseq bbD.
We say that bbD is thin when it is both 3-thin and square-thin.
Fact: is bbD is 3-thin then Omega(D) is (iso to) a ZDAG.
Fact: is bbD is thin then Omega(D) is (iso to) a ZDAG.

Fact: every D' = (Omega(D), supseteq) - whether planar or not -
is a Heyting algebra - i.e., we can interpret T, F, and, or, imp,
not on it.

So: priming gives us LOTS of Heyting algebras.
10. Modal logic

On any ZDAG D the directed graph bbD^* = (D, BPM(D)^*)
is a Kripke frame, and Pts(D) is a model of S4;
also, Omega(D) is a Heyting algebra, and a model of
IPL (intuitionistic propositional logic); the Tarski
translation holds, with these definitions (where "M"
means the "modal" operation, and "I" the "intuitionistic"
operation): if P,Q in Omega(D), then

  T_I = T_M
  F_I = F_M
  P and_I Q = P and_M Q
  P or_I Q  = P or_M Q
  P imp_I Q = nec (P imp_M Q)
  not_I P = nec (not_M P)

Amazing fact: for any wff E in IPL that is not
a theorem, the method of tableaux can find a finite
countermodel for it, using a tree-like frame; By making
a ZDAG with that shape - with possibly more points -
we can make a ZDAG-countermodel for E.

Example: let E be ... .
Let P = ..., Q = ... .
Then: ... = ... = ... != T
Thus E = ... is not a tautology in IPL,
and can't be a theorem of IPL -
but E' = ... is a theorem...

So ZDAGs can give people a concrete feeling of how
intuitionistic propositional logic works - which WFFs
can be theorems, which ones can't be, and why.
11. Categories

Remember: each catD - i.e., (D, BPM(D)^*) can be seen as a category -
the identity maps and the composition of morphisms is trivial
to define.

Each D' is a Heyting Algebra - a cartesian closed category -, and we
have nice names for its objects - for example, V' is (the
transitive-reflexive closure of) this:

We can explain the operations and, or, imp, not, plus T and F, and
their properties, by their categorical definitions (via diagrams!):