SlideShare a Scribd company logo
University of Toronto                                   Department of Computer Science




        An introduction to Category Theory for
                 Software Engineers*

                               Dr Steve Easterbrook
                               Associate Professor,
                             Dept of Computer Science,
                               University of Toronto
                               sme@cs.toronto.edu


        *slides available at http://www.cs.toronto.edu/~sme/presentations/cat101.pdf
© Steve Easterbrook, 1999                                                                 1
University of Toronto                    Department of Computer Science



                       Key Questions for this tutorial
  • What is Category Theory?

  • Why should we be interested in Category Theory?

  • How much Category Theory is it useful to know?

  • What kinds of things can you do with Category Theory in
    Software Engineering?

  • (for the ASE audience)
    Does Category Theory help us to automate things?




© Steve Easterbrook, 1999                                                  2
University of Toronto                                            Department of Computer Science



                            By way of introduction...
  • An explanation of “Colimits”

                                A                                     B




                      The colimit                  f
                      of A and B                                          A co-cone
                                                                          over A and B



  • My frustration:
           Reading a maths books (especially category theory books!) is like reading a program
            without any of the supporting documentation. There’s lots of definitions, lemmas, proofs,
            and so on, but no indication of what it’s all for, or why it’s written the way it is.
           This also applies to many software engineering papers that explore formal foundations.
© Steve Easterbrook, 1999                                                                              3
University of Toronto                                             Department of Computer Science



                                             Outline
  (1)             An introduction to categories                          you
           Definitions                                                   are
           Some simple examples                                         here

  (2)             Motivations
           Why is category theory so useful in mathematics?
           Why is category theory relevant to software engineering?


  (3)             Enough category theory to get by
           some important universal mapping properties
           constructiveness and completeness


  (4)             Applying category theory to specifications
           Specification morphisms
           Modular Specifications
           Tools based on category theory
© Steve Easterbrook, 1999                                                                           4
University of Toronto                                       Department of Computer Science



                            Definition of a Category
  • A category consists of:                                            A           f            B
          a class of objects
          a class of morphisms (“arrows”)
          for each morphism, f, one object as the domain of f                 A
           and one object as the codomain of f.
          for each object, A, an identity morphism which has                              IDA
           domain A and codomain A. (“IDA”)
          for each pair of morphisms f:A→B and g:B→C, (i.e.               f                g
           cod(f)=dom(g)), a composite morphism, g  f: A→C
                                                                                   gf

  • With these rules:
          Identity composition: For each morphism f:A→B,                                  hg
               f  IDA = f              and     IDB  f = f        f                   g            h
          Associativity: For each set of morphisms f:A→B, g:B
           →C, h:C→D,                                                  gf
              (h  g)  f = h  (g  f)                           (h  g)  f = h  (g  f)
© Steve Easterbrook, 1999                                                                               5
University of Toronto                                     Department of Computer Science



                            Understanding the definition
                               Which of these can be valid categories?




               Note: In this notation, the identity morphisms are assumed.
© Steve Easterbrook, 1999                                                                   6
University of Toronto                                       Department of Computer Science



                                Understanding the definition
                            Proof that                          is not a category:


                                               Composition:            Associativity:
                          g                       f  h = IDB               h  f  g = (h  f)  g
    IDA                                  IDB
                                                  f  g = IDB                         = IDA  g
                                f
                                                  h  f = IDA                         =g
            A                       B
                                                  g  f = IDA               h  f  g = h  (f  g)

                                                            
                                h                                                     = h  IDB
                                                                                      =h

                                                   okay so far
                                                                            Hence: g = h

                                                                                      not okay
      Note : h" f = g" f # h = g, although it may in some categories.
                         /

                         Hence,                     can be a category.

!   © Steve Easterbrook, 1999                                                                         7
University of Toronto                              Department of Computer Science



                            Challenge Question
                               (For the experts only)

                              Can this be a category?
     These are
        not
     identities




© Steve Easterbrook, 1999                                                            8
University of Toronto                                                 Department of Computer Science



                                          Example category 1
  • The category of sets (actually, “functions on sets”)
           objects are sets
           morphisms are functions between sets



    E.g.                                                 E.g.
                          “best friend”                                      Temperatures
     alice                                  kurt
             sam                               bob
                   eric
                                          stan
                                                                                                 What are
                                             earl
                                                                       measure
                                                                        in ºF    measure        the missing
                                                                                  in ºC         morphisms?

   “what best                               “likes for
friend likes for                           breakfast”       convert                round
   breakfast”                                               ºF to ºC
                          tea coffee                                             cast to real
                          juice                                 convert                          Integers
                                                                            Real
                               water                            ºC to ºF    numbers

© Steve Easterbrook, 1999                                                                                     9
University of Toronto                                                Department of Computer Science



                                Example category 2
  • Any partial order (P, ≤)
             Objects are the elements of the partial order
             Morphisms represent the ≤ relation.
             Composition works because of the transitivity of ≤


    E.g.
            The partial order n, formed from the first n natural numbers
            Here, n = 4

              1

                            2
        0                             3



                                            4

© Steve Easterbrook, 1999                                                                              10
University of Toronto                                             Department of Computer Science



                                             Outline
  (1)             An introduction to categories
           Definitions
           Some simple examples


  (2)             Motivations                                            you
           Why is category theory so useful in mathematics?             are
           Why is category theory relevant to software engineering?     here

  (3)             Enough category theory to get by
           some important universal mapping properties
           constructiveness and completeness


  (4)             Applying category theory to specifications
           Specification morphisms
           Modular Specifications
           Tools based on category theory
© Steve Easterbrook, 1999                                                                           11
University of Toronto                                             Department of Computer Science



                  So what? (for the mathematician)
  • Category theory is a convenient new language
           It puts existing mathematical results into perspective
           It gives an appreciation of the unity of modern mathematics


  • Reasons to study it
           As a language, it offers economy of thought and expression
           It reveals common ideas in (ostensibly) unrelated areas of mathematics
           A single result proved in category theory generates many results in different areas of
            mathematics
           Duality: for every categorical construct, there is a dual, formed by reversing all the
            morphisms.
           Difficult problems in some areas of mathematics can be translated into (easier) problems in
            other areas (e.g. by using functors, which map from one category to another)
           Makes precise some notions that were previously vague, e.g. ‘universality’, ‘naturality’

        “To each species of mathematical structure, there corresponds a category, whose
             objects have that structure, and whose morphisms preserve it” - Goguen
© Steve Easterbrook, 1999                                                                                12
University of Toronto                                                  Department of Computer Science



                              Some more definitions
  • Discrete category:                                           Example:
           All the morphisms are identities                                    IDA          IDB


                                                                                       IDC

  • Connected category:
           For every pair of objects, there is at least
            one morphism between them
                                                           Example:
                                                           original category:         full sub-category:

  • Full sub-category:
           A selection of objects from a category,
                                                                                 functor
            together with all the morphisms between
            them.



© Steve Easterbrook, 1999                                                                                  13
University of Toronto                                               Department of Computer Science



                            Inverses and Isomorphisms
  • Identity morphism:
           For each object X, there is an identity morphism, IDX, such that:
                                                                                                     f
           if f is a morphism with domain X,         f  IDX = f                               X
           if g is a morphism with codomain X,       IDX  g = g                       g
                                                                                                         IDX
  • Inverse
           g:B→A is an inverse for f:A→B if:
               f  g = IDB                                         IDA                              IDB
                                                                           A    f           B
               g  f = IDA
           If it exists, the inverse of f is denoted f-1                           g
           A morphism can have at most one inverse


  • Isomorphism
           If f has an inverse, then it is said to be an isomorphism
           If f:A→B is an isomorphism, then A and B are said to be isomorphic

