formal methods 7 - category theory

Post on 02-Nov-2014

199 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

My course of Formal Methods at Santa Clara University, Winter 2014.

TRANSCRIPT

Formal Methods in Software

Lecture 7. Category Theory

Vlad PatryshevSCU2014

In This Lecture

• database example

• terminal object, initial object;

• products, unions

• equalizers

• pullbacks

Database Examplecreate type rels as enum (‘spouse’, ‘child’, ‘partner’);

create type jobs as enum (‘ceo’, ‘cto’, ‘eng’, ‘sales’);

create table Person (id bigint, name varchar(80), primary key (id));

create table Company (id bigint, name varchar(80), primary key (id));

create table Rel (from bigint, to bigint, kind rels,

constraint p1_fk foreign key (from references Person(id),

constraint p2_fk foreign key (yo references Person(id)

);

create table Job (company bigint, employee bigint, position jobs,

constraint c_fk foreign key (comp references Company(id),

constraint p_fk foreign key (pers references Person(id)

);

“Conceptual Model”

Person

id

name

Company

id

name

Job

position

company

employee

Relationship

kind

from

to

rels

{spouse, child, partner}

jobs

{ceo, cto, eng, sales}

“More Conceptual Model”

Person

name

Company

name

Job

Relationship

rels

{spouse, child, partner}

jobs

{ceo, cto, eng, sales}

‘from’

‘to’

‘kind’

‘employee’

‘position’

‘company’

“More Conceptual Model”

Person

name

Company

name

Job

Relationship

rels

{spouse, child, partner}

jobs

{ceo, cto, eng, sales}

‘from’

‘to’

‘kind’

‘employee’

‘position’

‘company’

It’s a category!

Pet Databasecreate type kind as enum (‘cat’, ‘dog’, ‘fly’, ‘hamster’, ‘e.coli’);

create table Person (id bigint, name varchar(80), pet bigint,

primary key (id),

constraint pet_fk foreign key (pet references Animal(id));

create table Animal (id bigint, kind kind, name varchar(80), owner bigint,

primary key (id),

constraint owner_pk foreign key owner references Person(id));

“More Conceptual Model”

Person

name

Animal

kind

{cat, dog, fly, hamster, e.coli}

‘owner’

‘pet’

‘kind’

Where’s composition?

kind(pet(owner(pet(“John”)))

select kind from Animal a where a.owner in (select id from Person where pet in (select id from Animal where owner in (select id from person where name=’John’)));

Initial Object in a Category

Definition. Given a category C, Initial Object is such an object 0 that there is a unique function iX:0 → X for any given X. (this is its “universal property”)

Note that if we take X=0, we see that there is just one function 0 → 0. Can you name a set (or two) with only one function S→S?

And what if there’s more than one such an object? Say 01 and 02, both have this interesting feature. Then, for 01, we have a unique a:01 → 02; and similarly we have a unique b:02 → 01. Composing a and b either way, we get an identity; so they are isomorphisms.

Initial object is unique up to an isomorphism.

Examples of Initial Objects

• Sets: ∅, and it is unique (by sets axioms)

• Monoids: {0} - all “such monoids” are isomorphic

• Categories: empty category (whether there’s a plurality of them…)

• In this category of three objects we see no initial object:

• In this category c is initial object:

• How about more than one

initial object?

They are

isomorphic!

Terminal Object in a Category

Definition. Given a category C, Terminal Object is such an object 1 that there is a unique function uX:X → 1 for any given X. (this is its “universal property”)

Note that if we take X=1, we see that there is just one function 1 → 1, same as with 0.

And what if there’s more than one such an object? Say 11 and 12, both have this interesting feature. Then, for 11, we have a unique a:11 → 12; and similarly we have a unique b:12 → 11. Composing a and b either way, we get an identity; so they are isomorphisms.

Terminal object, like initial one, is unique up to an isomorphism.

Examples of Terminal Objects

• Sets: any singleton {x} is terminal. They are not equal, but are isomorphic.

• Monoids: {0} - all “such monoids” are isomorphic

• Categories: empty category (whether there’s a plurality of them…)

• In this category of three objects we see no terminal object:

• In this category c is terminal object:

Initial and Terminal Object in our DB

terminal

Cartesian Product

Definition. Given a category C, and two objects in it, X and Y, their Cartesian Product is such an object Z=X×Y, together with two functions, pX:Z→X and pY:Z→Y, that for any pair f:A→X and g:A→Y, f=pX h∘ and g=pY h∘ for some unique h. (this is its “universal property”)

Cartesian product is unique up to an isomorphism. (proof?)

Examples of Cartesian Products

• Sets: AxB = {(a,b)|a A,b B}∈ ∈ , and it is unique (by sets axioms)

• Databases: select * from A,B;

• Good programming languages, e.g. Scala: (A,B)

val intWithString: (Int, String) = (42, “Hello 42”)

• In a monoid? We have just one object!

• In a poset? It’s min(a,b)

Disjoint Union (dual to Product)

Definition. Given a category C, and two objects in it, X and Y, their Disjoint Union is such an object Z=X+Y, together with two functions, iX:X→Z and iY:Y→Z, that for any pair f:X→A and g:Y→A, f=h i∘ X and g=h i∘ Y for some unique h. (this is its “universal property”)

Disjoint union is unique up to an isomorphism. (proof?)

Examples of Disjoint Unions

• Sets: A+B = A B∪ , and it is unique (by sets axioms)

• Databases: select * from A union B;

• Good programming languages, e.g. Scala: Either[A,B]

val intOrString: Either[Int, String] = Left(42)// Right(“Hello 42”)

• In a poset? It’s max(a,b)

Equalizers

Definition. Given a category C, two objects in it, X and Y, and two functions, f,g:X→Y, their Equalizer is such an object E=Eq(f,g), together with a function eq:E→X, such that that f eq=g eq∘ ∘ for any m:O→X, m=eq u∘ for some unique u. (this is its “universal property”)

An equalizer is unique up to an isomorphism. (proof?)

Pullbacks

Definition. Given a category C, objects, X, Y and Z, and two functions, f:X→Z and g:X→Z, their Pullback is such an object X×ZY, together with functions pX:X×ZY→X and pY:X×ZY→Y, such that g p∘ Y = f p∘ X, and for any pair x:U→X, y:U→Y, x=pX h∘ and y=pY h∘ for some unique h. (this is its “universal property”)

A pullback is unique up to an isomorphism. (proof?)

Examples of Pullbacks

• Sets: {(x,y)|x X,y∈ Y,∈ f(x)=g(y)}

• Databases: select * from A, B where A.f=B.g;

e.g. select * from Person A, Person B where A.pet=B.pet;

• In a poset? Same as min.

• Cartesian products are pullbacks.

Referenceshttp://www.amazon.com/Category-Computer-Scientists-Foundations-Computing/dp/0262660717

Wikipedia

top related