© Steve Easterbrook, 1999                                                                                      14
University of Toronto                                             Department of Computer Science



                              Example category 3
  • Category of geometric shapes (Euclid’s category)
          objects are polygonal figures drawn on a plane
          morphisms are geometric translations of all the points on the polygon such that distances
           between points are preserved.
          Objects that are isomorphic in this category are called ‘congruent figures’

                                                         p

                                                                                            q'
                                                         q                             r'
                                                                                                  P'
                                                              r


             p

                                              q'
            q                            r'
                                                    P'
                    r

© Steve Easterbrook, 1999                                                                              15
University of Toronto                                             Department of Computer Science



                                    Example category 4
  • Category of algebras
          Each object is a sort, with a binary function over that sort
          Each morphism is a translation from one algebra to another, preserving the structure



                                  Works because
    E.g.                          e(a+b) = ea x eb
                                                           E.g.

                       exponentiation
       (!,+)                                                      ({odd, even},+)
                                        (" >0 ,!)
                doubling


                                        (!,+)
                                                                  ({pos, neg},!)
                        Works because
                        2(a+b) = 2a + 2b

© Steve Easterbrook, 1999                                                                           16
University of Toronto                                            Department of Computer Science



                                          Functors
  • Definition of functor:
           Consider the category in which the objects are categories and the morphisms are mappings
            between categories. The morphisms in such a category are known as functors.
           Given two categories, C and D, a functor F:C→D maps each morphism of C onto a
            morphism of D, such that:
              F preserves identities - i.e. if x is a C-identity, then F(x) is a D-identity
              F preserves composition - i.e F(f  g) = F(f)  F(g)




  • Example functor
           From the category of topological spaces and continuous maps
            to the category of sets of points and functions between them
© Steve Easterbrook, 1999                                                                              17
University of Toronto                                             Department of Computer Science



            So what? (for the software engineer)
  • Category theory is ideal for:
           Reasoning about structure and the mappings that preserve structure
           Abstracting away from details.
           Automation (constructive methods exists for many useful categorical structures)


  • Applications of Category theory in software engineering
           The category of algebraic specifications - category theory can be used to represent
            composition and refinement
           The category of temporal logic specifications - category theory can be used to build
            modular specifications and decompose system properties across them
           Automata theory - category theory offers a new way of comparing automata
           Logic as a category - can represent a logical system as a category, and construct proofs
            using universal constructs in category theory (“diagram chasing”).
           The category of logics - theorem provers in different logic systems can be hooked together
            through ‘institution morphisms’
           Functional Programming - type theory, programming language semantics, etc
© Steve Easterbrook, 1999                                                                                18
University of Toronto                                         Department of Computer Science



              Modularity in Software Engineering
  • Reasons for wanting modularization
           Splitting the workload into workpieces
              “decompose the process”
           Splitting the system into system pieces (components)         Most of the category
                                                                           theory work has
              “decompose the implementation”
                                                                          addressed this one
           Splitting the problem domain into separate concerns
                  “decompose the requirements”


  • Resulting benefits
           Information hiding
           Compositional verification
           Compositional refinement


  • Generalizable approaches:
           Semi-formal - Viewpoints framework
           Formal - Category Theory
© Steve Easterbrook, 1999                                                                       19
University of Toronto                                                  Department of Computer Science



                                          Building blocks
  • Need to express:
           Modules (Interface + Structure + Behavior)
           Module Interconnections
           Operations on modules (e.g. compose two modules to form a third)
                              interface




                                                             interface
                  structure                                              structure
                                           interconnection
                  behavior                                               behavior




                                               new
                                              module
© Steve Easterbrook, 1999                                                                                20
University of Toronto                                             Department of Computer Science



                                             Outline
  (1)             An introduction to categories
           Definitions
           Some simple examples


  (2)             Motivations
           Why is category theory so useful in mathematics?
           Why is category theory relevant to software engineering?


  (3)             Enough category theory to get by                       you
           some important universal mapping properties                  are
           constructiveness and completeness                            here

  (4)             Applying category theory to specifications
           Specification morphisms
           Modular Specifications
           Tools based on category theory
© Steve Easterbrook, 1999                                                                           21
University of Toronto                                            Department of Computer Science



             Enough Category Theory to get by...
  • Universal Constructs
           General properties that apply to all objects in a category
           Each construct has a dual, formed by reversing the morphisms
           Examples:
             – initial and terminal objects
                                                                       These are the building
             – pushouts and pullbacks                                  blocks for manipulating
             – colimits and limits                                          specification
             – co-completeness and completeness                              structures


  • Higher order constructs
           Can form a category of categories. The morphisms in this category are called functors.
           Can form a category of functors. The morphisms in this category are called natural
            transformations.
           Can consider inverses of functors (and hence isomorphic categories). Usually, a weaker
            notion than isomorphism is used, namely adjoint functors.

© Steve Easterbrook, 1999                                                                            22
University of Toronto                                                     Department of Computer Science



                            Initial and Terminal Objects
  • Initial objects                                             • Terminal objects
         An object S is said to be initial if for every other      An object T is said to be terminal if for every
            object X there is exactly one morphism f:S→               other object X there is exactly one
            X                                                         morphism f:X→T


  • Examples                                                    • Example
          The number 0 in this category:                           Any singleton set in the category of sets

                            1
                                 2
                0                               3
          The empty set {} in the category of sets

                                Uniqueness (up to isomorphism):
            If T1 and T2 are both terminal objects, then there is exactly one
             morphism between them, and it is an isomorphism                                            T2     IDT2
                                                                               IDT1      T1     f
            Why? Because there is exactly one morphism each of f:T1→T2,
             g:T2→T1, h:T1→T1, and j:T2→T2, where h and j are identities.                           g
            Same applies to initial objects

© Steve Easterbrook, 1999                                                                                             23
University of Toronto                                                  Department of Computer Science



                            Pushouts and Pullbacks
  • Pushout                                                  • Pullback
         The pushout for two morphisms f:A→B and g:A            The pullback for two morphisms f:A→C and g:B
            →C is an object D, and two morphisms d1:B              →C is an object D, and two morphisms d1:D
            →D and d2:C→D, such that the square                    →A and d2:D→B, such that the square
            commutes…                                              commutes…

                      A        f             B                    D’                       d1’
                                                                             d’
                                                                                                 d1       A
                       g             d1                             d2’
                                                  d1’                                      D
                                         D                                        d2                  f
                             d2
                      C                      d’
                                                                                                 g
                                   d2’                                                 B                  C
                                                        D’
         … and D is the initial object in the full              … and D is the terminal object in the full
              subcategory of all such candidates D’                subcategory of all such candidates D’
         (I.e. for all objects D’ with morphisms d1’ and
              d2’, there is a unique morphism from D to
              D’)
© Steve Easterbrook, 1999                                                                                      24
University of Toronto                                                  Department of Computer Science



                                 Products and Coproducts
  • Coproduct                                             • Product
         The coproduct of a family of objects Ai is an       The product of a family of objects Ai is an object
            object P and a set of morphisms gi:Ai→P             P and a set of morphisms gi:P→ Ai


                 A1                                           A1

                            g1     P                                   g1        P
                                                P’                                              P’
                            g2
                                                                      g2

                 A2                                           A2
         … and P is the initial object in the full           … and P is the terminal object in the full
            subcategory of all such candidates P’               subcategory of all such candidates P’


  • Coproduct vs. Pushout                                 • Product vs. Pullback
          Pushout is a universal property of any two         Pullback is a universal property of any two
           morphisms with a common domain                      morphisms with a common codomain
          Coproduct is a universal property of any set       Product is a universal property of any set of
           of objects                                          objects
© Steve Easterbrook, 1999                                                                                         25
University of Toronto                                    Department of Computer Science



                                Example products
  • In the category of sets:                           • In the category of
           constructed as the cartesian product         geometric spaces:




  • In the category of logical
    propositions:       p'

         a∧b                b              a∧b     b              In any given category,
                                                                some products might not
                                                                exist. It is useful to know
           a                                a                      whether they all do.
© Steve Easterbrook, 1999                                                                     26
University of Toronto                                                      Department of Computer Science



                     Example co-product & pushout
                                                                          {a,b,c}                {x,y}
  • Coproducts on the category of
    sets:
           Constructed by taking the disjoint sum
                                                                                    {a,b,c,x,y}


                                                          A                             B
                                                                                                  k
                                                                  x                                       b
                                                                                                  s
  • Pushouts on the category of                                           y                           e

    sets:
           Union of:
           Pairs of elements from B and C that are the
            images of the same element in A               C                             P
           Plus all the remaining elements of B and C        a                                  bB
                                                                      s                     kB      (sB, sC)
                                                                           e                 (eB, eC) a
                                                                                                              C



© Steve Easterbrook, 1999                                                                                         27
University of Toronto                                                  Department of Computer Science



                                      Limits and Colimits
  • Colimits                                                 • Limits
           initial objects, pushouts and coproducts are         terminal objects, pullbacks and products are
            all special cases of colimits.                        all special cases of limits.
           Colimits are defined over any diagram                 Limits are defined over any diagram

          For any diagram containing objects Ai and             For any diagram containing objects Ai and
              morphisms ai, the colimit of this diagram is          morphisms ai, the limit of this diagram is an
              an object L and a family of morphisms li,             object L and a family of morphisms li, such
              such that for each li: Ai→L, lj: Aj→L, and            that for each li:L→Ai, lj:L→Aj, and ax:Ai→
              ax:Ai→Aj, then lj  ax = li                           Aj, then ax  li = lj

              Ai                                                   Ai


               ax            li   L                                 ax           li    L
                                              L’                                                     L’
                        lj                                                  lj

               Aj                                                   Aj
          … and L is the initial object in the full             … and L is the terminal object in the full
             subcategory of all such candidates L’                 subcategory of all such candidates L’
© Steve Easterbrook, 1999                                                                                           28
University of Toronto                                                 Department of Computer Science



            Completeness and Co-completeness
  • It is useful to know for a given category which universal
    constructs exist:
           If a category has a terminal object and all pullbacks exist, then all finite limits exist
               – Hence it is finitely complete
           If a category has an initial object and all pushouts exist, then all finite colimits exist
               – Hence it is finitely cocomplete


  • Proofs are usually constructive
           I.e. give a method for computing all pullbacks (pushouts)
           The constructive proof is the basis for automated generation of limits (colimits)


  • Obvious application
           If your objects are specifications, then:
               – colimits are the integration of specifications
               – limits are the overlaps between specifications

© Steve Easterbrook, 1999                                                                               29
University of Toronto                                             Department of Computer Science



                                             Outline
  (1)             An introduction to categories
           Definitions
           Some simple examples


  (2)             Motivations
           Why is category theory so useful in mathematics?
           Why is category theory relevant to software engineering?


  (3)             Enough category theory to get by
           some important universal mapping properties
           constructiveness and completeness


  (4)             Applying category theory to specifications
                                                                              you
           Specification morphisms
                                                                              are
           Modular Specifications
                                                                              here
           Tools based on category theory
© Steve Easterbrook, 1999                                                                           30
University of Toronto                                                  Department of Computer Science



                (Recall...) Algebraic Specifications
  • A signature is a pair <S, Ω>
          where S is a set of sorts, and Ω is a set of operations over those sorts
  • A specification is a pair <Σ, Φ>
          describes algebras over the signature Σ that satisfy the axioms Φ

                                                    Spec Container
                            Signature                  sort Elem, Cont
                                                       op empty: Cont
                                                       op single: Elem -> Cont
                                                       op merge: Cont, Cont -> Cont
                              Body                     axiom merge(empty, e) = e
                                                       axiom merge(e, empty) = e
                                                    end-spec
  • Semantically:
           We are modeling programs as algebras
           A specification defines a class of algebras (programs)

© Steve Easterbrook, 1999                                                                                31
University of Toronto                                            Department of Computer Science



                            Specification morphisms
  • Specfication morphisms
           Consider the category in which the objects are specifications
           The morphisms translate the vocabulary of one specification into the vocabulary of
            another, preserving the (truth of the) axioms


  • Actually, there are two parts:
           Signature morphism: a vocabulary mapping
              – maps the sorts and operations from one spec to another
              – must preserve the rank of each operation
           Specification morphism: a signature morphism for which each axiom of the first
            specification maps to a theorem of the second specification


  • Proof obligations
           There will be a bunch of proof obligations with each morphism, because of the need to
            check the axioms have been translated into theorems
           A theorem prover comes in handy here.
© Steve Easterbrook, 1999                                                                           32
University of Toronto                           Department of Computer Science



                                 Example
   Spec Container
       sort Elem, Cont
       op empty: Cont                          These comprise the
       op single: Elem -> Cont                 signature morphism
       op merge: Cont, Cont -> Cont
                                             (Note each spec has it’s
       axiom merge(empty, e) = e
       axiom merge(e, empty) = e                 own namespace)
   end-spec

                             Spec List
                                 sort Elem, List
                                 op null: List
                                 op single: Elem -> List
                                 op append: List, List -> List
                                 op head: List -> Elem
                                 op tail: List -> List
                                 axiom head(single(e)) = e
    These axioms must            axiom tail(single(e)) = null
    be true down here            axiom append(single(head(l)), tail(l)) = l
                             end-spec
    (after translation)
© Steve Easterbrook, 1999                                                         33
University of Toronto                                           Department of Computer Science



                                What do we gain?
  • Three simple horizontal composition primitives:
           Translate: an isomorphic copy (just a renaming)
              – can test whether two specifications are equivalent
           Import: include one specification in another (with renaming)
              – for extending specifications with additional services
           Union (colimit): Compose two specifications to make a larger one
              – system integration


  • One simple vertical composition primitive:
           refinement: mapping between a specification and its implementation
              – introduce detail, make design choices, add constraints, etc.
              – (may want to use different languages, e.g. refinement is a program)




© Steve Easterbrook, 1999                                                                         34
University of Toronto                          Department of Computer Science



                            Example colimit (pushout)
                                        Spec List
         Spec Container                     sort Elem, List
             sort A, B                      op null: List
             op x: B                        op head: List -> Elem
         end-spec                           op tail: List -> List
                                            op cons: Elem, List -> List
                                            axiom head(cons(e, l)) = e
                                            axiom tail(cons(e, l)) = l
                                            axiom cons(head(l), tail(l)) = l
                                            axiom tail(cons(e, null)) = null
                                        end-spec

Spec Container
    sort Elem, Cont
    op empty: Cont
    op single: Elem -> Cont
    op merge: Cont, Cont -> Cont
    axiom merge(empty, e) = e                          New spec is lists
    axiom merge(e, empty) = e                      with two new operations,
end-spec                                            “single” and “merge”
© Steve Easterbrook, 1999                                                        35
University of Toronto                                                  Department of Computer Science



                   (Recall…) Temporal Logic Specs
  • A signature is a pair <S, Ω>
          where S is a set of sorts, and Ω is a set of operations over those sorts


  • A specification is a 4-tuple <Σ, ATT, EV, AX>
          Σ is the signature
                                                                    These three comprise the
          ATT is a set of attributes                                vocabulary of the specification
          EV is a set of events
          AX is a set of axioms expressed in temporal logic
                                                                   Assume some usual temporal
                                                                   logic operators, e.g.
  • Semantically:                                                      always
                                                                       eventually
           We are modeling programs as state machines
           A specification describes a class of state machines that obey the axioms


  • (A minor complication)
           Need to worry about locality of events

© Steve Easterbrook, 1999                                                                                36
University of Toronto                                             Department of Computer Science



                              Expressing modules
  • Want to generalize the notion of a module
           Explicitly declare interfaces, with constraints on imported and exported resources
           Hence the interface itself is a specification (actually 2 specifications)
          (Ehrig & Mahr use algebraic specs; Michel & Wiels use temporal logic specs)

 Parameters of                                                                    Resources provided
 this module                                                                      by this module
                               parameters                     export
 (identifies
 IN-OUT
 parameters)



                                  import                       body              Realization of the
    Resources to
                                                                                 resources declared
    be provided to
                                                                                 in the export part
    this module by
                                                                                 (may contain
    others
                                                                                 hidden sorts and
                                                                                 operations)
© Steve Easterbrook, 1999                                                                              37
University of Toronto                           Department of Computer Science



                                     Examples
  • The approach works for many different kinds of module:
     E.g. function modules                 E.g. data types
                datalists;   datalist         data;
                                                              lists
                equality;    sorting          equality;
                                                              list opns;
                total order; function;        ordering;

                             implement’n                      implement’n
                lists;
                             of sorting       same            of list
                list opns;
                             function                         operations


      E.g. predicates                      E.g. state machines

                             SORTED:          common          output
                data
                             list->bool       events          events


                                              input           state
                list(data)   same
                                              events          machine


© Steve Easterbrook, 1999                                                         38
University of Toronto                                  Department of Computer Science



                                   Composing modules
   E.g. import (“uses”):                            E.g. union (colimit):
     par                     par1     exp1                  par0       exp0


                                                           imp0        bod0
                             imp1     bod1



    par2                    exp2
                                             par1        exp1               par2    exp2

   imp2                     bod2       bod
                                             imp1        bod1               imp2    bod2



                                                                new module
© Steve Easterbrook, 1999                                                                39
University of Toronto                                              Department of Computer Science



                                  Advanced Topics
  • Logic engineering
           Language translation
              – from one logic to another
              – from one specification language to another
           Aim is to characterize logics as:
              – signatures (alphabet of non-logical symbols)
              – consequence relations
           Then an institution morphism allows you to translate from one logic to another whilst
            preserving consequence


  • Natural Transformations of refinements
           If a system specification is a category, and the relationship between the specification and its
            refinement is a functor…
           …then the relationship between alternative refinements of the same specification is a
            natural transformation.

© Steve Easterbrook, 1999                                                                                   40
University of Toronto                                            Department of Computer Science


              (suggested)
                            Future Research Issues
  • Compositional Verification in Practice
           E.g. How much does the choice of modularization affect it
           Which kinds of verification properties can be decomposed, and which cannot?
           How do we deal systemic properties (e.g. fairness)


  • Evolving Specifications
           How do you represent and reason about (non-correctness preserving) change?
           How resilient is a modular specification to different kinds of change request


  • Dealing with inconsistencies
           Specification morphisms only work if the specifications are consistent
           Can we weaken the “correct by construction” approach?




© Steve Easterbrook, 1999                                                                          41
University of Toronto                                              Department of Computer Science



                                           Summary
  • Category Theory basis
           Simple definition: class of objects + class of arrows (morphisms)
           A category must obey identity, composition and associativity rules


  • Category theory is useful in mathematics…
           Unifying language for talking about many different mathematical structures
           Provides precise definition for many abstract concepts (e.g. isomorphism)
           Framework for comparing mathematical structures


  • Category theory is useful in software engineering
              Modeling and reasoning about structure
              Provides precise notions of modularity and composition
              Specification morphisms relate vocabulary and properties of specifications
              Constructive approach lends itself to automation


© Steve Easterbrook, 1999                                                                            42
University of Toronto                                         Department of Computer Science



                      Answer to challenge question:




                                            YES!
                             (proof left as an exercise for the audience*)




© Steve Easterbrook, 1999                                                                       43

More Related Content

What's hot

Zio in real world
Zio in real worldZio in real world
Zio in real world
Wiem Zine Elabidine
 
Introduction to oop with c++
Introduction to oop with c++Introduction to oop with c++
Introduction to oop with c++
Shruti Patel
 
Diagramas de pacotes
Diagramas de pacotesDiagramas de pacotes
Diagramas de pacotes
Portal_do_estudante_ADS
 
Ai planning with evolutionary computing
Ai planning with evolutionary computingAi planning with evolutionary computing
Ai planning with evolutionary computing
pinozz
 
Python array
Python arrayPython array
Python array
Arnab Chakraborty
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.6
ΠΛΗ30 ΜΑΘΗΜΑ 1.6ΠΛΗ30 ΜΑΘΗΜΑ 1.6
ΠΛΗ30 ΜΑΘΗΜΑ 1.6
Dimitris Psounis
 
ZIO-Direct - Functional Scala 2022
ZIO-Direct - Functional Scala 2022ZIO-Direct - Functional Scala 2022
ZIO-Direct - Functional Scala 2022
Alexander Ioffe
 
Lec 5 asymptotic notations and recurrences
Lec 5 asymptotic notations and recurrencesLec 5 asymptotic notations and recurrences
Lec 5 asymptotic notations and recurrences
Ankita Karia
 
tkinter final ppt.ppt
tkinter final ppt.ppttkinter final ppt.ppt
tkinter final ppt.ppt
KanuAgrawal2
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
Armando Daniel
 
Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Python Functions Tutorial | Working With Functions In Python | Python Trainin...Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Edureka!
 
Functional Domain Modeling - The ZIO 2 Way
Functional Domain Modeling - The ZIO 2 WayFunctional Domain Modeling - The ZIO 2 Way
Functional Domain Modeling - The ZIO 2 Way
Debasish Ghosh
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
Caveiras
 
An Introduction to the C++ Standard Library
An Introduction to the C++ Standard LibraryAn Introduction to the C++ Standard Library
An Introduction to the C++ Standard Library
Joyjit Choudhury
 
Python Programming Language
Python Programming LanguagePython Programming Language
Python Programming Language
Laxman Puri
 
Object oriented programming in python
Object oriented programming in pythonObject oriented programming in python
Object oriented programming in python
baabtra.com - No. 1 supplier of quality freshers
 
Data Structure and Algorithms
Data Structure and AlgorithmsData Structure and Algorithms
Data Structure and Algorithms
Sumathi MathanMohan
 
ΠΛΗ20 ΜΑΘΗΜΑ 3.3
ΠΛΗ20 ΜΑΘΗΜΑ 3.3ΠΛΗ20 ΜΑΘΗΜΑ 3.3
ΠΛΗ20 ΜΑΘΗΜΑ 3.3
Dimitris Psounis
 
3.2 Power sets
3.2 Power sets3.2 Power sets
3.2 Power sets
Jan Plaza
 
Mongodb mock test_ii
Mongodb mock test_iiMongodb mock test_ii
Mongodb mock test_ii
Ankit Dubey
 

What's hot (20)

Zio in real world
Zio in real worldZio in real world
Zio in real world
 
Introduction to oop with c++
Introduction to oop with c++Introduction to oop with c++
Introduction to oop with c++
 
Diagramas de pacotes
Diagramas de pacotesDiagramas de pacotes
Diagramas de pacotes
 
Ai planning with evolutionary computing
Ai planning with evolutionary computingAi planning with evolutionary computing
Ai planning with evolutionary computing
 
Python array
Python arrayPython array
Python array
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.6
ΠΛΗ30 ΜΑΘΗΜΑ 1.6ΠΛΗ30 ΜΑΘΗΜΑ 1.6
ΠΛΗ30 ΜΑΘΗΜΑ 1.6
 
ZIO-Direct - Functional Scala 2022
ZIO-Direct - Functional Scala 2022ZIO-Direct - Functional Scala 2022
ZIO-Direct - Functional Scala 2022
 
Lec 5 asymptotic notations and recurrences
Lec 5 asymptotic notations and recurrencesLec 5 asymptotic notations and recurrences
Lec 5 asymptotic notations and recurrences
 
tkinter final ppt.ppt
tkinter final ppt.ppttkinter final ppt.ppt
tkinter final ppt.ppt
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
 
Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Python Functions Tutorial | Working With Functions In Python | Python Trainin...Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Python Functions Tutorial | Working With Functions In Python | Python Trainin...
 
Functional Domain Modeling - The ZIO 2 Way
Functional Domain Modeling - The ZIO 2 WayFunctional Domain Modeling - The ZIO 2 Way
Functional Domain Modeling - The ZIO 2 Way
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
An Introduction to the C++ Standard Library
An Introduction to the C++ Standard LibraryAn Introduction to the C++ Standard Library
An Introduction to the C++ Standard Library
 
Python Programming Language
Python Programming LanguagePython Programming Language
Python Programming Language
 
Object oriented programming in python
Object oriented programming in pythonObject oriented programming in python
Object oriented programming in python
 
Data Structure and Algorithms
Data Structure and AlgorithmsData Structure and Algorithms
Data Structure and Algorithms
 
ΠΛΗ20 ΜΑΘΗΜΑ 3.3
ΠΛΗ20 ΜΑΘΗΜΑ 3.3ΠΛΗ20 ΜΑΘΗΜΑ 3.3
ΠΛΗ20 ΜΑΘΗΜΑ 3.3
 
3.2 Power sets
3.2 Power sets3.2 Power sets
3.2 Power sets
 
Mongodb mock test_ii
Mongodb mock test_iiMongodb mock test_ii
Mongodb mock test_ii
 

Similar to Introduction to Category Theory for software engineers

A SVM Applied Text Categorization of Academia-Industry Collaborative Research...
A SVM Applied Text Categorization of Academia-Industry Collaborative Research...A SVM Applied Text Categorization of Academia-Industry Collaborative Research...
A SVM Applied Text Categorization of Academia-Industry Collaborative Research...
National Institute of Informatics
 
M. Dimitrijevic - Twisted Symmetry and Noncommutative Field Theory
M. Dimitrijevic - Twisted Symmetry and Noncommutative Field TheoryM. Dimitrijevic - Twisted Symmetry and Noncommutative Field Theory
M. Dimitrijevic - Twisted Symmetry and Noncommutative Field Theory
SEENET-MTP
 
A Featherweight Approach to FOOL
A Featherweight Approach to FOOLA Featherweight Approach to FOOL
A Featherweight Approach to FOOL
greenwop
 
Jarrar.lecture notes.aai.2012s.descriptionlogic
Jarrar.lecture notes.aai.2012s.descriptionlogicJarrar.lecture notes.aai.2012s.descriptionlogic
Jarrar.lecture notes.aai.2012s.descriptionlogic
SinaInstitute
 
Representing and Reasoning with Modular Ontologies
Representing and Reasoning with Modular OntologiesRepresenting and Reasoning with Modular Ontologies
Representing and Reasoning with Modular Ontologies
Jie Bao
 
download
downloaddownload
download
butest
 
download
downloaddownload
download
butest
 
Dependent Types in Natural Language Semantics
Dependent Types in Natural Language SemanticsDependent Types in Natural Language Semantics
Dependent Types in Natural Language Semantics
Daisuke BEKKI
 
An Unorthodox View on Memetic Algorithms
An Unorthodox View on Memetic AlgorithmsAn Unorthodox View on Memetic Algorithms
An Unorthodox View on Memetic Algorithms
Natalio Krasnogor
 

Similar to Introduction to Category Theory for software engineers (9)

A SVM Applied Text Categorization of Academia-Industry Collaborative Research...
A SVM Applied Text Categorization of Academia-Industry Collaborative Research...A SVM Applied Text Categorization of Academia-Industry Collaborative Research...
A SVM Applied Text Categorization of Academia-Industry Collaborative Research...
 
M. Dimitrijevic - Twisted Symmetry and Noncommutative Field Theory
M. Dimitrijevic - Twisted Symmetry and Noncommutative Field TheoryM. Dimitrijevic - Twisted Symmetry and Noncommutative Field Theory
M. Dimitrijevic - Twisted Symmetry and Noncommutative Field Theory
 
A Featherweight Approach to FOOL
A Featherweight Approach to FOOLA Featherweight Approach to FOOL
A Featherweight Approach to FOOL
 
Jarrar.lecture notes.aai.2012s.descriptionlogic
Jarrar.lecture notes.aai.2012s.descriptionlogicJarrar.lecture notes.aai.2012s.descriptionlogic
Jarrar.lecture notes.aai.2012s.descriptionlogic
 
Representing and Reasoning with Modular Ontologies
Representing and Reasoning with Modular OntologiesRepresenting and Reasoning with Modular Ontologies
Representing and Reasoning with Modular Ontologies
 
download
downloaddownload
download
 
download
downloaddownload
download
 
Dependent Types in Natural Language Semantics
Dependent Types in Natural Language SemanticsDependent Types in Natural Language Semantics
Dependent Types in Natural Language Semantics
 
An Unorthodox View on Memetic Algorithms
An Unorthodox View on Memetic AlgorithmsAn Unorthodox View on Memetic Algorithms
An Unorthodox View on Memetic Algorithms
 

More from Pranav Prakash

Data engineering track module 2
Data engineering track module 2Data engineering track module 2
Data engineering track module 2
Pranav Prakash
 
Data engineering track module 2
Data engineering track module 2Data engineering track module 2
Data engineering track module 2
Pranav Prakash
 
Machine Learning Introduction
Machine Learning IntroductionMachine Learning Introduction
Machine Learning Introduction
Pranav Prakash
 
Test document
Test documentTest document
Test document
Pranav Prakash
 
Webtech1b
Webtech1bWebtech1b
Webtech1b
Pranav Prakash
 
Solidry @ bakheda2
Solidry @ bakheda2Solidry @ bakheda2
Solidry @ bakheda2
Pranav Prakash
 
To Infinity and Beyond - OSDConf2014
To Infinity and Beyond - OSDConf2014To Infinity and Beyond - OSDConf2014
To Infinity and Beyond - OSDConf2014
Pranav Prakash
 
#comments
#comments#comments
#comments
Pranav Prakash
 
Ibm haifa.mq.final
Ibm haifa.mq.finalIbm haifa.mq.final
Ibm haifa.mq.final
Pranav Prakash
 
Apple banana oranges_peaches
Apple banana oranges_peachesApple banana oranges_peaches
Apple banana oranges_peaches
Pranav Prakash
 
Oranges peaches
Oranges peachesOranges peaches
Oranges peaches
Pranav Prakash
 
Banana peaches
Banana peachesBanana peaches
Banana peaches
Pranav Prakash
 
Banana oranges
Banana orangesBanana oranges
Banana oranges
Pranav Prakash
 
Banana oranges peaches
Banana oranges peachesBanana oranges peaches
Banana oranges peaches
Pranav Prakash
 
Apple peaches
Apple peachesApple peaches
Apple peaches
Pranav Prakash
 
Apple oranges
Apple orangesApple oranges
Apple oranges
Pranav Prakash
 
Apple oranges peaches
Apple oranges peachesApple oranges peaches
Apple oranges peaches
Pranav Prakash
 

More from Pranav Prakash (20)

Data engineering track module 2
Data engineering track module 2Data engineering track module 2
Data engineering track module 2
 
Data engineering track module 2
Data engineering track module 2Data engineering track module 2
Data engineering track module 2
 
Machine Learning Introduction
Machine Learning IntroductionMachine Learning Introduction
Machine Learning Introduction
 
Test document
Test documentTest document
Test document
 
Webtech1b
Webtech1bWebtech1b
Webtech1b
 
Solidry @ bakheda2
Solidry @ bakheda2Solidry @ bakheda2
Solidry @ bakheda2
 
To Infinity and Beyond - OSDConf2014
To Infinity and Beyond - OSDConf2014To Infinity and Beyond - OSDConf2014
To Infinity and Beyond - OSDConf2014
 
#comments
#comments#comments
#comments
 
Ibm haifa.mq.final
Ibm haifa.mq.finalIbm haifa.mq.final
Ibm haifa.mq.final
 
Apple banana oranges_peaches
Apple banana oranges_peachesApple banana oranges_peaches
Apple banana oranges_peaches
 
Oranges
OrangesOranges
Oranges
 
Oranges peaches
Oranges peachesOranges peaches
Oranges peaches
 
Banana
BananaBanana
Banana
 
Banana peaches
Banana peachesBanana peaches
Banana peaches
 
Banana oranges
Banana orangesBanana oranges
Banana oranges
 
Banana oranges peaches
Banana oranges peachesBanana oranges peaches
Banana oranges peaches
 
Apple
AppleApple
Apple
 
Apple peaches
Apple peachesApple peaches
Apple peaches
 
Apple oranges
Apple orangesApple oranges
Apple oranges
 
Apple oranges peaches
Apple oranges peachesApple oranges peaches
Apple oranges peaches
 

Recently uploaded

Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Pitangent Analytics & Technology Solutions Pvt. Ltd
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
Edge AI and Vision Alliance
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
Essentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation ParametersEssentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation Parameters
Safe Software
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 

Recently uploaded (20)

Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
Essentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation ParametersEssentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation Parameters
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 

Introduction to Category Theory for software engineers

  • 1. University of Toronto Department of Computer Science An introduction to Category Theory for Software Engineers* Dr Steve Easterbrook Associate Professor, Dept of Computer Science, University of Toronto sme@cs.toronto.edu *slides available at http://www.cs.toronto.edu/~sme/presentations/cat101.pdf © Steve Easterbrook, 1999 1
  • 2. University of Toronto Department of Computer Science Key Questions for this tutorial • What is Category Theory? • Why should we be interested in Category Theory? • How much Category Theory is it useful to know? • What kinds of things can you do with Category Theory in Software Engineering? • (for the ASE audience) Does Category Theory help us to automate things? © Steve Easterbrook, 1999 2
  • 3. University of Toronto Department of Computer Science By way of introduction... • An explanation of “Colimits” A B The colimit f of A and B A co-cone over A and B • My frustration:  Reading a maths books (especially category theory books!) is like reading a program without any of the supporting documentation. There’s lots of definitions, lemmas, proofs, and so on, but no indication of what it’s all for, or why it’s written the way it is.  This also applies to many software engineering papers that explore formal foundations. © Steve Easterbrook, 1999 3
  • 4. University of Toronto Department of Computer Science Outline (1) An introduction to categories you  Definitions are  Some simple examples here (2) Motivations  Why is category theory so useful in mathematics?  Why is category theory relevant to software engineering? (3) Enough category theory to get by  some important universal mapping properties  constructiveness and completeness (4) Applying category theory to specifications  Specification morphisms  Modular Specifications  Tools based on category theory © Steve Easterbrook, 1999 4
  • 5. University of Toronto Department of Computer Science Definition of a Category • A category consists of: A f B  a class of objects  a class of morphisms (“arrows”)  for each morphism, f, one object as the domain of f A and one object as the codomain of f.  for each object, A, an identity morphism which has IDA domain A and codomain A. (“IDA”)  for each pair of morphisms f:A→B and g:B→C, (i.e. f g cod(f)=dom(g)), a composite morphism, g  f: A→C gf • With these rules:  Identity composition: For each morphism f:A→B, hg f  IDA = f and IDB  f = f f g h  Associativity: For each set of morphisms f:A→B, g:B →C, h:C→D, gf (h  g)  f = h  (g  f) (h  g)  f = h  (g  f) © Steve Easterbrook, 1999 5
  • 6. University of Toronto Department of Computer Science Understanding the definition Which of these can be valid categories? Note: In this notation, the identity morphisms are assumed. © Steve Easterbrook, 1999 6
  • 7. University of Toronto Department of Computer Science Understanding the definition Proof that is not a category: Composition: Associativity: g f  h = IDB h  f  g = (h  f)  g IDA IDB f  g = IDB = IDA  g f h  f = IDA =g A B g  f = IDA h  f  g = h  (f  g)  h = h  IDB =h okay so far Hence: g = h not okay Note : h" f = g" f # h = g, although it may in some categories. / Hence, can be a category. ! © Steve Easterbrook, 1999 7
  • 8. University of Toronto Department of Computer Science Challenge Question (For the experts only) Can this be a category? These are not identities © Steve Easterbrook, 1999 8
  • 9. University of Toronto Department of Computer Science Example category 1 • The category of sets (actually, “functions on sets”)  objects are sets  morphisms are functions between sets E.g. E.g. “best friend” Temperatures alice kurt sam bob eric stan What are earl measure in ºF measure the missing in ºC morphisms? “what best “likes for friend likes for breakfast” convert round breakfast” ºF to ºC tea coffee cast to real juice convert Integers Real water ºC to ºF numbers © Steve Easterbrook, 1999 9
  • 10. University of Toronto Department of Computer Science Example category 2 • Any partial order (P, ≤)  Objects are the elements of the partial order  Morphisms represent the ≤ relation.  Composition works because of the transitivity of ≤ E.g. The partial order n, formed from the first n natural numbers Here, n = 4 1 2 0 3 4 © Steve Easterbrook, 1999 10
  • 11. University of Toronto Department of Computer Science Outline (1) An introduction to categories  Definitions  Some simple examples (2) Motivations you  Why is category theory so useful in mathematics? are  Why is category theory relevant to software engineering? here (3) Enough category theory to get by  some important universal mapping properties  constructiveness and completeness (4) Applying category theory to specifications  Specification morphisms  Modular Specifications  Tools based on category theory © Steve Easterbrook, 1999 11
  • 12. University of Toronto Department of Computer Science So what? (for the mathematician) • Category theory is a convenient new language  It puts existing mathematical results into perspective  It gives an appreciation of the unity of modern mathematics • Reasons to study it  As a language, it offers economy of thought and expression  It reveals common ideas in (ostensibly) unrelated areas of mathematics  A single result proved in category theory generates many results in different areas of mathematics  Duality: for every categorical construct, there is a dual, formed by reversing all the morphisms.  Difficult problems in some areas of mathematics can be translated into (easier) problems in other areas (e.g. by using functors, which map from one category to another)  Makes precise some notions that were previously vague, e.g. ‘universality’, ‘naturality’ “To each species of mathematical structure, there corresponds a category, whose objects have that structure, and whose morphisms preserve it” - Goguen © Steve Easterbrook, 1999 12
  • 13. University of Toronto Department of Computer Science Some more definitions • Discrete category: Example:  All the morphisms are identities IDA IDB IDC • Connected category:  For every pair of objects, there is at least one morphism between them Example: original category: full sub-category: • Full sub-category:  A selection of objects from a category, functor together with all the morphisms between them. © Steve Easterbrook, 1999 13
  • 14. University of Toronto Department of Computer Science Inverses and Isomorphisms • Identity morphism:  For each object X, there is an identity morphism, IDX, such that: f  if f is a morphism with domain X, f  IDX = f X  if g is a morphism with codomain X, IDX  g = g g IDX • Inverse  g:B→A is an inverse for f:A→B if: f  g = IDB IDA IDB A f B g  f = IDA  If it exists, the inverse of f is denoted f-1 g  A morphism can have at most one inverse • Isomorphism  If f has an inverse, then it is said to be an isomorphism  If f:A→B is an isomorphism, then A and B are said to be isomorphic © Steve Easterbrook, 1999 14
  • 15. University of Toronto Department of Computer Science Example category 3 • Category of geometric shapes (Euclid’s category)  objects are polygonal figures drawn on a plane  morphisms are geometric translations of all the points on the polygon such that distances between points are preserved.  Objects that are isomorphic in this category are called ‘congruent figures’ p q' q r' P' r p q' q r' P' r © Steve Easterbrook, 1999 15
  • 16. University of Toronto Department of Computer Science Example category 4 • Category of algebras  Each object is a sort, with a binary function over that sort  Each morphism is a translation from one algebra to another, preserving the structure Works because E.g. e(a+b) = ea x eb E.g. exponentiation (!,+) ({odd, even},+) (" >0 ,!) doubling (!,+) ({pos, neg},!) Works because 2(a+b) = 2a + 2b © Steve Easterbrook, 1999 16
  • 17. University of Toronto Department of Computer Science Functors • Definition of functor:  Consider the category in which the objects are categories and the morphisms are mappings between categories. The morphisms in such a category are known as functors.  Given two categories, C and D, a functor F:C→D maps each morphism of C onto a morphism of D, such that: F preserves identities - i.e. if x is a C-identity, then F(x) is a D-identity F preserves composition - i.e F(f  g) = F(f)  F(g) • Example functor  From the category of topological spaces and continuous maps to the category of sets of points and functions between them © Steve Easterbrook, 1999 17
  • 18. University of Toronto Department of Computer Science So what? (for the software engineer) • Category theory is ideal for:  Reasoning about structure and the mappings that preserve structure  Abstracting away from details.  Automation (constructive methods exists for many useful categorical structures) • Applications of Category theory in software engineering  The category of algebraic specifications - category theory can be used to represent composition and refinement  The category of temporal logic specifications - category theory can be used to build modular specifications and decompose system properties across them  Automata theory - category theory offers a new way of comparing automata  Logic as a category - can represent a logical system as a category, and construct proofs using universal constructs in category theory (“diagram chasing”).  The category of logics - theorem provers in different logic systems can be hooked together through ‘institution morphisms’  Functional Programming - type theory, programming language semantics, etc © Steve Easterbrook, 1999 18
  • 19. University of Toronto Department of Computer Science Modularity in Software Engineering • Reasons for wanting modularization  Splitting the workload into workpieces “decompose the process”  Splitting the system into system pieces (components) Most of the category theory work has “decompose the implementation” addressed this one  Splitting the problem domain into separate concerns “decompose the requirements” • Resulting benefits  Information hiding  Compositional verification  Compositional refinement • Generalizable approaches:  Semi-formal - Viewpoints framework  Formal - Category Theory © Steve Easterbrook, 1999 19
  • 20. University of Toronto Department of Computer Science Building blocks • Need to express:  Modules (Interface + Structure + Behavior)  Module Interconnections  Operations on modules (e.g. compose two modules to form a third) interface interface structure structure interconnection behavior behavior new module © Steve Easterbrook, 1999 20
  • 21. University of Toronto Department of Computer Science Outline (1) An introduction to categories  Definitions  Some simple examples (2) Motivations  Why is category theory so useful in mathematics?  Why is category theory relevant to software engineering? (3) Enough category theory to get by you  some important universal mapping properties are  constructiveness and completeness here (4) Applying category theory to specifications  Specification morphisms  Modular Specifications  Tools based on category theory © Steve Easterbrook, 1999 21
  • 22. University of Toronto Department of Computer Science Enough Category Theory to get by... • Universal Constructs  General properties that apply to all objects in a category  Each construct has a dual, formed by reversing the morphisms  Examples: – initial and terminal objects These are the building – pushouts and pullbacks blocks for manipulating – colimits and limits specification – co-completeness and completeness structures • Higher order constructs  Can form a category of categories. The morphisms in this category are called functors.  Can form a category of functors. The morphisms in this category are called natural transformations.  Can consider inverses of functors (and hence isomorphic categories). Usually, a weaker notion than isomorphism is used, namely adjoint functors. © Steve Easterbrook, 1999 22
  • 23. University of Toronto Department of Computer Science Initial and Terminal Objects • Initial objects • Terminal objects An object S is said to be initial if for every other An object T is said to be terminal if for every object X there is exactly one morphism f:S→ other object X there is exactly one X morphism f:X→T • Examples • Example  The number 0 in this category:  Any singleton set in the category of sets 1 2 0 3  The empty set {} in the category of sets Uniqueness (up to isomorphism):  If T1 and T2 are both terminal objects, then there is exactly one morphism between them, and it is an isomorphism T2 IDT2 IDT1 T1 f  Why? Because there is exactly one morphism each of f:T1→T2, g:T2→T1, h:T1→T1, and j:T2→T2, where h and j are identities. g  Same applies to initial objects © Steve Easterbrook, 1999 23
  • 24. University of Toronto Department of Computer Science Pushouts and Pullbacks • Pushout • Pullback The pushout for two morphisms f:A→B and g:A The pullback for two morphisms f:A→C and g:B →C is an object D, and two morphisms d1:B →C is an object D, and two morphisms d1:D →D and d2:C→D, such that the square →A and d2:D→B, such that the square commutes… commutes… A f B D’ d1’ d’ d1 A g d1 d2’ d1’ D D d2 f d2 C d’ g d2’ B C D’ … and D is the initial object in the full … and D is the terminal object in the full subcategory of all such candidates D’ subcategory of all such candidates D’ (I.e. for all objects D’ with morphisms d1’ and d2’, there is a unique morphism from D to D’) © Steve Easterbrook, 1999 24
  • 25. University of Toronto Department of Computer Science Products and Coproducts • Coproduct • Product The coproduct of a family of objects Ai is an The product of a family of objects Ai is an object object P and a set of morphisms gi:Ai→P P and a set of morphisms gi:P→ Ai A1 A1 g1 P g1 P P’ P’ g2 g2 A2 A2 … and P is the initial object in the full … and P is the terminal object in the full subcategory of all such candidates P’ subcategory of all such candidates P’ • Coproduct vs. Pushout • Product vs. Pullback  Pushout is a universal property of any two  Pullback is a universal property of any two morphisms with a common domain morphisms with a common codomain  Coproduct is a universal property of any set  Product is a universal property of any set of of objects objects © Steve Easterbrook, 1999 25
  • 26. University of Toronto Department of Computer Science Example products • In the category of sets: • In the category of  constructed as the cartesian product geometric spaces: • In the category of logical propositions: p' a∧b b a∧b b In any given category, some products might not exist. It is useful to know a a whether they all do. © Steve Easterbrook, 1999 26
  • 27. University of Toronto Department of Computer Science Example co-product & pushout {a,b,c} {x,y} • Coproducts on the category of sets:  Constructed by taking the disjoint sum {a,b,c,x,y} A B k x b s • Pushouts on the category of y e sets:  Union of:  Pairs of elements from B and C that are the images of the same element in A C P  Plus all the remaining elements of B and C a bB s kB (sB, sC) e (eB, eC) a C © Steve Easterbrook, 1999 27
  • 28. University of Toronto Department of Computer Science Limits and Colimits • Colimits • Limits  initial objects, pushouts and coproducts are  terminal objects, pullbacks and products are all special cases of colimits. all special cases of limits.  Colimits are defined over any diagram  Limits are defined over any diagram For any diagram containing objects Ai and For any diagram containing objects Ai and morphisms ai, the colimit of this diagram is morphisms ai, the limit of this diagram is an an object L and a family of morphisms li, object L and a family of morphisms li, such such that for each li: Ai→L, lj: Aj→L, and that for each li:L→Ai, lj:L→Aj, and ax:Ai→ ax:Ai→Aj, then lj  ax = li Aj, then ax  li = lj Ai Ai ax li L ax li L L’ L’ lj lj Aj Aj … and L is the initial object in the full … and L is the terminal object in the full subcategory of all such candidates L’ subcategory of all such candidates L’ © Steve Easterbrook, 1999 28
  • 29. University of Toronto Department of Computer Science Completeness and Co-completeness • It is useful to know for a given category which universal constructs exist:  If a category has a terminal object and all pullbacks exist, then all finite limits exist – Hence it is finitely complete  If a category has an initial object and all pushouts exist, then all finite colimits exist – Hence it is finitely cocomplete • Proofs are usually constructive  I.e. give a method for computing all pullbacks (pushouts)  The constructive proof is the basis for automated generation of limits (colimits) • Obvious application  If your objects are specifications, then: – colimits are the integration of specifications – limits are the overlaps between specifications © Steve Easterbrook, 1999 29
  • 30. University of Toronto Department of Computer Science Outline (1) An introduction to categories  Definitions  Some simple examples (2) Motivations  Why is category theory so useful in mathematics?  Why is category theory relevant to software engineering? (3) Enough category theory to get by  some important universal mapping properties  constructiveness and completeness (4) Applying category theory to specifications you  Specification morphisms are  Modular Specifications here  Tools based on category theory © Steve Easterbrook, 1999 30
  • 31. University of Toronto Department of Computer Science (Recall...) Algebraic Specifications • A signature is a pair <S, Ω> where S is a set of sorts, and Ω is a set of operations over those sorts • A specification is a pair <Σ, Φ> describes algebras over the signature Σ that satisfy the axioms Φ Spec Container Signature sort Elem, Cont op empty: Cont op single: Elem -> Cont op merge: Cont, Cont -> Cont Body axiom merge(empty, e) = e axiom merge(e, empty) = e end-spec • Semantically:  We are modeling programs as algebras  A specification defines a class of algebras (programs) © Steve Easterbrook, 1999 31
  • 32. University of Toronto Department of Computer Science Specification morphisms • Specfication morphisms  Consider the category in which the objects are specifications  The morphisms translate the vocabulary of one specification into the vocabulary of another, preserving the (truth of the) axioms • Actually, there are two parts:  Signature morphism: a vocabulary mapping – maps the sorts and operations from one spec to another – must preserve the rank of each operation  Specification morphism: a signature morphism for which each axiom of the first specification maps to a theorem of the second specification • Proof obligations  There will be a bunch of proof obligations with each morphism, because of the need to check the axioms have been translated into theorems  A theorem prover comes in handy here. © Steve Easterbrook, 1999 32
  • 33. University of Toronto Department of Computer Science Example Spec Container sort Elem, Cont op empty: Cont These comprise the op single: Elem -> Cont signature morphism op merge: Cont, Cont -> Cont (Note each spec has it’s axiom merge(empty, e) = e axiom merge(e, empty) = e own namespace) end-spec Spec List sort Elem, List op null: List op single: Elem -> List op append: List, List -> List op head: List -> Elem op tail: List -> List axiom head(single(e)) = e These axioms must axiom tail(single(e)) = null be true down here axiom append(single(head(l)), tail(l)) = l end-spec (after translation) © Steve Easterbrook, 1999 33
  • 34. University of Toronto Department of Computer Science What do we gain? • Three simple horizontal composition primitives:  Translate: an isomorphic copy (just a renaming) – can test whether two specifications are equivalent  Import: include one specification in another (with renaming) – for extending specifications with additional services  Union (colimit): Compose two specifications to make a larger one – system integration • One simple vertical composition primitive:  refinement: mapping between a specification and its implementation – introduce detail, make design choices, add constraints, etc. – (may want to use different languages, e.g. refinement is a program) © Steve Easterbrook, 1999 34
  • 35. University of Toronto Department of Computer Science Example colimit (pushout) Spec List Spec Container sort Elem, List sort A, B op null: List op x: B op head: List -> Elem end-spec op tail: List -> List op cons: Elem, List -> List axiom head(cons(e, l)) = e axiom tail(cons(e, l)) = l axiom cons(head(l), tail(l)) = l axiom tail(cons(e, null)) = null end-spec Spec Container sort Elem, Cont op empty: Cont op single: Elem -> Cont op merge: Cont, Cont -> Cont axiom merge(empty, e) = e New spec is lists axiom merge(e, empty) = e with two new operations, end-spec “single” and “merge” © Steve Easterbrook, 1999 35
  • 36. University of Toronto Department of Computer Science (Recall…) Temporal Logic Specs • A signature is a pair <S, Ω> where S is a set of sorts, and Ω is a set of operations over those sorts • A specification is a 4-tuple <Σ, ATT, EV, AX> Σ is the signature These three comprise the ATT is a set of attributes vocabulary of the specification EV is a set of events AX is a set of axioms expressed in temporal logic Assume some usual temporal logic operators, e.g. • Semantically: always eventually  We are modeling programs as state machines  A specification describes a class of state machines that obey the axioms • (A minor complication)  Need to worry about locality of events © Steve Easterbrook, 1999 36
  • 37. University of Toronto Department of Computer Science Expressing modules • Want to generalize the notion of a module  Explicitly declare interfaces, with constraints on imported and exported resources  Hence the interface itself is a specification (actually 2 specifications) (Ehrig & Mahr use algebraic specs; Michel & Wiels use temporal logic specs) Parameters of Resources provided this module by this module parameters export (identifies IN-OUT parameters) import body Realization of the Resources to resources declared be provided to in the export part this module by (may contain others hidden sorts and operations) © Steve Easterbrook, 1999 37
  • 38. University of Toronto Department of Computer Science Examples • The approach works for many different kinds of module: E.g. function modules E.g. data types datalists; datalist data; lists equality; sorting equality; list opns; total order; function; ordering; implement’n implement’n lists; of sorting same of list list opns; function operations E.g. predicates E.g. state machines SORTED: common output data list->bool events events input state list(data) same events machine © Steve Easterbrook, 1999 38
  • 39. University of Toronto Department of Computer Science Composing modules E.g. import (“uses”): E.g. union (colimit): par par1 exp1 par0 exp0 imp0 bod0 imp1 bod1 par2 exp2 par1 exp1 par2 exp2 imp2 bod2 bod imp1 bod1 imp2 bod2 new module © Steve Easterbrook, 1999 39
  • 40. University of Toronto Department of Computer Science Advanced Topics • Logic engineering  Language translation – from one logic to another – from one specification language to another  Aim is to characterize logics as: – signatures (alphabet of non-logical symbols) – consequence relations  Then an institution morphism allows you to translate from one logic to another whilst preserving consequence • Natural Transformations of refinements  If a system specification is a category, and the relationship between the specification and its refinement is a functor…  …then the relationship between alternative refinements of the same specification is a natural transformation. © Steve Easterbrook, 1999 40
  • 41. University of Toronto Department of Computer Science (suggested) Future Research Issues • Compositional Verification in Practice  E.g. How much does the choice of modularization affect it  Which kinds of verification properties can be decomposed, and which cannot?  How do we deal systemic properties (e.g. fairness) • Evolving Specifications  How do you represent and reason about (non-correctness preserving) change?  How resilient is a modular specification to different kinds of change request • Dealing with inconsistencies  Specification morphisms only work if the specifications are consistent  Can we weaken the “correct by construction” approach? © Steve Easterbrook, 1999 41
  • 42. University of Toronto Department of Computer Science Summary • Category Theory basis  Simple definition: class of objects + class of arrows (morphisms)  A category must obey identity, composition and associativity rules • Category theory is useful in mathematics…  Unifying language for talking about many different mathematical structures  Provides precise definition for many abstract concepts (e.g. isomorphism)  Framework for comparing mathematical structures • Category theory is useful in software engineering  Modeling and reasoning about structure  Provides precise notions of modularity and composition  Specification morphisms relate vocabulary and properties of specifications  Constructive approach lends itself to automation © Steve Easterbrook, 1999 42
  • 43. University of Toronto Department of Computer Science Answer to challenge question: YES! (proof left as an exercise for the audience*) © Steve Easterbrook, 1999 43