<<

A framework for constructive theory in computer

Sebastian Posur, Kamal Saleh, Fabian Zickgraf

University of Siegen

July 15, 2019

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 1 / 65 Part I

Constructive

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 2 / 65 of two numbers:

Abstraction of language

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 3 / 65 Abstraction of language

Addition of two numbers: Data type: int Data type: float

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 3 / 65 Abstraction of language

Addition of two numbers: Assembly Data type: int Data type: float

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 3 / 65 Abstraction of language

Addition of two numbers: Assembly Data type: int Data type: float addi: movl %edi, -4(%rsp) movl %esi, -8(%rsp) movl -4(%rsp), %esi addl -8(%rsp), %esi movl %esi, %eax ret

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 3 / 65 Abstraction of language

Addition of two numbers: Assembly Data type: int Data type: float addi: addf: movl %edi, -4(%rsp) movss %xmm0, -4(%rsp) movl %esi, -8(%rsp) movss %xmm1, -8(%rsp) movl -4(%rsp), %esi movss -4(%rsp), %xmm0 addl -8(%rsp), %esi addss -8(%rsp), %xmm0 movl %esi, %eax ret ret

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 3 / 65 Abstraction of language

Addition of two numbers: C Data type: int Data type: float

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 3 / 65 Abstraction of language

Addition of two numbers: C Data type: int Data type: float

int addi( int a, int b ) { return a + b; }

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 3 / 65 Abstraction of language

Addition of two numbers: C Data type: int Data type: float

int addi( int a, float addf( float a, int b ) float b ) { { return a + b; return a + b; } }

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 3 / 65 Abstraction of language

Addition of two numbers: GAP or Julia Data type: int Data type: float

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 3 / 65 Abstraction of language

Addition of two numbers: GAP or Julia Data type: int Data type: float

function( a, b ) return a + b; end;

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 3 / 65 Abstraction of language

Addition of two numbers: GAP or Julia Data type: int Data type: float

function( a, b ) function( a, b ) return a + b; return a + b; end; end;

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 3 / 65 High language leads to generic code!

Abstraction of language

Addition of two numbers: GAP or Julia

Data type: int, float function( a, b ) return a + b; end;

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 3 / 65 Abstraction of language

Addition of two numbers: GAP or Julia

Data type: int, float function( a, b ) return a + b; end;

High language leads to generic code!

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 3 / 65 Vector spaces Ideals of Z

hv1, v2i , hw1, w2i ≤ V : hxi, hyi ≤ Z : Solution of Euclidean algorithm:

x1v1 + x2v2 hlcm (x, y)i

=y1w1 + y2w2

Generic algorithm for both cases? Category theory!

Abstraction of language

Computing the intersection of two subobjects

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 4 / 65 Ideals of Z hxi, hyi ≤ Z : Solution of Euclidean algorithm:

x1v1 + x2v2 hlcm (x, y)i

=y1w1 + y2w2

Generic algorithm for both cases? Category theory!

Abstraction of language

Computing the intersection of two subobjects

Vector spaces

hv1, v2i , hw1, w2i ≤ V :

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 4 / 65 Ideals of Z hxi, hyi ≤ Z : Euclidean algorithm:

hlcm (x, y)i

Generic algorithm for both cases? Category theory!

Abstraction of language

Computing the intersection of two subobjects

Vector spaces

hv1, v2i , hw1, w2i ≤ V : Solution of

x1v1 + x2v2

=y1w1 + y2w2

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 4 / 65 hxi, hyi ≤ Z : Euclidean algorithm:

hlcm (x, y)i

Generic algorithm for both cases? Category theory!

Abstraction of language

Computing the intersection of two subobjects

Vector spaces Ideals of Z

hv1, v2i , hw1, w2i ≤ V : Solution of

x1v1 + x2v2

=y1w1 + y2w2

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 4 / 65 Euclidean algorithm:

hlcm (x, y)i

Generic algorithm for both cases? Category theory!

Abstraction of language

Computing the intersection of two subobjects

Vector spaces Ideals of Z

hv1, v2i , hw1, w2i ≤ V : hxi, hyi ≤ Z : Solution of

x1v1 + x2v2

=y1w1 + y2w2

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 4 / 65 Generic algorithm for both cases? Category theory!

Abstraction of language

Computing the intersection of two subobjects

Vector spaces Ideals of Z

hv1, v2i , hw1, w2i ≤ V : hxi, hyi ≤ Z : Solution of Euclidean algorithm:

x1v1 + x2v2 hlcm (x, y)i

=y1w1 + y2w2

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 4 / 65 Category theory!

Abstraction of language

Computing the intersection of two subobjects

Vector spaces Ideals of Z

hv1, v2i , hw1, w2i ≤ V : hxi, hyi ≤ Z : Solution of Euclidean algorithm:

x1v1 + x2v2 hlcm (x, y)i

=y1w1 + y2w2

Generic algorithm for both cases?

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 4 / 65 Abstraction of language

Computing the intersection of two subobjects

Vector spaces Ideals of Z

hv1, v2i , hw1, w2i ≤ V : hxi, hyi ≤ Z : Solution of Euclidean algorithm:

x1v1 + x2v2 hlcm (x, y)i

=y1w1 + y2w2

Generic algorithm for both cases? Category theory!

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 4 / 65 abstracts mathematical structures, defines a language to formulate theorems and algorithms for different structures at the same time.

CAP - Categories, Algorithms, Programming

CAP implements a categorical programming language.

Category theory as programming language

Category theory

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 5 / 65 defines a language to formulate theorems and algorithms for different structures at the same time.

CAP - Categories, Algorithms, Programming

CAP implements a categorical programming language.

Category theory as programming language

Category theory abstracts mathematical structures,

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 5 / 65 CAP - Categories, Algorithms, Programming

CAP implements a categorical programming language.

Category theory as programming language

Category theory abstracts mathematical structures, defines a language to formulate theorems and algorithms for different structures at the same time.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 5 / 65 CAP implements a categorical programming language.

Category theory as programming language

Category theory abstracts mathematical structures, defines a language to formulate theorems and algorithms for different structures at the same time.

CAP - Categories, Algorithms, Programming

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 5 / 65 Category theory as programming language

Category theory abstracts mathematical structures, defines a language to formulate theorems and algorithms for different structures at the same time.

CAP - Categories, Algorithms, Programming

CAP implements a categorical programming language.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 5 / 65 (assoc.)

HomC(A, B)

· : HomC(A, B) × HomC(B, C) → HomC(A, C)

Neutral elements: idA ∈ HomC(A, A)

A B C

ObjC

Categories

Definition A category C contains the following data:

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 6 / 65 (assoc.)

HomC(A, B)

· : HomC(A, B) × HomC(B, C) → HomC(A, C)

Neutral elements: idA ∈ HomC(A, A)

Categories

Definition A category C contains the following data:

ObjC

A B C

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 6 / 65 (assoc.)

· : HomC(A, B) × HomC(B, C) → HomC(A, C)

Neutral elements: idA ∈ HomC(A, A)

Categories

Definition A category C contains the following data:

ObjC HomC(A, B)

A B C

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 6 / 65 (assoc.)

· : HomC(A, B) × HomC(B, C) → HomC(A, C)

Neutral elements: idA ∈ HomC(A, A)

Categories

Definition A category C contains the following data:

ObjC HomC(A, B)

A B C

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 6 / 65 (assoc.)

· : HomC(A, B) × HomC(B, C) → HomC(A, C)

Neutral elements: idA ∈ HomC(A, A)

Categories

Definition A category C contains the following data:

ObjC HomC(A, B)

A B C

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 6 / 65 Neutral elements: idA ∈ HomC(A, A)

Categories

Definition A category C contains the following data:

ObjC HomC(A, B)

· : HomC(A, B) × HomC(B, C) → HomC(A, C) (assoc.)

A B C

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 6 / 65 Neutral elements: idA ∈ HomC(A, A)

Categories

Definition A category C contains the following data:

ObjC HomC(A, B)

· : HomC(A, B) × HomC(B, C) → HomC(A, C) (assoc.)

A B C

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 6 / 65 Categories

Definition A category C contains the following data:

ObjC HomC(A, B)

· : HomC(A, B) × HomC(B, C) → HomC(A, C) (assoc.)

Neutral elements: idA ∈ HomC(A, A)

A B C

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 6 / 65 Categories

Definition A category C contains the following data:

ObjC HomC(A, B)

· : HomC(A, B) × HomC(B, C) → HomC(A, C) (assoc.)

Neutral elements: idA ∈ HomC(A, A)

A B C

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 6 / 65 Categories

Definition A category C contains the following data:

ObjC HomC(A, B)

· : HomC(A, B) × HomC(B, C) → HomC(A, C) (assoc.)

Neutral elements: idA ∈ HomC(A, A)

A B C

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 6 / 65 '

(computerfriendly model)

We denote this category by Rowsk .

Example: k-vec Obj := finite dimensional k-vector spaces Hom(V , W ) := k-linear maps V → W

Example: matrices

Obj := N0 Hom(n, m) := k n×m

Finite dimensional vector spaces

Let k be a field (e.g., k = Q).

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 7 / 65 '

(computerfriendly model)

We denote this category by Rowsk .

Hom(V , W ) := k-linear maps V → W

Example: matrices

Obj := N0 Hom(n, m) := k n×m

Finite dimensional vector spaces

Let k be a field (e.g., k = Q). Example: k-vec Obj := finite dimensional k-vector spaces

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 7 / 65 (computerfriendly model)

We denote this category by Rowsk .

'

Example: matrices

Obj := N0 Hom(n, m) := k n×m

Finite dimensional vector spaces

Let k be a field (e.g., k = Q). Example: k-vec Obj := finite dimensional k-vector spaces Hom(V , W ) := k-linear maps V → W

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 7 / 65 We denote this category by Rowsk .

'

(computerfriendly model)

Hom(n, m) := k n×m

Finite dimensional vector spaces

Let k be a field (e.g., k = Q). Example: k-vec Obj := finite dimensional k-vector spaces Hom(V , W ) := k-linear maps V → W

Example: matrices

Obj := N0

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 7 / 65 '

(computerfriendly model)

We denote this category by Rowsk .

Finite dimensional vector spaces

Let k be a field (e.g., k = Q). Example: k-vec Obj := finite dimensional k-vector spaces Hom(V , W ) := k-linear maps V → W

Example: matrices

Obj := N0 Hom(n, m) := k n×m

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 7 / 65 (computerfriendly model)

We denote this category by Rowsk .

Finite dimensional vector spaces

Let k be a field (e.g., k = Q). Example: k-vec Obj := finite dimensional k-vector spaces Hom(V , W ) := k-linear maps V → W '

Example: matrices

Obj := N0 Hom(n, m) := k n×m

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 7 / 65 We denote this category by Rowsk .

Finite dimensional vector spaces

Let k be a field (e.g., k = Q). Example: k-vec Obj := finite dimensional k-vector spaces Hom(V , W ) := k-linear maps V → W '

Example: matrices (computerfriendly model)

Obj := N0 Hom(n, m) := k n×m

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 7 / 65 Finite dimensional vector spaces

Let k be a field (e.g., k = Q). Example: k-vec Obj := finite dimensional k-vector spaces Hom(V , W ) := k-linear maps V → W '

Example: matrices (computerfriendly model)

Obj := N0 Hom(n, m) := k n×m

We denote this category by Rowsk .

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 7 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

A category becomes computable through data structures for objects and , algorithms to compute the composition of morphisms and identity morphisms of objects.

Example: matrices

Computable categories

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

data structures for objects and morphisms, algorithms to compute the composition of morphisms and identity morphisms of objects.

Example: matrices

Computable categories

A category becomes computable through

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

algorithms to compute the composition of morphisms and identity morphisms of objects.

Example: matrices

Computable categories

A category becomes computable through data structures for objects and morphisms,

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

and identity morphisms of objects.

Example: matrices

Computable categories

A category becomes computable through data structures for objects and morphisms, algorithms to compute the composition of morphisms

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

Example: matrices

Computable categories

A category becomes computable through data structures for objects and morphisms, algorithms to compute the composition of morphisms and identity morphisms of objects.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

Computable categories

A category becomes computable through data structures for objects and morphisms, algorithms to compute the composition of morphisms and identity morphisms of objects.

Example: matrices

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

Computable categories

A category becomes computable through data structures for objects and morphisms, algorithms to compute the composition of morphisms and identity morphisms of objects.

Example: matrices

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

Computable categories

A category becomes computable through data structures for objects and morphisms, algorithms to compute the composition of morphisms and identity morphisms of objects.

Example: matrices

1 2 1

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

Computable categories

A category becomes computable through data structures for objects and morphisms, algorithms to compute the composition of morphisms and identity morphisms of objects.

Example: matrices

1 2 1

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

Computable categories

A category becomes computable through data structures for objects and morphisms, algorithms to compute the composition of morphisms and identity morphisms of objects.

Example: matrices

1 2 1 1 2   3  4

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

Computable categories

A category becomes computable through data structures for objects and morphisms, algorithms to compute the composition of morphisms and identity morphisms of objects.

Example: matrices

1 2 1 1 2   3  4

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

Computable categories

A category becomes computable through data structures for objects and morphisms, algorithms to compute the composition of morphisms and identity morphisms of objects.

Example: matrices

 3  1 2  · = (11) 4

1 2 1 1 2   3  4

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

Computable categories

A category becomes computable through data structures for objects and morphisms, algorithms to compute the composition of morphisms and identity morphisms of objects.

Example: matrices

 3  1 2  · = (11) 4

1 2 1 1 2   3  4

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

Computable categories

A category becomes computable through data structures for objects and morphisms, algorithms to compute the composition of morphisms and identity morphisms of objects.

Example: matrices

 3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65  3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

Computable categories

A category becomes computable through data structures for objects and morphisms, algorithms to compute the composition of morphisms and identity morphisms of objects.

Example: matrices

 3  1 2  · = (11) 4

1 2 1 1 2   3  (1)  1 0  4 (1) 0 1

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 8 / 65 modR

with R-linear maps as morphisms.

Computerfriendly model?

Category of finitely presented modules

Let R be a . Finitely presented R-modules form a category

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 9 / 65 with R-linear maps as morphisms.

Computerfriendly model?

Category of finitely presented modules

Let R be a ring. Finitely presented R-modules form a category

modR

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 9 / 65 Computerfriendly model?

Category of finitely presented modules

Let R be a ring. Finitely presented R-modules form a category

modR with R-linear maps as morphisms.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 9 / 65 Category of finitely presented modules

Let R be a ring. Finitely presented R-modules form a category

modR with R-linear maps as morphisms.

Computerfriendly model?

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 9 / 65 m×n R1×n Idea: a M ∈ R can represent the hMi .

Objects ] Obj := Rm×n fpresR m,n∈N0

Data structures: objects

× Z1 3  1 2 3  hRows of 4 5 6 i 7 8 9

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 10 / 65 m×n R1×n Idea: a matrix M ∈ R can represent the module hMi .

Objects ] Obj := Rm×n fpresR m,n∈N0

Data structures: objects

× Z1 3  1 2 3  h 4 5 6 i 7 8 9

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 10 / 65 m×n R1×n Idea: a matrix M ∈ R can represent the module hMi .

Objects ] Obj := Rm×n fpresR m,n∈N0

Data structures: objects

× Z1 3  1 2 3  h 4 5 6 i 7 8 9

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 10 / 65 Objects ] Obj := Rm×n fpresR m,n∈N0

Data structures: objects

× Z1 3  1 2 3  h 4 5 6 i 7 8 9

m×n R1×n Idea: a matrix M ∈ R can represent the module hMi .

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 10 / 65 Data structures: objects

× Z1 3  1 2 3  h 4 5 6 i 7 8 9

m×n R1×n Idea: a matrix M ∈ R can represent the module hMi .

Objects ] Obj := Rm×n fpresR m,n∈N0

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 10 / 65   r1 .  .  rn

ei 7−→ ri

0 A ∈ Rn×n such that

0 iff ∃X ∈ Rn×m : A = X · M0.

(for R = Z, use Smith normal forms)

0 R1×n R1×n hMi hM0i

Hom ( , 0) := fpresR M M

A defines the 0

algorithmic requirements for R

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65   r1 .  .  rn

0 A ∈ Rn×n such that

0 iff ∃X ∈ Rn×m : A = X · M0.

(for R = Z, use Smith normal forms)

ei 7−→ ri

Hom ( , 0) := fpresR M M

A defines the 0 morphism

algorithmic requirements for R

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .

0 R1×n R1×n hMi hM0i

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 0 A ∈ Rn×n such that

0 iff ∃X ∈ Rn×m : A = X · M0.

(for R = Z, use Smith normal forms)

  r1 .  .  rn

ei 7−→ ri

Hom ( , 0) := fpresR M M

A defines the 0 morphism

algorithmic requirements for R

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .

0 R1×n R1×n hMi hM0i

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 0 A ∈ Rn×n such that

0 iff ∃X ∈ Rn×m : A = X · M0.

(for R = Z, use Smith normal forms)

  r1 .  .  rn

7−→ ri

Hom ( , 0) := fpresR M M

A defines the 0 morphism

algorithmic requirements for R

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .

0 R1×n R1×n hMi hM0i

ei

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 0 A ∈ Rn×n such that

0 iff ∃X ∈ Rn×m : A = X · M0.

(for R = Z, use Smith normal forms)

  r1 .  .  rn

Hom ( , 0) := fpresR M M

A defines the 0 morphism

algorithmic requirements for R

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .

0 R1×n R1×n hMi hM0i

ei 7−→ ri

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 0 A ∈ Rn×n such that

0 iff ∃X ∈ Rn×m : A = X · M0.

(for R = Z, use Smith normal forms)

Hom ( , 0) := fpresR M M

A defines the 0 morphism

algorithmic requirements for R

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .   r1 .  .  rn 0 R1×n R1×n hMi hM0i

ei 7−→ ri

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 0 iff ∃X ∈ Rn×m : A = X · M0.

(for R = Z, use Smith normal forms)

0 A ∈ Rn×n such that

A defines the 0 morphism

algorithmic requirements for R

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .   r1 .  .  rn 0 R1×n R1×n hMi hM0i

ei 7−→ ri

Hom ( , 0) := fpresR M M

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 0 iff ∃X ∈ Rn×m : A = X · M0.

(for R = Z, use Smith normal forms)

such that

A defines the 0 morphism

algorithmic requirements for R

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .   r1 . A := .  rn 0 R1×n R1×n hMi hM0i

ei 7−→ ri

Hom ( , 0) := fpresR M M 0 A ∈ Rn×n

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 0 iff ∃X ∈ Rn×m : A = X · M0.

(for R = Z, use Smith normal forms)

A defines the 0 morphism

algorithmic requirements for R

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .   r1 . A := .  rn 0 R1×n R1×n hMi hM0i

ei 7−→ ri

Hom ( , 0) := fpresR M M 0 A ∈ Rn×n such that

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 0 iff ∃X ∈ Rn×m : A = X · M0.

(for R = Z, use Smith normal forms)

A defines the 0 morphism

algorithmic requirements for R

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .   r1 . A := .  rn 0 R1×n R1×n hMi hM0i

ei 7−→ ri

Hom ( , 0) := fpresR M M 0  0 A ∈ Rn×n such that Rows of M · A ⊆ hM i

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 0 iff ∃X ∈ Rn×m : A = X · M0.

(for R = Z, use Smith normal forms)

A defines the 0 morphism

algorithmic requirements for R

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .   r1 . A := .  rn 0 R1×n R1×n hMi hM0i

ei 7−→ ri

Hom ( , 0) := fpresR M M 0 0 A ∈ Rn×n such that ∃X ∈ Rm×m : M · A = X · M0

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 (for R = Z, use Smith normal forms)

0 iff ∃X ∈ Rn×m : A = X · M0.

algorithmic requirements for R

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .   r1 . A := .  rn 0 R1×n R1×n hMi hM0i

ei 7−→ ri

Hom ( , 0) := fpresR M M 0 0 A ∈ Rn×n such that ∃X ∈ Rm×m : M · A = X · M0

A defines the 0 morphism

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 (for R = Z, use Smith normal forms)

algorithmic requirements for R

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .   r1 . A := .  rn 0 R1×n R1×n hMi hM0i

ei 7−→ ri

Hom ( , 0) := fpresR M M 0 0 A ∈ Rn×n such that ∃X ∈ Rm×m : M · A = X · M0

0 A defines the 0 morphism iff ∃X ∈ Rn×m : A = X · M0.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 (for R = Z, use Smith normal forms)

algorithmic requirements for R

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .   r1 . A := .  rn 0 R1×n R1×n hMi hM0i

ei 7−→ ri

Hom ( , 0) := fpresR M M 0 0 A ∈ Rn×n such that ∃X ∈ Rm×m : M · A = X · M0

0 A defines the 0 morphism iff ∃X ∈ Rn×m : A = X · M0.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 (for R = Z, use Smith normal forms)

Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .   r1 . A := .  rn 0 R1×n R1×n hMi hM0i

ei 7−→ ri

Hom ( , 0) := fpresR M M 0 0 A ∈ Rn×n such that ∃X ∈ Rm×m : M · A = X · M0

0 A defines the 0 morphism iff ∃X ∈ Rn×m : A = X · M0.

algorithmic requirements for R Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 Data structures: morphisms

0 0 Given: M ∈ Rm×n and M0 ∈ Rm ×n .   r1 . A := .  rn 0 R1×n R1×n hMi hM0i

ei 7−→ ri

Hom ( , 0) := fpresR M M 0 0 A ∈ Rn×n such that ∃X ∈ Rm×m : M · A = X · M0

0 A defines the 0 morphism iff ∃X ∈ Rn×m : A = X · M0.

algorithmic requirements for R (for R = Z, use Smith normal forms) Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 11 / 65 Some categorical operations in abelian categories ⊕ : Obj × Obj → Obj +, − : Hom(A, B) × Hom(A, B) → Hom(A, B) ker : Hom(A, B) → Obj ...

The language of category theory

k-vec and modZ are examples of abelian categories.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 12 / 65 ⊕ : Obj × Obj → Obj +, − : Hom(A, B) × Hom(A, B) → Hom(A, B) ker : Hom(A, B) → Obj ...

The language of category theory

k-vec and modZ are examples of abelian categories. Some categorical operations in abelian categories

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 12 / 65 +, − : Hom(A, B) × Hom(A, B) → Hom(A, B) ker : Hom(A, B) → Obj ...

The language of category theory

k-vec and modZ are examples of abelian categories. Some categorical operations in abelian categories ⊕ : Obj × Obj → Obj

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 12 / 65 ker : Hom(A, B) → Obj ...

The language of category theory

k-vec and modZ are examples of abelian categories. Some categorical operations in abelian categories ⊕ : Obj × Obj → Obj +, − : Hom(A, B) × Hom(A, B) → Hom(A, B)

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 12 / 65 ...

The language of category theory

k-vec and modZ are examples of abelian categories. Some categorical operations in abelian categories ⊕ : Obj × Obj → Obj +, − : Hom(A, B) × Hom(A, B) → Hom(A, B) ker : Hom(A, B) → Obj

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 12 / 65 The language of category theory

k-vec and modZ are examples of abelian categories. Some categorical operations in abelian categories ⊕ : Obj × Obj → Obj +, − : Hom(A, B) × Hom(A, B) → Hom(A, B) ker : Hom(A, B) → Obj ...

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 12 / 65 The language of category theory

k-vec and modZ are examples of abelian categories. Some categorical operations in abelian categories ⊕ : Obj × Obj → Obj +, − : Hom(A, B) × Hom(A, B) → Hom(A, B) ker : Hom(A, B) → Obj ...

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 12 / 65 To fully describe the of ϕ . . .

... one needs an object KernelObject(ϕ), its embedding κ = KernelEmbedding(ϕ), and for every test morphism τ a unique morphism λ = KernelLift(ϕ, τ), such that

0 KernelObject(ϕ) κ λ  τ

T 0

ϕ A B

Implementation of the kernel

Let ϕ ∈ Hom(A, B).

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 13 / 65 To fully describe the kernel of ϕ . . .

... one needs an object KernelObject(ϕ), its embedding κ = KernelEmbedding(ϕ), and for every test morphism τ a unique morphism λ = KernelLift(ϕ, τ), such that

0 KernelObject(ϕ) κ λ  τ

T 0

Implementation of the kernel

Let ϕ ∈ Hom(A, B).

ϕ A B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 13 / 65 ... one needs an object KernelObject(ϕ), its embedding κ = KernelEmbedding(ϕ), and for every test morphism τ a unique morphism λ = KernelLift(ϕ, τ), such that

0 KernelObject(ϕ) κ λ  τ

T 0

Implementation of the kernel

Let ϕ ∈ Hom(A, B). To fully describe the kernel of ϕ . . .

ϕ A B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 13 / 65 its embedding κ = KernelEmbedding(ϕ), and for every test morphism τ a unique morphism λ = KernelLift(ϕ, τ), such that

0

κ λ  τ

T 0

Implementation of the kernel

Let ϕ ∈ Hom(A, B). To fully describe the kernel of ϕ . . .

... one needs an object KernelObject(ϕ),

KernelObject(ϕ) ϕ A B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 13 / 65 and for every test morphism τ a unique morphism λ = KernelLift(ϕ, τ), such that

0

λ  τ

T 0

Implementation of the kernel

Let ϕ ∈ Hom(A, B). To fully describe the kernel of ϕ . . .

... one needs an object KernelObject(ϕ), its embedding κ = KernelEmbedding(ϕ),

KernelObject(ϕ) κ ϕ A B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 13 / 65 a unique morphism λ = KernelLift(ϕ, τ), such that

λ 

Implementation of the kernel

Let ϕ ∈ Hom(A, B). To fully describe the kernel of ϕ . . .

... one needs an object KernelObject(ϕ), its embedding κ = KernelEmbedding(ϕ), and for every test morphism τ

0 KernelObject(ϕ) κ ϕ A B τ

T 0

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 13 / 65 , such that



Implementation of the kernel

Let ϕ ∈ Hom(A, B). To fully describe the kernel of ϕ . . .

... one needs an object KernelObject(ϕ), its embedding κ = KernelEmbedding(ϕ), and for every test morphism τ a unique morphism λ = KernelLift(ϕ, τ)

0 KernelObject(ϕ) κ ϕ λ A B τ

T 0

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 13 / 65 Implementation of the kernel

Let ϕ ∈ Hom(A, B). To fully describe the kernel of ϕ . . .

... one needs an object KernelObject(ϕ), its embedding κ = KernelEmbedding(ϕ), and for every test morphism τ a unique morphism λ = KernelLift(ϕ, τ), such that

0 KernelObject(ϕ) κ ϕ λ  A B τ

T 0

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 13 / 65 KernelObject(ϕ) κ λ τ

T

Compute KernelObject(ϕ) as A − rank(ϕ) κ by solving X · ϕ = 0 λ by solving X · κ = τ

ϕ A B

Implementation of the kernel: matrices

m×n Obj := N0, Hom (m, n) := Q

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 14 / 65 KernelObject(ϕ) κ λ τ

T

Compute KernelObject(ϕ) as A − rank(ϕ) κ by solving X · ϕ = 0 λ by solving X · κ = τ

Implementation of the kernel: matrices

m×n Obj := N0, Hom (m, n) := Q

ϕ A B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 14 / 65 κ λ τ

T

Compute KernelObject(ϕ) as A − rank(ϕ) κ by solving X · ϕ = 0 λ by solving X · κ = τ

Implementation of the kernel: matrices

m×n Obj := N0, Hom (m, n) := Q

KernelObject(ϕ) ϕ A B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 14 / 65 κ λ τ

T

κ by solving X · ϕ = 0 λ by solving X · κ = τ

Implementation of the kernel: matrices

m×n Obj := N0, Hom (m, n) := Q

KernelObject(ϕ) ϕ A B

Compute KernelObject(ϕ) as A − rank(ϕ)

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 14 / 65 λ τ

T

κ by solving X · ϕ = 0 λ by solving X · κ = τ

Implementation of the kernel: matrices

m×n Obj := N0, Hom (m, n) := Q

KernelObject(ϕ) κ ϕ A B

Compute KernelObject(ϕ) as A − rank(ϕ)

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 14 / 65 λ τ

T

λ by solving X · κ = τ

Implementation of the kernel: matrices

m×n Obj := N0, Hom (m, n) := Q

KernelObject(ϕ) κ ϕ A B

Compute KernelObject(ϕ) as A − rank(ϕ) κ by solving X · ϕ = 0

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 14 / 65 λ

λ by solving X · κ = τ

Implementation of the kernel: matrices

m×n Obj := N0, Hom (m, n) := Q

KernelObject(ϕ) κ ϕ A B τ

T

Compute KernelObject(ϕ) as A − rank(ϕ) κ by solving X · ϕ = 0

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 14 / 65 λ by solving X · κ = τ

Implementation of the kernel: matrices

m×n Obj := N0, Hom (m, n) := Q

KernelObject(ϕ) κ ϕ λ A B τ

T

Compute KernelObject(ϕ) as A − rank(ϕ) κ by solving X · ϕ = 0

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 14 / 65 Implementation of the kernel: matrices

m×n Obj := N0, Hom (m, n) := Q

KernelObject(ϕ) κ ϕ λ A B τ

T

Compute KernelObject(ϕ) as A − rank(ϕ) κ by solving X · ϕ = 0 λ by solving X · κ = τ

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 14 / 65 Given a diagram of abelian groups:

ker A0 B0 α ker A B

The language of category theory

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 15 / 65 ker A0 B0 α ker A B

The language of category theory

Given a diagram of abelian groups:

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 15 / 65 The language of category theory

Given a diagram of abelian groups:

ker A0 B0 α ker A B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 15 / 65 The language of category theory

Given a diagram of abelian groups:

ker A0 B0 α ker A B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 15 / 65 The language of category theory

Given a diagram of abelian groups:

x ∈ ker A0 B0 α ker A B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 15 / 65 The language of category theory

Given a diagram of abelian groups:

x ∈ ker x ∈ A0 B0 α ker A B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 15 / 65 The language of category theory

Given a diagram of abelian groups:

x ∈ ker x ∈ A0 B0 α ker α(x) ∈ A B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 15 / 65 The language of category theory

Given a diagram of abelian groups:

x ∈ ker x ∈ A0 B0 α ker α(x) ∈ A 0 ∈ B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 15 / 65 The language of category theory

Given a diagram of abelian groups:

x ∈ ker x ∈ A0 B0 α α(x) ∈ ker α(x) ∈ A 0 ∈ B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 15 / 65 The language of category theory

Given a diagram of abelian groups:

x ∈ ker x ∈ A0 B0 α α(x) ∈ ker α(x) ∈ A 0 ∈ B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 15 / 65 99K = KernelLift(ϕ,κ0 · α)

KernelObjectFunctorial

The language of category theory

The same example in the language of category theory:

κ0 ker A0 B0 α ϕ ker A B

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 16 / 65 = KernelLift(ϕ,κ0 · α)

KernelObjectFunctorial

The language of category theory

The same example in the language of category theory:

κ0 ker A0 B0 α ϕ ker A B 99K

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 16 / 65 KernelLift(ϕ,κ0 · α)

KernelObjectFunctorial

The language of category theory

The same example in the language of category theory:

κ0 ker A0 B0 α ϕ ker A B 99K =

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 16 / 65 KernelLift(ϕ, )

KernelObjectFunctorial

The language of category theory

The same example in the language of category theory:

κ0 ker A0 B0 α ϕ ker A B 99K = κ0 · α

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 16 / 65 KernelObjectFunctorial

The language of category theory

The same example in the language of category theory:

κ0 ker A0 B0 α ϕ ker A B 99K = KernelLift(ϕ,κ0 · α)

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 16 / 65 The language of category theory

The same example in the language of category theory:

κ0 ker A0 B0 α ϕ ker A B 99K = KernelLift(ϕ,κ0 · α)

KernelObjectFunctorial

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 16 / 65 CAP is a framework to implement computable categories and provides specifications of lots of basic operations from category theory, a derivation mechanism that automatically installs lots of basic operations for the user, higher generic algorithms based on basic categorical operations.

Features of CAP

CAP - Categories, Algorithms, Programming

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 17 / 65 specifications of lots of basic operations from category theory, a derivation mechanism that automatically installs lots of basic operations for the user, higher generic algorithms based on basic categorical operations.

Features of CAP

CAP - Categories, Algorithms, Programming CAP is a framework to implement computable categories and provides

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 17 / 65 a derivation mechanism that automatically installs lots of basic operations for the user, higher generic algorithms based on basic categorical operations.

Features of CAP

CAP - Categories, Algorithms, Programming CAP is a framework to implement computable categories and provides specifications of lots of basic operations from category theory,

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 17 / 65 higher generic algorithms based on basic categorical operations.

Features of CAP

CAP - Categories, Algorithms, Programming CAP is a framework to implement computable categories and provides specifications of lots of basic operations from category theory, a derivation mechanism that automatically installs lots of basic operations for the user,

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 17 / 65 Features of CAP

CAP - Categories, Algorithms, Programming CAP is a framework to implement computable categories and provides specifications of lots of basic operations from category theory, a derivation mechanism that automatically installs lots of basic operations for the user, higher generic algorithms based on basic categorical operations.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 17 / 65 M1 π1 ι1

κ ϕ := π1 · ι1 − π2 · ι2 M1 ∩ M2 M1 ⊕ M2 N

π2 ι2 M2

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 ϕ := π1 · ι1 − π2 · ι2 κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Compute their intersection γ : M1 ∩ M2 ,→ N.

Computing the intersection

Let M1 ⊆ N and M2 ⊆ N subobjects in an abelian category.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 18 / 65 M1 π1 ι1

κ ϕ := π1 · ι1 − π2 · ι2 M1 ∩ M2 M1 ⊕ M2 N

π2 ι2 M2

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 ϕ := π1 · ι1 − π2 · ι2 κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Compute their intersection γ : M1 ∩ M2 ,→ N.

Computing the intersection

Let M1,→ N and M2,→ N subobjects in an abelian category.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 18 / 65 M1 π1 ι1

κ ϕ := π1 · ι1 − π2 · ι2 M1 ∩ M2 M1 ⊕ M2 N

π2 ι2 M2

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 ϕ := π1 · ι1 − π2 · ι2 κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Computing the intersection

Let M1,→ N and M2,→ N subobjects in an abelian category. Compute their intersection γ : M1 ∩ M2 ,→ N.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 18 / 65 π1 ι1

κ ϕ := π1 · ι1 − π2 · ι2 M1 ∩ M2 M1 ⊕ M2 N

π2

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 ϕ := π1 · ι1 − π2 · ι2 κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Computing the intersection

Let M1,→ N and M2,→ N subobjects in an abelian category. Compute their intersection γ : M1 ∩ M2 ,→ N.

M1 ι1

N

ι2

M2

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 18 / 65 π1 ι1

κ ϕ := π1 · ι1 − π2 · ι2 M1 ∩ M2 N

π2

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 ϕ := π1 · ι1 − π2 · ι2 κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Computing the intersection

Let M1,→ N and M2,→ N subobjects in an abelian category. Compute their intersection γ : M1 ∩ M2 ,→ N.

M1 ι1

M1 ⊕ M2 N

ι2

M2

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 18 / 65 π1 ι1

κ ϕ := π1 · ι1 − π2 · ι2 M1 ∩ M2 N

π2

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 ϕ := π1 · ι1 − π2 · ι2 κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Computing the intersection

Let M1,→ N and M2,→ N subobjects in an abelian category. Compute their intersection γ : M1 ∩ M2 ,→ N.

M1 π1 ι1

M1 ⊕ M2 N

ι2

M2

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 18 / 65 π1 ι1

κ ϕ := π1 · ι1 − π2 · ι2 M1 ∩ M2 N

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 ϕ := π1 · ι1 − π2 · ι2 κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Computing the intersection

Let M1,→ N and M2,→ N subobjects in an abelian category. Compute their intersection γ : M1 ∩ M2 ,→ N.

M1 π1 ι1

M1 ⊕ M2 N

π2 ι2 M2

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 18 / 65 π1 ι1

κ ϕ := π1 · ι1 − π2 · ι2 M1 ∩ M2 N

ϕ := π1 · ι1 − π2 · ι2 κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Computing the intersection

Let M1,→ N and M2,→ N subobjects in an abelian category. Compute their intersection γ : M1 ∩ M2 ,→ N.

M1 π1 ι1

M1 ⊕ M2 N

π2 ι2 M2

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 18 / 65 π1 ι1 κ M1 ∩ M2 N

ϕ := π1 · ι1 − π2 · ι2 κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Computing the intersection

Let M1,→ N and M2,→ N subobjects in an abelian category. Compute their intersection γ : M1 ∩ M2 ,→ N.

M1 π1 ι1

ϕ := π1 · ι1 − π2 · ι2 M1 ⊕ M2 N

π2 ι2 M2

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 18 / 65 π1 ι1 κ M1 ∩ M2 N

κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Computing the intersection

Let M1,→ N and M2,→ N subobjects in an abelian category. Compute their intersection γ : M1 ∩ M2 ,→ N.

M1 π1 ι1

ϕ := π1 · ι1 − π2 · ι2 M1 ⊕ M2 N

π2 ι2 M2

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 ϕ := π1 · ι1 − π2 · ι2

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 18 / 65 π1 ι1 κ M1 ∩ M2 N

κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Computing the intersection

Let M1,→ N and M2,→ N subobjects in an abelian category. Compute their intersection γ : M1 ∩ M2 ,→ N.

M1 π1 ι1

κ ϕ := π1 · ι1 − π2 · ι2 M1 ∩ M2 M1 ⊕ M2 N

π2 ι2 M2

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 ϕ := π1 · ι1 − π2 · ι2

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 18 / 65 π1 ι1 κ M1 ∩ M2 N

γ := κ · π1 · ι1

Computing the intersection

Let M1,→ N and M2,→ N subobjects in an abelian category. Compute their intersection γ : M1 ∩ M2 ,→ N.

M1 π1 ι1

κ ϕ := π1 · ι1 − π2 · ι2 M1 ∩ M2 M1 ⊕ M2 N

π2 ι2 M2

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 ϕ := π1 · ι1 − π2 · ι2 κ := KernelEmbedding (ϕ)

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 18 / 65 π1 ι1 κ M1 ∩ M2 N

γ := κ · π1 · ι1

Computing the intersection

Let M1,→ N and M2,→ N subobjects in an abelian category. Compute their intersection γ : M1 ∩ M2 ,→ N.

M1 π1 ι1

κ ϕ := π1 · ι1 − π2 · ι2 M1 ∩ M2 M1 ⊕ M2 N

π2 ι2 M2

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 ϕ := π1 · ι1 − π2 · ι2 κ := KernelEmbedding (ϕ)

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 18 / 65 π1 ι1 κ M1 ∩ M2 N

Computing the intersection

Let M1,→ N and M2,→ N subobjects in an abelian category. Compute their intersection γ : M1 ∩ M2 ,→ N.

M1 π1 ι1

κ ϕ := π1 · ι1 − π2 · ι2 M1 ∩ M2 M1 ⊕ M2 N

π2 ι2 M2

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 ϕ := π1 · ι1 − π2 · ι2 κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 18 / 65 pi1 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 1 ); pi2 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 2 );

lambda := PreCompose( pi1, iota1 ); phi := lambda - PreCompose( pi2, iota2 );

kappa := KernelEmbedding( phi );

gamma := PreCompose( kappa, lambda );

Translation to CAP

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2

ϕ := π1 · ι1 − π2 · ι2

κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 19 / 65 lambda := PreCompose( pi1, iota1 ); phi := lambda - PreCompose( pi2, iota2 );

kappa := KernelEmbedding( phi );

gamma := PreCompose( kappa, lambda );

Translation to CAP

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 pi1 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 1 ); pi2 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 2 );

ϕ := π1 · ι1 − π2 · ι2

κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 19 / 65 kappa := KernelEmbedding( phi );

gamma := PreCompose( kappa, lambda );

Translation to CAP

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 pi1 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 1 ); pi2 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 2 );

ϕ := π1 · ι1 − π2 · ι2 lambda := PreCompose( pi1, iota1 ); phi := lambda - PreCompose( pi2, iota2 ); κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 19 / 65 gamma := PreCompose( kappa, lambda );

Translation to CAP

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 pi1 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 1 ); pi2 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 2 );

ϕ := π1 · ι1 − π2 · ι2 lambda := PreCompose( pi1, iota1 ); phi := lambda - PreCompose( pi2, iota2 ); κ := KernelEmbedding (ϕ) kappa := KernelEmbedding( phi );

γ := κ · π1 · ι1

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 19 / 65 Translation to CAP

πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2 pi1 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 1 ); pi2 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 2 );

ϕ := π1 · ι1 − π2 · ι2 lambda := PreCompose( pi1, iota1 ); phi := lambda - PreCompose( pi2, iota2 ); κ := KernelEmbedding (ϕ) kappa := KernelEmbedding( phi );

γ := κ · π1 · ι1 gamma := PreCompose( kappa, lambda );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 19 / 65 πi := ProjectionInFactorOfDirectSum ((M1, M2) , i), i = 1, 2

ϕ := π1 · ι1 − π2 · ι2

κ := KernelEmbedding (ϕ)

γ := κ · π1 · ι1

Translation to CAP

pi1 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 1 ); pi2 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 2 );

lambda := PreCompose( pi1, iota1 ); phi := lambda - PreCompose( pi2, iota2 );

kappa := KernelEmbedding( phi );

gamma := PreCompose( kappa, lambda );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 19 / 65 IntersectionOfSubobject := function( iota1, iota2 ) local M1, M2, pi1, pi2, lambda, phi, kappa, gamma; M1 := Source( iota1 ); M2 := Source( iota2 );

return gamma; end;

Translation to CAP

pi1 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 1 ); pi2 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 2 ); lambda := PreCompose( pi1, iota1 ); phi := lambda - PreCompose( pi2, iota2 ); kappa := KernelEmbedding( phi ); gamma := PreCompose( kappa, lambda );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 19 / 65 local M1, M2, pi1, pi2, lambda, phi, kappa, gamma; M1 := Source( iota1 ); M2 := Source( iota2 );

return gamma; end;

Translation to CAP

IntersectionOfSubobject := function( iota1, iota2 )

pi1 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 1 ); pi2 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 2 ); lambda := PreCompose( pi1, iota1 ); phi := lambda - PreCompose( pi2, iota2 ); kappa := KernelEmbedding( phi ); gamma := PreCompose( kappa, lambda );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 19 / 65 local M1, M2, pi1, pi2, lambda, phi, kappa, gamma;

return gamma; end;

Translation to CAP

IntersectionOfSubobject := function( iota1, iota2 )

M1 := Source( iota1 ); M2 := Source( iota2 ); pi1 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 1 ); pi2 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 2 ); lambda := PreCompose( pi1, iota1 ); phi := lambda - PreCompose( pi2, iota2 ); kappa := KernelEmbedding( phi ); gamma := PreCompose( kappa, lambda );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 19 / 65 local M1, M2, pi1, pi2, lambda, phi, kappa, gamma;

Translation to CAP

IntersectionOfSubobject := function( iota1, iota2 )

M1 := Source( iota1 ); M2 := Source( iota2 ); pi1 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 1 ); pi2 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 2 ); lambda := PreCompose( pi1, iota1 ); phi := lambda - PreCompose( pi2, iota2 ); kappa := KernelEmbedding( phi ); gamma := PreCompose( kappa, lambda ); return gamma; end;

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 19 / 65 Translation to CAP

IntersectionOfSubobject := function( iota1, iota2 ) local M1, M2, pi1, pi2, lambda, phi, kappa, gamma; M1 := Source( iota1 ); M2 := Source( iota2 ); pi1 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 1 ); pi2 := ProjectionInFactorOfDirectSum( [ M1, M2 ], 2 ); lambda := PreCompose( pi1, iota1 ); phi := lambda - PreCompose( pi2, iota2 ); kappa := KernelEmbedding( phi ); gamma := PreCompose( kappa, lambda ); return gamma; end;

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 19 / 65 gap> gamma := IntersectionOfSubobject( iota1, iota2 ); gap> Display( gamma ); [ [ 1, 1, 0 ] ]

A morphism in the category of matrices over Q

Computing the intersection: Q-vec

Compute the intersection of

 1 1 0   1 0 1  ι := ι := 1 0 1 1 2 1 1 0 M1 N M2 = = = 2 3 2

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 20 / 65 gap> Display( gamma ); [ [ 1, 1, 0 ] ]

A morphism in the category of matrices over Q

Computing the intersection: Q-vec

Compute the intersection of

 1 1 0   1 0 1  ι := ι := 1 0 1 1 2 1 1 0 M1 N M2 = = = 2 3 2

gap> gamma := IntersectionOfSubobject( iota1, iota2 );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 20 / 65 Computing the intersection: Q-vec

Compute the intersection of

 1 1 0   1 0 1  ι := ι := 1 0 1 1 2 1 1 0 M1 N M2 = = = 2 3 2

gap> gamma := IntersectionOfSubobject( iota1, iota2 ); gap> Display( gamma ); [ [ 1, 1, 0 ] ]

A morphism in the category of matrices over Q

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 20 / 65 Part II

Homomorphism structures and applications

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 21 / 65 1 ∈, =, 0, 1, +, −, ·, 2 solving one-sided linear systems of matrices with entries in R.

R is supposed to be computable, that is, we have algorithms for

RowsR is the category of matrices over R.

Conventions

R is a ring with identity, not necessarily commutative.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 22 / 65 1 ∈, =, 0, 1, +, −, ·, 2 solving one-sided linear systems of matrices with entries in R.

RowsR is the category of matrices over R.

Conventions

R is a ring with identity, not necessarily commutative. R is supposed to be computable, that is, we have algorithms for

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 22 / 65 2 solving one-sided linear systems of matrices with entries in R.

RowsR is the category of matrices over R.

Conventions

R is a ring with identity, not necessarily commutative. R is supposed to be computable, that is, we have algorithms for 1 ∈, =, 0, 1, +, −, ·,

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 22 / 65 RowsR is the category of matrices over R.

Conventions

R is a ring with identity, not necessarily commutative. R is supposed to be computable, that is, we have algorithms for 1 ∈, =, 0, 1, +, −, ·, 2 solving one-sided linear systems of matrices with entries in R.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 22 / 65 Conventions

R is a ring with identity, not necessarily commutative. R is supposed to be computable, that is, we have algorithms for 1 ∈, =, 0, 1, +, −, ·, 2 solving one-sided linear systems of matrices with entries in R.

RowsR is the category of matrices over R.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 22 / 65 Motivation

1 Motivation

2 Homomorphism structures

3 Applications

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 23 / 65 That is, for given α and β find ξ in the following diagram: P ξ α M N β That is, solve the one-sided linear system

ξ · β = α

for ξ.

Motivation Main aim

Compute lifts in fpresR

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 24 / 65 That is, solve the one-sided linear system

ξ · β = α

for ξ.

Motivation Main aim

Compute lifts in fpresR That is, for given α and β find ξ in the following diagram: P ξ α M N β

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 24 / 65 Motivation Main aim

Compute lifts in fpresR That is, for given α and β find ξ in the following diagram: P ξ α M N β That is, solve the one-sided linear system

ξ · β = α

for ξ.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 24 / 65 1 ξ is well-defined: P · X = X 0 · M for some X 0 2 ξ · β = α: X · B = A +X 00 · N for some X 00

Consider the data structure of fpresR: R1×p P hPi ξ X α −→ A

M N R1×m R1×n β hMi B hNi We have to find X such that

X occurs both on the left and on the right.

means solving a two-sided linear system of matrices with entries in R. Why?

Motivation Problem

Solving a one-sided linear system in fpresR

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 25 / 65 1 ξ is well-defined: P · X = X 0 · M for some X 0 2 ξ · β = α: X · B = A +X 00 · N for some X 00

Consider the data structure of fpresR: R1×p P hPi ξ X α −→ A

M N R1×m R1×n β hMi B hNi We have to find X such that

X occurs both on the left and on the right.

Why?

Motivation Problem

Solving a one-sided linear system in fpresR means solving a two-sided linear system of matrices with entries in R.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 25 / 65 1 ξ is well-defined: P · X = X 0 · M for some X 0 2 ξ · β = α: X · B = A +X 00 · N for some X 00

R1×p P hPi ξ X α −→ A

M N R1×m R1×n β hMi B hNi We have to find X such that

X occurs both on the left and on the right.

Consider the data structure of fpresR:

Motivation Problem

Solving a one-sided linear system in fpresR means solving a two-sided linear system of matrices with entries in R. Why?

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 25 / 65 1 ξ is well-defined: P · X = X 0 · M for some X 0 2 ξ · β = α: X · B = A +X 00 · N for some X 00

We have to find X such that

X occurs both on the left and on the right.

R1×p P hPi ξ X α −→ A

M N R1×m R1×n β hMi B hNi

Motivation Problem

Solving a one-sided linear system in fpresR means solving a two-sided linear system of matrices with entries in R. Why?

Consider the data structure of fpresR:

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 25 / 65 1 ξ is well-defined: P · X = X 0 · M for some X 0 2 ξ · β = α: X · B = A +X 00 · N for some X 00

We have to find X such that

X occurs both on the left and on the right.

R1×p hPi X −→ A

R1×m R1×n hMi B hNi

Motivation Problem

Solving a one-sided linear system in fpresR means solving a two-sided linear system of matrices with entries in R. Why?

Consider the data structure of fpresR:

P ξ α M N β

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 25 / 65 1 ξ is well-defined: P · X = X 0 · M for some X 0 2 ξ · β = α: X · B = A +X 00 · N for some X 00

We have to find X such that

X occurs both on the left and on the right.

R1×p hPi X A

R1×m R1×n hMi B hNi

Motivation Problem

Solving a one-sided linear system in fpresR means solving a two-sided linear system of matrices with entries in R. Why?

Consider the data structure of fpresR:

P ξ α −→ M N β

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 25 / 65 P · X = X 0 · M for some X 0 2 ξ · β = α: X · B = A +X 00 · N for some X 00

1 ξ is well-defined:

X occurs both on the left and on the right.

We have to find X such that

Motivation Problem

Solving a one-sided linear system in fpresR means solving a two-sided linear system of matrices with entries in R. Why?

Consider the data structure of fpresR: R1×p P hPi ξ X α −→ A

M N R1×m R1×n β hMi B hNi

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 25 / 65 P · X = X 0 · M for some X 0 2 ξ · β = α: X · B = A +X 00 · N for some X 00 X occurs both on the left and on the right.

1 ξ is well-defined:

Motivation Problem

Solving a one-sided linear system in fpresR means solving a two-sided linear system of matrices with entries in R. Why?

Consider the data structure of fpresR: R1×p P hPi ξ X α −→ A

M N R1×m R1×n β hMi B hNi We have to find X such that

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 25 / 65 2 ξ · β = α: X · B = A +X 00 · N for some X 00 X occurs both on the left and on the right.

P · X = X 0 · M for some X 0

Motivation Problem

Solving a one-sided linear system in fpresR means solving a two-sided linear system of matrices with entries in R. Why?

Consider the data structure of fpresR: R1×p P hPi ξ X α −→ A

M N R1×m R1×n β hMi B hNi We have to find X such that 1 ξ is well-defined:

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 25 / 65 X · B = A +X 00 · N for some X 00 X occurs both on the left and on the right.

2 ξ · β = α:

Motivation Problem

Solving a one-sided linear system in fpresR means solving a two-sided linear system of matrices with entries in R. Why?

Consider the data structure of fpresR: R1×p P hPi ξ X α −→ A

M N R1×m R1×n β hMi B hNi We have to find X such that 1 ξ is well-defined: P · X = X 0 · M for some X 0

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 25 / 65 X occurs both on the left and on the right.

X · B = A +X 00 · N for some X 00

Motivation Problem

Solving a one-sided linear system in fpresR means solving a two-sided linear system of matrices with entries in R. Why?

Consider the data structure of fpresR: R1×p P hPi ξ X α −→ A

M N R1×m R1×n β hMi B hNi We have to find X such that 1 ξ is well-defined: P · X = X 0 · M for some X 0 2 ξ · β = α:

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 25 / 65 X occurs both on the left and on the right.

+X 00 · N for some X 00

Motivation Problem

Solving a one-sided linear system in fpresR means solving a two-sided linear system of matrices with entries in R. Why?

Consider the data structure of fpresR: R1×p P hPi ξ X α −→ A

M N R1×m R1×n β hMi B hNi We have to find X such that 1 ξ is well-defined: P · X = X 0 · M for some X 0 2 ξ · β = α: X · B = A

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 25 / 65 X occurs both on the left and on the right.

Motivation Problem

Solving a one-sided linear system in fpresR means solving a two-sided linear system of matrices with entries in R. Why?

Consider the data structure of fpresR: R1×p P hPi ξ X α −→ A

M N R1×m R1×n β hMi B hNi We have to find X such that 1 ξ is well-defined: P · X = X 0 · M for some X 0 2 ξ · β = α: X · B = A +X 00 · N for some X 00

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 25 / 65 Motivation Problem

Solving a one-sided linear system in fpresR means solving a two-sided linear system of matrices with entries in R. Why?

Consider the data structure of fpresR: R1×p P hPi ξ X α −→ A

M N R1×m R1×n β hMi B hNi We have to find X such that 1 ξ is well-defined: P · X = X 0 · M for some X 0 2 ξ · β = α: X · B = A +X 00 · N for some X 00 X occurs both on the left and on the right.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 25 / 65 which concatenates the rows of a matrix M to get a long row vector. Then vec(M · X · N) = vec(X) · (MT ⊗ N) This explicitly depends on the commutativity of the ring (obvious for 1 × 1 matrices).

× × Define vec: Qn m → Q1 nm

Aim Find a category theoretical abstraction of this trick.

Motivation Solution for commutative rings

For example, consider R = Q.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 26 / 65 Then vec(M · X · N) = vec(X) · (MT ⊗ N) This explicitly depends on the commutativity of the ring (obvious for 1 × 1 matrices).

which concatenates the rows of a matrix M to get a long row vector.

Aim Find a category theoretical abstraction of this trick.

Motivation Solution for commutative rings

For example, consider R = Q. × × Define vec: Qn m → Q1 nm

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 26 / 65 Then vec(M · X · N) = vec(X) · (MT ⊗ N) This explicitly depends on the commutativity of the ring (obvious for 1 × 1 matrices).

Aim Find a category theoretical abstraction of this trick.

Motivation Solution for commutative rings

For example, consider R = Q. × × Define vec: Qn m → Q1 nm which concatenates the rows of a matrix M to get a long row vector.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 26 / 65 This explicitly depends on the commutativity of the ring (obvious for 1 × 1 matrices).

Aim Find a category theoretical abstraction of this trick.

Motivation Solution for commutative rings

For example, consider R = Q. × × Define vec: Qn m → Q1 nm which concatenates the rows of a matrix M to get a long row vector. Then vec(M · X · N) = vec(X) · (MT ⊗ N)

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 26 / 65 Aim Find a category theoretical abstraction of this trick.

Motivation Solution for commutative rings

For example, consider R = Q. × × Define vec: Qn m → Q1 nm which concatenates the rows of a matrix M to get a long row vector. Then vec(M · X · N) = vec(X) · (MT ⊗ N) This explicitly depends on the commutativity of the ring (obvious for 1 × 1 matrices).

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 26 / 65 Aim Find a category theoretical abstraction of this trick.

Motivation Solution for commutative rings

Let S be a . × × Define vec: Qn m → Q1 nm which concatenates the rows of a matrix M to get a long row vector. Then vec(M · X · N) = vec(X) · (MT ⊗ N) This explicitly depends on the commutativity of the ring (obvious for 1 × 1 matrices).

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 26 / 65 Aim Find a category theoretical abstraction of this trick.

Motivation Solution for commutative rings

Let S be a commutative ring. Define vec: Sn×m → S1×nm which concatenates the rows of a matrix M to get a long row vector. Then vec(M · X · N) = vec(X) · (MT ⊗ N) This explicitly depends on the commutativity of the ring (obvious for 1 × 1 matrices).

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 26 / 65 Motivation Solution for commutative rings

Let S be a commutative ring. Define vec: Sn×m → S1×nm which concatenates the rows of a matrix M to get a long row vector. Then vec(M · X · N) = vec(X) · (MT ⊗ N) This explicitly depends on the commutativity of the ring (obvious for 1 × 1 matrices).

Aim Find a category theoretical abstraction of this trick.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 26 / 65 Homomorphism structures

1 Motivation

2 Homomorphism structures

3 Applications

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 27 / 65 A distinguished object 1 ∈ D A functor H : Cop × C → D ∼ An ν : HomC(A, B) = HomD(1, H(A, B)) natural in A, B ∈ C

A D-homomorphism structure for C consists of the following data:

Moreover, if we are in the context of Ab-categories, we require H to be bilinear.

Homomorphism structures Homomorphism structures

Definition Let C and D be categories.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 28 / 65 A distinguished object 1 ∈ D A functor H : Cop × C → D ∼ An isomorphism ν : HomC(A, B) = HomD(1, H(A, B)) natural in A, B ∈ C Moreover, if we are in the context of Ab-categories, we require H to be bilinear.

Homomorphism structures Homomorphism structures

Definition Let C and D be categories. A D-homomorphism structure for C consists of the following data:

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 28 / 65 A functor H : Cop × C → D ∼ An isomorphism ν : HomC(A, B) = HomD(1, H(A, B)) natural in A, B ∈ C Moreover, if we are in the context of Ab-categories, we require H to be bilinear.

Homomorphism structures Homomorphism structures

Definition Let C and D be categories. A D-homomorphism structure for C consists of the following data: A distinguished object 1 ∈ D

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 28 / 65 ∼ An isomorphism ν : HomC(A, B) = HomD(1, H(A, B)) natural in A, B ∈ C Moreover, if we are in the context of Ab-categories, we require H to be bilinear.

Homomorphism structures Homomorphism structures

Definition Let C and D be categories. A D-homomorphism structure for C consists of the following data: A distinguished object 1 ∈ D A functor H : Cop × C → D

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 28 / 65 Moreover, if we are in the context of Ab-categories, we require H to be bilinear.

Homomorphism structures Homomorphism structures

Definition Let C and D be categories. A D-homomorphism structure for C consists of the following data: A distinguished object 1 ∈ D A functor H : Cop × C → D ∼ An isomorphism ν : HomC(A, B) = HomD(1, H(A, B)) natural in A, B ∈ C

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 28 / 65 Homomorphism structures Homomorphism structures

Definition Let C and D be categories. A D-homomorphism structure for C consists of the following data: A distinguished object 1 ∈ D A functor H : Cop × C → D ∼ An isomorphism ν : HomC(A, B) = HomD(1, H(A, B)) natural in A, B ∈ C Moreover, if we are in the context of Ab-categories, we require H to be bilinear.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 28 / 65 Third property ∼ An isomorphism ν : HomC(A, B) = HomD(1, H(A, B)) natural in A, B ∈ C

This implies that the following diagram is commutative for all possible choices of α, β and ξ:

ξ ν ν(ξ)

HomC(α,β) HomD(id1,H(α,β)) α · ξ · β ν ν(α · ξ · β) = ν(ξ) · H(α, β)

Homomorphism structures Unwrapping the definition

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 29 / 65 This implies that the following diagram is commutative for all possible choices of α, β and ξ:

ξ ν ν(ξ)

HomC(α,β) HomD(id1,H(α,β)) α · ξ · β ν ν(α · ξ · β) = ν(ξ) · H(α, β)

Homomorphism structures Unwrapping the definition

Third property ∼ An isomorphism ν : HomC(A, B) = HomD(1, H(A, B)) natural in A, B ∈ C

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 29 / 65 ξ ν ν(ξ)

HomC(α,β) HomD(id1,H(α,β)) α · ξ · β ν ν(α · ξ · β) = ν(ξ) · H(α, β)

Homomorphism structures Unwrapping the definition

Third property ∼ An isomorphism ν : HomC(A, B) = HomD(1, H(A, B)) natural in A, B ∈ C

This implies that the following diagram is commutative for all possible choices of α, β and ξ:

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 29 / 65 Homomorphism structures Unwrapping the definition

Third property ∼ An isomorphism ν : HomC(A, B) = HomD(1, H(A, B)) natural in A, B ∈ C

This implies that the following diagram is commutative for all possible choices of α, β and ξ:

ξ ν ν(ξ)

HomC(α,β) HomD(id1,H(α,β)) α · ξ · β ν ν(α · ξ · β) = ν(ξ) · H(α, β)

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 29 / 65 C = D = RowsS H on morphisms: H(M, N) = MT ⊗ N H on objects: H(S1×n, S1×m) = S1×n·m ν(M) = vec(M) 1 = S1×1

Homomorphism structures Example

Let S be a commutative ring.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 30 / 65 H on morphisms: H(M, N) = MT ⊗ N H on objects: H(S1×n, S1×m) = S1×n·m ν(M) = vec(M) 1 = S1×1

Homomorphism structures Example

Let S be a commutative ring.

C = D = RowsS

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 30 / 65 H on objects: H(S1×n, S1×m) = S1×n·m ν(M) = vec(M) 1 = S1×1

Homomorphism structures Example

Let S be a commutative ring.

C = D = RowsS H on morphisms: H(M, N) = MT ⊗ N

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 30 / 65 ν(M) = vec(M) 1 = S1×1

Homomorphism structures Example

Let S be a commutative ring.

C = D = RowsS H on morphisms: H(M, N) = MT ⊗ N H on objects: H(S1×n, S1×m) = S1×n·m

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 30 / 65 1 = S1×1

Homomorphism structures Example

Let S be a commutative ring.

C = D = RowsS H on morphisms: H(M, N) = MT ⊗ N H on objects: H(S1×n, S1×m) = S1×n·m ν(M) = vec(M)

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 30 / 65 Homomorphism structures Example

Let S be a commutative ring.

C = D = RowsS H on morphisms: H(M, N) = MT ⊗ N H on objects: H(S1×n, S1×m) = S1×n·m ν(M) = vec(M) 1 = S1×1

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 30 / 65 (c) 7→ (c) Naturality of ν: (a · c · b) = (c) · (a · b)

(S1×1, S1×1) 7→ S1×1 ((a), (b)) 7→ (a · b) Note: in this sense, H can be interpreted as the (enriched) Hom-functor on RowsS. 1×1 1×1 Similarly, ν is determined by its values on HomRowsS (S , S ):

Homomorphism structures Making use of the bilinearity

Since H is bilinear, it is already determined by its values on S1×1 1×1 1×1 and HomRowsS (S , S ):

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 31 / 65 (c) 7→ (c) Naturality of ν: (a · c · b) = (c) · (a · b)

((a), (b)) 7→ (a · b) Note: in this sense, H can be interpreted as the (enriched) Hom-functor on RowsS. 1×1 1×1 Similarly, ν is determined by its values on HomRowsS (S , S ):

Homomorphism structures Making use of the bilinearity

Since H is bilinear, it is already determined by its values on S1×1 1×1 1×1 and HomRowsS (S , S ): (S1×1, S1×1) 7→ S1×1

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 31 / 65 (c) 7→ (c) Naturality of ν: (a · c · b) = (c) · (a · b)

Note: in this sense, H can be interpreted as the (enriched) Hom-functor on RowsS. 1×1 1×1 Similarly, ν is determined by its values on HomRowsS (S , S ):

Homomorphism structures Making use of the bilinearity

Since H is bilinear, it is already determined by its values on S1×1 1×1 1×1 and HomRowsS (S , S ): (S1×1, S1×1) 7→ S1×1 ((a), (b)) 7→ (a · b)

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 31 / 65 (c) 7→ (c) Naturality of ν: (a · c · b) = (c) · (a · b)

1×1 1×1 Similarly, ν is determined by its values on HomRowsS (S , S ):

Homomorphism structures Making use of the bilinearity

Since H is bilinear, it is already determined by its values on S1×1 1×1 1×1 and HomRowsS (S , S ): (S1×1, S1×1) 7→ S1×1 ((a), (b)) 7→ (a · b) Note: in this sense, H can be interpreted as the (enriched) Hom-functor on RowsS.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 31 / 65 Naturality of ν: (a · c · b) = (c) · (a · b)

(c) 7→ (c)

Homomorphism structures Making use of the bilinearity

Since H is bilinear, it is already determined by its values on S1×1 1×1 1×1 and HomRowsS (S , S ): (S1×1, S1×1) 7→ S1×1 ((a), (b)) 7→ (a · b) Note: in this sense, H can be interpreted as the (enriched) Hom-functor on RowsS. 1×1 1×1 Similarly, ν is determined by its values on HomRowsS (S , S ):

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 31 / 65 Naturality of ν: (a · c · b) = (c) · (a · b)

Homomorphism structures Making use of the bilinearity

Since H is bilinear, it is already determined by its values on S1×1 1×1 1×1 and HomRowsS (S , S ): (S1×1, S1×1) 7→ S1×1 ((a), (b)) 7→ (a · b) Note: in this sense, H can be interpreted as the (enriched) Hom-functor on RowsS. 1×1 1×1 Similarly, ν is determined by its values on HomRowsS (S , S ): (c) 7→ (c)

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 31 / 65 Homomorphism structures Making use of the bilinearity

Since H is bilinear, it is already determined by its values on S1×1 1×1 1×1 and HomRowsS (S , S ): (S1×1, S1×1) 7→ S1×1 ((a), (b)) 7→ (a · b) Note: in this sense, H can be interpreted as the (enriched) Hom-functor on RowsS. 1×1 1×1 Similarly, ν is determined by its values on HomRowsS (S , S ): (c) 7→ (c) Naturality of ν: (a · c · b) = (c) · (a · b)

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 31 / 65 Solution: assume that we can find a subring S of the center of R, such that R is finitely presented as an S-module. ∼ S1×m That is, SR = hMi . Then multiplication from left and right with elements of R is S-linear.

Homomorphism structures Non-commutative example

Problem: for a non-commutative ring and H and ν as above, we lose the naturality of ν.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 32 / 65 ∼ S1×m That is, SR = hMi . Then multiplication from left and right with elements of R is S-linear.

Homomorphism structures Non-commutative example

Problem: for a non-commutative ring and H and ν as above, we lose the naturality of ν. Solution: assume that we can find a subring S of the center of R, such that R is finitely presented as an S-module.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 32 / 65 Then multiplication from left and right with elements of R is S-linear.

Homomorphism structures Non-commutative example

Problem: for a non-commutative ring and H and ν as above, we lose the naturality of ν. Solution: assume that we can find a subring S of the center of R, such that R is finitely presented as an S-module. ∼ S1×m That is, SR = hMi .

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 32 / 65 Homomorphism structures Non-commutative example

Problem: for a non-commutative ring and H and ν as above, we lose the naturality of ν. Solution: assume that we can find a subring S of the center of R, such that R is finitely presented as an S-module. ∼ S1×m That is, SR = hMi . Then multiplication from left and right with elements of R is S-linear.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 32 / 65 1×1 1×1 S1×m (R , R ) 7→ hMi ((a), (b)) 7→ a · − · b expressed as a matrix in Sm×m

op H : RowsR × RowsR → fpresS:

S1×m ν is essentially the isomorphism ϕ: SR → hMi Naturality of ν: ϕ(a · c · b) = ϕ(c) · (a · − · b)

Homomorphism structures Non-commutative example (continued)

Using this, we can find an fpresS-homomorphism structure (H, 1, ν) for RowsR:

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 33 / 65 1×1 1×1 S1×m (R , R ) 7→ hMi ((a), (b)) 7→ a · − · b expressed as a matrix in Sm×m S1×m ν is essentially the isomorphism ϕ: SR → hMi Naturality of ν: ϕ(a · c · b) = ϕ(c) · (a · − · b)

Homomorphism structures Non-commutative example (continued)

Using this, we can find an fpresS-homomorphism structure (H, 1, ν) for RowsR: op H : RowsR × RowsR → fpresS:

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 33 / 65 ((a), (b)) 7→ a · − · b expressed as a matrix in Sm×m S1×m ν is essentially the isomorphism ϕ: SR → hMi Naturality of ν: ϕ(a · c · b) = ϕ(c) · (a · − · b)

Homomorphism structures Non-commutative example (continued)

Using this, we can find an fpresS-homomorphism structure (H, 1, ν) for RowsR: op H : RowsR × RowsR → fpresS: 1×1 1×1 S1×m (R , R ) 7→ hMi

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 33 / 65 S1×m ν is essentially the isomorphism ϕ: SR → hMi Naturality of ν: ϕ(a · c · b) = ϕ(c) · (a · − · b)

Homomorphism structures Non-commutative example (continued)

Using this, we can find an fpresS-homomorphism structure (H, 1, ν) for RowsR: op H : RowsR × RowsR → fpresS: 1×1 1×1 S1×m (R , R ) 7→ hMi ((a), (b)) 7→ a · − · b expressed as a matrix in Sm×m

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 33 / 65 Naturality of ν: ϕ(a · c · b) = ϕ(c) · (a · − · b)

Homomorphism structures Non-commutative example (continued)

Using this, we can find an fpresS-homomorphism structure (H, 1, ν) for RowsR: op H : RowsR × RowsR → fpresS: 1×1 1×1 S1×m (R , R ) 7→ hMi ((a), (b)) 7→ a · − · b expressed as a matrix in Sm×m S1×m ν is essentially the isomorphism ϕ: SR → hMi

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 33 / 65 Homomorphism structures Non-commutative example (continued)

Using this, we can find an fpresS-homomorphism structure (H, 1, ν) for RowsR: op H : RowsR × RowsR → fpresS: 1×1 1×1 S1×m (R , R ) 7→ hMi ((a), (b)) 7→ a · − · b expressed as a matrix in Sm×m S1×m ν is essentially the isomorphism ϕ: SR → hMi Naturality of ν: ϕ(a · c · b) = ϕ(c) · (a · − · b)

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 33 / 65 In particular this works for the exterior algebra E of Qn over its center or over Q.

Homomorphism structures Remarks

As above, this data uniquely defines the homomorphism structure for all of RowsR.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 34 / 65 Homomorphism structures Remarks

As above, this data uniquely defines the homomorphism structure for all of RowsR. In particular this works for the exterior algebra E of Qn over its center or over Q.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 34 / 65 Applications

1 Motivation

2 Homomorphism structures

3 Applications

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 35 / 65 A linear system in C is a collection of morphisms αij , βij and γi of the following form:

α11 · X1 · β11 + ... +α1n · Xn · β1n = γ1 . .

αm1 · X1 · βm1 + ... +αmn · Xn · βmn = γm

where the Xj are unknown morphisms.

Applications Two-sided linear systems (1)

Let C and D be additive categories.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 36 / 65 Applications Two-sided linear systems (1)

Let C and D be additive categories.

A linear system in C is a collection of morphisms αij , βij and γi of the following form:

α11 · X1 · β11 + ... +α1n · Xn · β1n = γ1 . .

αm1 · X1 · βm1 + ... +αmn · Xn · βmn = γm

where the Xj are unknown morphisms.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 36 / 65 1 (ν(Xj ))j (ν(γi ))i L L i H(Ai , Di ) j H(Bj , Cj ) (H(αij ,βij ))ji

Using that we can transfer a two-sided linear system in C to a one-sided linear system in D by using ν(α · ξ · β) = ν(ξ) · H(α, β):

Applications Two-sided linear systems (2)

Assume we have a D-homomorphism structure for C.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 37 / 65 1 (ν(Xj ))j (ν(γi ))i L L i H(Ai , Di ) j H(Bj , Cj ) (H(αij ,βij ))ji

Applications Two-sided linear systems (2)

Assume we have a D-homomorphism structure for C. Using that we can transfer a two-sided linear system in C to a one-sided linear system in D by using ν(α · ξ · β) = ν(ξ) · H(α, β):

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 37 / 65 Applications Two-sided linear systems (2)

Assume we have a D-homomorphism structure for C. Using that we can transfer a two-sided linear system in C to a one-sided linear system in D by using ν(α · ξ · β) = ν(ξ) · H(α, β): 1 (ν(Xj ))j (ν(γi ))i L L i H(Ai , Di ) j H(Bj , Cj ) (H(αij ,βij ))ji

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 37 / 65 RowsS one-sided

RowsR fpresS two-sided one-sided

RowsS two-sided

Applications

Lifts in fpresR

fpresR lift, i.e. one-sided

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 38 / 65 RowsS one-sided

fpresS one-sided

RowsS two-sided

Applications

Lifts in fpresR

fpresR lift, i.e. one-sided

RowsR two-sided

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 38 / 65 RowsS one-sided

RowsS two-sided

Applications

Lifts in fpresR

fpresR lift, i.e. one-sided

RowsR fpresS two-sided one-sided

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 38 / 65 RowsS one-sided

Applications

Lifts in fpresR

fpresR lift, i.e. one-sided

RowsR fpresS two-sided one-sided

RowsS two-sided

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 38 / 65 Applications

Lifts in fpresR

fpresR lift, i.e. one-sided

RowsR fpresS two-sided one-sided

RowsS RowsS two-sided one-sided

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 38 / 65 RowsS one-sided

Applications

Lifts in fpresR

fpresR lift, i.e. one-sided

RowsR fpresS two-sided one-sided

RowsS one-sided

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 38 / 65 HomomorphismStructureOnMorphisms DistinguishedObjectOfHomomorphismStructure InterpretMorphismAsMorphismFromDinstinguished- ObjectToHomomorphismStructure InterpretMorphismFromDinstinguished- ObjectToHomomorphismStructureAsMorphism ⇒ SolveLinearSystemInAbCategory

Applications CAP basic operations

HomomorphismStructureOnObjects

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 39 / 65 DistinguishedObjectOfHomomorphismStructure InterpretMorphismAsMorphismFromDinstinguished- ObjectToHomomorphismStructure InterpretMorphismFromDinstinguished- ObjectToHomomorphismStructureAsMorphism ⇒ SolveLinearSystemInAbCategory

Applications CAP basic operations

HomomorphismStructureOnObjects HomomorphismStructureOnMorphisms

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 39 / 65 InterpretMorphismAsMorphismFromDinstinguished- ObjectToHomomorphismStructure InterpretMorphismFromDinstinguished- ObjectToHomomorphismStructureAsMorphism ⇒ SolveLinearSystemInAbCategory

Applications CAP basic operations

HomomorphismStructureOnObjects HomomorphismStructureOnMorphisms DistinguishedObjectOfHomomorphismStructure

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 39 / 65 InterpretMorphismFromDinstinguished- ObjectToHomomorphismStructureAsMorphism ⇒ SolveLinearSystemInAbCategory

Applications CAP basic operations

HomomorphismStructureOnObjects HomomorphismStructureOnMorphisms DistinguishedObjectOfHomomorphismStructure InterpretMorphismAsMorphismFromDinstinguished- ObjectToHomomorphismStructure

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 39 / 65 ⇒ SolveLinearSystemInAbCategory

Applications CAP basic operations

HomomorphismStructureOnObjects HomomorphismStructureOnMorphisms DistinguishedObjectOfHomomorphismStructure InterpretMorphismAsMorphismFromDinstinguished- ObjectToHomomorphismStructure InterpretMorphismFromDinstinguished- ObjectToHomomorphismStructureAsMorphism

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 39 / 65 Applications CAP basic operations

HomomorphismStructureOnObjects HomomorphismStructureOnMorphisms DistinguishedObjectOfHomomorphismStructure InterpretMorphismAsMorphismFromDinstinguished- ObjectToHomomorphismStructure InterpretMorphismFromDinstinguished- ObjectToHomomorphismStructureAsMorphism ⇒ SolveLinearSystemInAbCategory

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 39 / 65 Part III

Stable categories and homotopy categories in CAP

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 40 / 65 Hence, morphisms that factor through a projective object should be treated as zero morphisms, and ... any two morphisms whose subtraction factors through a projective object should be treated as identical morphisms.

Definition Let R be a ring and R-mod its module category. We define the stable module category of R, denoted by R-mod as follows: 1 Obj(R-mod) := Obj(R-mod), 2 For a, b ∈ R-mod, we define

HomR-mod(a, b) := HomR-mod(a, b)/ ∼,

where ϕ ∼ ψ if ϕ − ψ factors through a projective object.

Stabilisation of a category by its projective objects

MOTTO: We want to identify projective objects with the zero object.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 41 / 65 any two morphisms whose subtraction factors through a projective object should be treated as identical morphisms.

Definition Let R be a ring and R-mod its module category. We define the stable module category of R, denoted by R-mod as follows: 1 Obj(R-mod) := Obj(R-mod), 2 For a, b ∈ R-mod, we define

HomR-mod(a, b) := HomR-mod(a, b)/ ∼,

where ϕ ∼ ψ if ϕ − ψ factors through a projective object.

Stabilisation of a category by its projective objects

MOTTO: We want to identify projective objects with the zero object. Hence, morphisms that factor through a projective object should be treated as zero morphisms, and ...

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 41 / 65 Definition Let R be a ring and R-mod its module category. We define the stable module category of R, denoted by R-mod as follows: 1 Obj(R-mod) := Obj(R-mod), 2 For a, b ∈ R-mod, we define

HomR-mod(a, b) := HomR-mod(a, b)/ ∼,

where ϕ ∼ ψ if ϕ − ψ factors through a projective object.

Stabilisation of a category by its projective objects

MOTTO: We want to identify projective objects with the zero object. Hence, morphisms that factor through a projective object should be treated as zero morphisms, and ... any two morphisms whose subtraction factors through a projective object should be treated as identical morphisms.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 41 / 65 1 Obj(R-mod) := Obj(R-mod), 2 For a, b ∈ R-mod, we define

HomR-mod(a, b) := HomR-mod(a, b)/ ∼,

where ϕ ∼ ψ if ϕ − ψ factors through a projective object.

Stabilisation of a category by its projective objects

MOTTO: We want to identify projective objects with the zero object. Hence, morphisms that factor through a projective object should be treated as zero morphisms, and ... any two morphisms whose subtraction factors through a projective object should be treated as identical morphisms.

Definition Let R be a ring and R-mod its module category. We define the stable module category of R, denoted by R-mod as follows:

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 41 / 65 2 For a, b ∈ R-mod, we define

HomR-mod(a, b) := HomR-mod(a, b)/ ∼,

where ϕ ∼ ψ if ϕ − ψ factors through a projective object.

Stabilisation of a category by its projective objects

MOTTO: We want to identify projective objects with the zero object. Hence, morphisms that factor through a projective object should be treated as zero morphisms, and ... any two morphisms whose subtraction factors through a projective object should be treated as identical morphisms.

Definition Let R be a ring and R-mod its module category. We define the stable module category of R, denoted by R-mod as follows: 1 Obj(R-mod) := Obj(R-mod),

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 41 / 65 Stabilisation of a category by its projective objects

MOTTO: We want to identify projective objects with the zero object. Hence, morphisms that factor through a projective object should be treated as zero morphisms, and ... any two morphisms whose subtraction factors through a projective object should be treated as identical morphisms.

Definition Let R be a ring and R-mod its module category. We define the stable module category of R, denoted by R-mod as follows: 1 Obj(R-mod) := Obj(R-mod), 2 For a, b ∈ R-mod, we define

HomR-mod(a, b) := HomR-mod(a, b)/ ∼,

where ϕ ∼ ψ if ϕ − ψ factors through a projective object.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 41 / 65 it is enough to decide liftability of ϕ along πb.

∃ ∃ P ∃ ∃

Pb πb

P is projective object and the diagram commutes. Because any morphism from a projective module is liftable to any epimorphism,

a

ϕ

b

Stabilisation of a category by its projective objects

Suppose ϕ : a → b is an R-homomorphism that factors through a projective object. Furthermore, let πb : Pb  b be an epimorphism from some projective object Pb. Then

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 42 / 65 it is enough to decide liftability of ϕ along πb.

∃ ∃ P ∃ ∃

Pb πb

P is projective object and the diagram commutes. Because any morphism from a projective module is liftable to any epimorphism,

Stabilisation of a category by its projective objects

Suppose ϕ : a → b is an R-homomorphism that factors through a projective object. Furthermore, let πb : Pb  b be an epimorphism from some projective object Pb. Then a

ϕ

b

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 42 / 65 it is enough to decide liftability of ϕ along πb.

∃ ∃

Pb πb

Because any morphism from a projective module is liftable to any epimorphism,

Stabilisation of a category by its projective objects

Suppose ϕ : a → b is an R-homomorphism that factors through a projective object. Furthermore, let πb : Pb  b be an epimorphism from some projective object Pb. Then a ∃

P ϕ ∃

b

P is projective object and the diagram commutes.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 42 / 65 it is enough to decide liftability of ϕ along πb.

∃ ∃

Because any morphism from a projective module is liftable to any epimorphism,

Stabilisation of a category by its projective objects

Suppose ϕ : a → b is an R-homomorphism that factors through a projective object. Furthermore, let πb : Pb  b be an epimorphism from some projective object Pb. Then a ∃

P ϕ ∃

Pb b πb

P is projective object and the diagram commutes.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 42 / 65 ∃

it is enough to decide liftability of ϕ along πb.

Stabilisation of a category by its projective objects

Suppose ϕ : a → b is an R-homomorphism that factors through a projective object. Furthermore, let πb : Pb  b be an epimorphism from some projective object Pb. Then a ∃

P ϕ ∃ ∃

Pb b πb

P is projective object and the diagram commutes. Because any morphism from a projective module is liftable to any epimorphism,

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 42 / 65 ∃

P ∃ ∃

Stabilisation of a category by its projective objects

Suppose ϕ : a → b is an R-homomorphism that factors through a projective object. Furthermore, let πb : Pb  b be an epimorphism from some projective object Pb. Then a ∃ ϕ

Pb b πb

P is projective object and the diagram commutes. Because any morphism from a projective module is liftable to any epimorphism, it is enough to decide liftability of ϕ along πb.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 42 / 65 IsProjective b is b projective?

SomeProjectiveObject b Pb

EpimorphismFrom- b πb : Pb  b SomeProjectiveObject

ProjectiveLift (α : P → b, β : a  b) δ : P → a

Categories with enough projective objects in CAP

A category A is called computable with enough projectives if A is computable and is equiped with following basic operations:

Basic operation Input Output

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 43 / 65 SomeProjectiveObject b Pb

EpimorphismFrom- b πb : Pb  b SomeProjectiveObject

ProjectiveLift (α : P → b, β : a  b) δ : P → a

Categories with enough projective objects in CAP

A category A is called computable with enough projectives if A is computable and is equiped with following basic operations:

Basic operation Input Output IsProjective b is b projective?

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 43 / 65 EpimorphismFrom- b πb : Pb  b SomeProjectiveObject

ProjectiveLift (α : P → b, β : a  b) δ : P → a

Categories with enough projective objects in CAP

A category A is called computable with enough projectives if A is computable and is equiped with following basic operations:

Basic operation Input Output IsProjective b is b projective?

SomeProjectiveObject b Pb

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 43 / 65 ProjectiveLift (α : P → b, β : a  b) δ : P → a

Categories with enough projective objects in CAP

A category A is called computable with enough projectives if A is computable and is equiped with following basic operations:

Basic operation Input Output IsProjective b is b projective?

SomeProjectiveObject b Pb

EpimorphismFrom- b πb : Pb  b SomeProjectiveObject

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 43 / 65 Categories with enough projective objects in CAP

A category A is called computable with enough projectives if A is computable and is equiped with following basic operations:

Basic operation Input Output IsProjective b is b projective?

SomeProjectiveObject b Pb

EpimorphismFrom- b πb : Pb  b SomeProjectiveObject

ProjectiveLift (α : P → b, β : a  b) δ : P → a

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 43 / 65 a ?∃ ϕ

Pb b πb

The following code in CAP checks whether ϕ factors through a projective: gap> b := Range( phi ); gap> pi_b := EpimorphismFromSomeProjectiveObject( b ); gap> IsLiftable( phi, pi_b );

Stabilisation of a category by its projective objects

Back to our R-homomorphism ϕ : a → b.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 44 / 65 Stabilisation of a category by its projective objects

Back to our R-homomorphism ϕ : a → b. a ?∃ ϕ

Pb b πb

The following code in CAP checks whether ϕ factors through a projective: gap> b := Range( phi ); gap> pi_b := EpimorphismFromSomeProjectiveObject( b ); gap> IsLiftable( phi, pi_b );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 44 / 65 1 For any object a in A, there exists a morphism `a : La → a, for some object La ∈ LA 2 For any morphism ϕ : a → b, there is a lifting morphism Lϕ : La → Lb such that the following diagram commutes:

`a La a ϕ Lϕ 

Lb b. `b

Lifting objects as an abstraction of projective objects

Definition

Let A be an . A system of lifting objects LA in A is a distinguished class of objects with the following properties:

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 45 / 65 2 For any morphism ϕ : a → b, there is a lifting morphism Lϕ : La → Lb such that the following diagram commutes:

`a La a ϕ Lϕ 

Lb b. `b

Lifting objects as an abstraction of projective objects

Definition

Let A be an additive category. A system of lifting objects LA in A is a distinguished class of objects with the following properties:

1 For any object a in A, there exists a morphism `a : La → a, for some object La ∈ LA

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 45 / 65 Lifting objects as an abstraction of projective objects

Definition

Let A be an additive category. A system of lifting objects LA in A is a distinguished class of objects with the following properties:

1 For any object a in A, there exists a morphism `a : La → a, for some object La ∈ LA 2 For any morphism ϕ : a → b, there is a lifting morphism Lϕ : La → Lb such that the following diagram commutes:

`a La a ϕ Lϕ 

Lb b. `b

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 45 / 65 Projective objects define a lifting system

For any additive category with enough projectives we have a lifting system defined by:

`a := πa La := Pa a ϕ Lϕ := ProjectiveLift(πaϕ, πb) 

Lb := Pb b `b := πb

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 46 / 65 We define the stable category of A by LA by

StabLA (A) := A/ILA , i.e., 1 The object class is same as that of A. 2 For two objects a, b ∈ A it is

Hom (a, b) := HomA(a, b)/IL (a, b), StabLA (A) A

where ILA (a, b) := ILA ∩ HomA(a, b).

Stable categories by a lifting system

Let A be an additive category.

If LA is a system of lifting objects for A, then

ILA = {ϕ : a → b| ϕ factors through `b}

is a two-sided ideal of morphisms in A.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 47 / 65 i.e., 1 The object class is same as that of A. 2 For two objects a, b ∈ A it is

Hom (a, b) := HomA(a, b)/IL (a, b), StabLA (A) A

where ILA (a, b) := ILA ∩ HomA(a, b).

Stable categories by a lifting system

Let A be an additive category.

If LA is a system of lifting objects for A, then

ILA = {ϕ : a → b| ϕ factors through `b}

is a two-sided ideal of morphisms in A.

We define the stable category of A by LA by

StabLA (A) := A/ILA ,

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 47 / 65 2 For two objects a, b ∈ A it is

Hom (a, b) := HomA(a, b)/IL (a, b), StabLA (A) A

where ILA (a, b) := ILA ∩ HomA(a, b).

Stable categories by a lifting system

Let A be an additive category.

If LA is a system of lifting objects for A, then

ILA = {ϕ : a → b| ϕ factors through `b}

is a two-sided ideal of morphisms in A.

We define the stable category of A by LA by

StabLA (A) := A/ILA , i.e., 1 The object class is same as that of A.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 47 / 65 Stable categories by a lifting system

Let A be an additive category.

If LA is a system of lifting objects for A, then

ILA = {ϕ : a → b| ϕ factors through `b}

is a two-sided ideal of morphisms in A.

We define the stable category of A by LA by

StabLA (A) := A/ILA , i.e., 1 The object class is same as that of A. 2 For two objects a, b ∈ A it is

Hom (a, b) := HomA(a, b)/IL (a, b), StabLA (A) A

where ILA (a, b) := ILA ∩ HomA(a, b).

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 47 / 65 IsLiftingObject b b ∈ LA?

LiftingObject b Lb

MorphismFrom- b `b : Lb → b LiftingObject

LiftingMorphism ϕ : a → b Lϕ : La → Lb

IsLiftableThroughLiftingObject ϕ : a → b ϕ ∈ ILA (a, b)?

Categories with lifting objects in CAP

A category A is called computable with a system of lifting objects LA if A is computable and is equipped with the following basic operations:

Basic operation Input Output

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 48 / 65 LiftingObject b Lb

MorphismFrom- b `b : Lb → b LiftingObject

LiftingMorphism ϕ : a → b Lϕ : La → Lb

IsLiftableThroughLiftingObject ϕ : a → b ϕ ∈ ILA (a, b)?

Categories with lifting objects in CAP

A category A is called computable with a system of lifting objects LA if A is computable and is equipped with the following basic operations:

Basic operation Input Output

IsLiftingObject b b ∈ LA?

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 48 / 65 MorphismFrom- b `b : Lb → b LiftingObject

LiftingMorphism ϕ : a → b Lϕ : La → Lb

IsLiftableThroughLiftingObject ϕ : a → b ϕ ∈ ILA (a, b)?

Categories with lifting objects in CAP

A category A is called computable with a system of lifting objects LA if A is computable and is equipped with the following basic operations:

Basic operation Input Output

IsLiftingObject b b ∈ LA?

LiftingObject b Lb

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 48 / 65 LiftingMorphism ϕ : a → b Lϕ : La → Lb

IsLiftableThroughLiftingObject ϕ : a → b ϕ ∈ ILA (a, b)?

Categories with lifting objects in CAP

A category A is called computable with a system of lifting objects LA if A is computable and is equipped with the following basic operations:

Basic operation Input Output

IsLiftingObject b b ∈ LA?

LiftingObject b Lb

MorphismFrom- b `b : Lb → b LiftingObject

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 48 / 65 IsLiftableThroughLiftingObject ϕ : a → b ϕ ∈ ILA (a, b)?

Categories with lifting objects in CAP

A category A is called computable with a system of lifting objects LA if A is computable and is equipped with the following basic operations:

Basic operation Input Output

IsLiftingObject b b ∈ LA?

LiftingObject b Lb

MorphismFrom- b `b : Lb → b LiftingObject

LiftingMorphism ϕ : a → b Lϕ : La → Lb

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 48 / 65 Categories with lifting objects in CAP

A category A is called computable with a system of lifting objects LA if A is computable and is equipped with the following basic operations:

Basic operation Input Output

IsLiftingObject b b ∈ LA?

LiftingObject b Lb

MorphismFrom- b `b : Lb → b LiftingObject

LiftingMorphism ϕ : a → b Lϕ : La → Lb

IsLiftableThroughLiftingObject ϕ : a → b ϕ ∈ ILA (a, b)?

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 48 / 65 If lifts are computable in A, then StabLA (A) is computable additive.

The canonical projection functor A → StabLA (A) is additive. If A has a D-homomorphism structure such that D is abelian with

a projective distinguished object, then StabLA (A) has a D-homomorphism structure.

Remark All axioms and statements here can be dualized. The dual notation of a lifting object will be called a colifting object.

Computability of stable categories

Theorem Let A be a computable additive category equipped with a lifting system LA.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 49 / 65 The canonical projection functor A → StabLA (A) is additive. If A has a D-homomorphism structure such that D is abelian with

a projective distinguished object, then StabLA (A) has a D-homomorphism structure.

Remark All axioms and statements here can be dualized. The dual notation of a lifting object will be called a colifting object.

Computability of stable categories

Theorem Let A be a computable additive category equipped with a lifting system LA.

If lifts are computable in A, then StabLA (A) is computable additive.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 49 / 65 If A has a D-homomorphism structure such that D is abelian with

a projective distinguished object, then StabLA (A) has a D-homomorphism structure.

Remark All axioms and statements here can be dualized. The dual notation of a lifting object will be called a colifting object.

Computability of stable categories

Theorem Let A be a computable additive category equipped with a lifting system LA.

If lifts are computable in A, then StabLA (A) is computable additive.

The canonical projection functor A → StabLA (A) is additive.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 49 / 65 Remark All axioms and statements here can be dualized. The dual notation of a lifting object will be called a colifting object.

Computability of stable categories

Theorem Let A be a computable additive category equipped with a lifting system LA.

If lifts are computable in A, then StabLA (A) is computable additive.

The canonical projection functor A → StabLA (A) is additive. If A has a D-homomorphism structure such that D is abelian with

a projective distinguished object, then StabLA (A) has a D-homomorphism structure.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 49 / 65 Computability of stable categories

Theorem Let A be a computable additive category equipped with a lifting system LA.

If lifts are computable in A, then StabLA (A) is computable additive.

The canonical projection functor A → StabLA (A) is additive. If A has a D-homomorphism structure such that D is abelian with

a projective distinguished object, then StabLA (A) has a D-homomorphism structure.

Remark All axioms and statements here can be dualized. The dual notation of a lifting object will be called a colifting object.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 49 / 65 fpres ' ab, Z

Z, gap> ZZ := HomalgRingOfIntegers( ); Z gap> ab := LeftPresentations( ZZ : FinalizeCategory := false ); Category of left presentations of Z gap> AddMorphismFromLiftingObject( ab, > EpimorphismFromSomeProjectiveObject ); gap> Finalize( ab ); true gap> InfoOfInstalledOperationsOfCategory( ab ); 44 primitive operations were used to derive 196 basic ones for this ab Abelian category with enough projectives category gap> CanCompute( ab, "LiftingMorphism" ); true gap> IsAbelianCategoryWithEnoughProjectives( ab ); true

CAP demo: finitely-generated abelian groups ab

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 50 / 65 fpres ' ab, Z

gap> ab := LeftPresentations( ZZ : FinalizeCategory := false ); Category of left presentations of Z gap> AddMorphismFromLiftingObject( ab, > EpimorphismFromSomeProjectiveObject ); gap> Finalize( ab ); true gap> InfoOfInstalledOperationsOfCategory( ab ); 44 primitive operations were used to derive 196 basic ones for this ab Abelian category with enough projectives category gap> CanCompute( ab, "LiftingMorphism" ); true gap> IsAbelianCategoryWithEnoughProjectives( ab ); true

CAP demo: finitely-generated abelian groups ab

Z, gap> ZZ := HomalgRingOfIntegers( ); Z

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 50 / 65 ' ab,

gap> AddMorphismFromLiftingObject( ab, > EpimorphismFromSomeProjectiveObject ); gap> Finalize( ab ); true gap> InfoOfInstalledOperationsOfCategory( ab ); 44 primitive operations were used to derive 196 basic ones for this ab Abelian category with enough projectives category gap> CanCompute( ab, "LiftingMorphism" ); true gap> IsAbelianCategoryWithEnoughProjectives( ab ); true

CAP demo: finitely-generated abelian groups ab

, fpres Z Z gap> ZZ := HomalgRingOfIntegers( ); Z gap> ab := LeftPresentations( ZZ : FinalizeCategory := false ); Category of left presentations of Z

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 50 / 65 gap> AddMorphismFromLiftingObject( ab, > EpimorphismFromSomeProjectiveObject ); gap> Finalize( ab ); true gap> InfoOfInstalledOperationsOfCategory( ab ); 44 primitive operations were used to derive 196 basic ones for this ab Abelian category with enough projectives category gap> CanCompute( ab, "LiftingMorphism" ); true gap> IsAbelianCategoryWithEnoughProjectives( ab ); true

CAP demo: finitely-generated abelian groups ab

, fpres ' ab, Z Z gap> ZZ := HomalgRingOfIntegers( ); Z gap> ab := LeftPresentations( ZZ : FinalizeCategory := false ); Category of left presentations of Z

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 50 / 65 gap> Finalize( ab ); true gap> InfoOfInstalledOperationsOfCategory( ab ); 44 primitive operations were used to derive 196 basic ones for this ab Abelian category with enough projectives category gap> CanCompute( ab, "LiftingMorphism" ); true gap> IsAbelianCategoryWithEnoughProjectives( ab ); true

CAP demo: finitely-generated abelian groups ab

, fpres ' ab, Z Z gap> ZZ := HomalgRingOfIntegers( ); Z gap> ab := LeftPresentations( ZZ : FinalizeCategory := false ); Category of left presentations of Z gap> AddMorphismFromLiftingObject( ab, > EpimorphismFromSomeProjectiveObject );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 50 / 65 gap> InfoOfInstalledOperationsOfCategory( ab ); 44 primitive operations were used to derive 196 basic ones for this ab Abelian category with enough projectives category gap> CanCompute( ab, "LiftingMorphism" ); true gap> IsAbelianCategoryWithEnoughProjectives( ab ); true

CAP demo: finitely-generated abelian groups ab

, fpres ' ab, Z Z gap> ZZ := HomalgRingOfIntegers( ); Z gap> ab := LeftPresentations( ZZ : FinalizeCategory := false ); Category of left presentations of Z gap> AddMorphismFromLiftingObject( ab, > EpimorphismFromSomeProjectiveObject ); gap> Finalize( ab ); true

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 50 / 65 gap> CanCompute( ab, "LiftingMorphism" ); true gap> IsAbelianCategoryWithEnoughProjectives( ab ); true

CAP demo: finitely-generated abelian groups ab

, fpres ' ab, Z Z gap> ZZ := HomalgRingOfIntegers( ); Z gap> ab := LeftPresentations( ZZ : FinalizeCategory := false ); Category of left presentations of Z gap> AddMorphismFromLiftingObject( ab, > EpimorphismFromSomeProjectiveObject ); gap> Finalize( ab ); true gap> InfoOfInstalledOperationsOfCategory( ab ); 44 primitive operations were used to derive 196 basic ones for this ab Abelian category with enough projectives category

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 50 / 65 gap> IsAbelianCategoryWithEnoughProjectives( ab ); true

CAP demo: finitely-generated abelian groups ab

, fpres ' ab, Z Z gap> ZZ := HomalgRingOfIntegers( ); Z gap> ab := LeftPresentations( ZZ : FinalizeCategory := false ); Category of left presentations of Z gap> AddMorphismFromLiftingObject( ab, > EpimorphismFromSomeProjectiveObject ); gap> Finalize( ab ); true gap> InfoOfInstalledOperationsOfCategory( ab ); 44 primitive operations were used to derive 196 basic ones for this ab Abelian category with enough projectives category gap> CanCompute( ab, "LiftingMorphism" ); true

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 50 / 65 CAP demo: finitely-generated abelian groups ab

, fpres ' ab, Z Z gap> ZZ := HomalgRingOfIntegers( ); Z gap> ab := LeftPresentations( ZZ : FinalizeCategory := false ); Category of left presentations of Z gap> AddMorphismFromLiftingObject( ab, > EpimorphismFromSomeProjectiveObject ); gap> Finalize( ab ); true gap> InfoOfInstalledOperationsOfCategory( ab ); 44 primitive operations were used to derive 196 basic ones for this ab Abelian category with enough projectives category gap> CanCompute( ab, "LiftingMorphism" ); true gap> IsAbelianCategoryWithEnoughProjectives( ab ); true

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 50 / 65 gap> stable_functor := CanonicalProjectionFunctor( stable_ab ); Canonical projection functor ... gap> m := HomalgMatrix( "[ [ 2, 3, 4 ], [ 3, 4, 3 ] ]", ZZ );; gap> a := AsLeftPresentation( m ); gap> stable_a := ApplyFunctor( stable_functor, a ); gap> List( [ a, stable_a ], IsZeroForObjects ); [ false, true ] gap> SmithNormalFormIntegerMat( [ [ 2, 3, 4 ], [ 3, 4, 3 ] ] ); [ [ 1, 0, 0 ], [ 0, 1, 0 ] ] gap> InfoOfInstalledOperationsOfCategory( stable_ab ); 20 primitive operations were used to derive 73 basic ones ...

CAP demo: stable category of ab by lifting objects

, fpres ' ab, Stabprojs(fpres ) Z Z Z gap> stable_ab := StableCategoryByLiftingStructure( ab ); The stable category of Category of left presentations of Z ...

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 51 / 65 gap> m := HomalgMatrix( "[ [ 2, 3, 4 ], [ 3, 4, 3 ] ]", ZZ );; gap> a := AsLeftPresentation( m ); gap> stable_a := ApplyFunctor( stable_functor, a ); gap> List( [ a, stable_a ], IsZeroForObjects ); [ false, true ] gap> SmithNormalFormIntegerMat( [ [ 2, 3, 4 ], [ 3, 4, 3 ] ] ); [ [ 1, 0, 0 ], [ 0, 1, 0 ] ] gap> InfoOfInstalledOperationsOfCategory( stable_ab ); 20 primitive operations were used to derive 73 basic ones ...

CAP demo: stable category of ab by lifting objects

, fpres ' ab, Stabprojs(fpres ) Z Z Z gap> stable_ab := StableCategoryByLiftingStructure( ab ); The stable category of Category of left presentations of Z ... gap> stable_functor := CanonicalProjectionFunctor( stable_ab ); Canonical projection functor ...

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 51 / 65 gap> a := AsLeftPresentation( m ); gap> stable_a := ApplyFunctor( stable_functor, a ); gap> List( [ a, stable_a ], IsZeroForObjects ); [ false, true ] gap> SmithNormalFormIntegerMat( [ [ 2, 3, 4 ], [ 3, 4, 3 ] ] ); [ [ 1, 0, 0 ], [ 0, 1, 0 ] ] gap> InfoOfInstalledOperationsOfCategory( stable_ab ); 20 primitive operations were used to derive 73 basic ones ...

CAP demo: stable category of ab by lifting objects

, fpres ' ab, Stabprojs(fpres ) Z Z Z gap> stable_ab := StableCategoryByLiftingStructure( ab ); The stable category of Category of left presentations of Z ... gap> stable_functor := CanonicalProjectionFunctor( stable_ab ); Canonical projection functor ... gap> m := HomalgMatrix( "[ [ 2, 3, 4 ], [ 3, 4, 3 ] ]", ZZ );;

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 51 / 65 gap> stable_a := ApplyFunctor( stable_functor, a ); gap> List( [ a, stable_a ], IsZeroForObjects ); [ false, true ] gap> SmithNormalFormIntegerMat( [ [ 2, 3, 4 ], [ 3, 4, 3 ] ] ); [ [ 1, 0, 0 ], [ 0, 1, 0 ] ] gap> InfoOfInstalledOperationsOfCategory( stable_ab ); 20 primitive operations were used to derive 73 basic ones ...

CAP demo: stable category of ab by lifting objects

, fpres ' ab, Stabprojs(fpres ) Z Z Z gap> stable_ab := StableCategoryByLiftingStructure( ab ); The stable category of Category of left presentations of Z ... gap> stable_functor := CanonicalProjectionFunctor( stable_ab ); Canonical projection functor ... gap> m := HomalgMatrix( "[ [ 2, 3, 4 ], [ 3, 4, 3 ] ]", ZZ );; gap> a := AsLeftPresentation( m );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 51 / 65 gap> List( [ a, stable_a ], IsZeroForObjects ); [ false, true ] gap> SmithNormalFormIntegerMat( [ [ 2, 3, 4 ], [ 3, 4, 3 ] ] ); [ [ 1, 0, 0 ], [ 0, 1, 0 ] ] gap> InfoOfInstalledOperationsOfCategory( stable_ab ); 20 primitive operations were used to derive 73 basic ones ...

CAP demo: stable category of ab by lifting objects

, fpres ' ab, Stabprojs(fpres ) Z Z Z gap> stable_ab := StableCategoryByLiftingStructure( ab ); The stable category of Category of left presentations of Z ... gap> stable_functor := CanonicalProjectionFunctor( stable_ab ); Canonical projection functor ... gap> m := HomalgMatrix( "[ [ 2, 3, 4 ], [ 3, 4, 3 ] ]", ZZ );; gap> a := AsLeftPresentation( m ); gap> stable_a := ApplyFunctor( stable_functor, a );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 51 / 65 gap> SmithNormalFormIntegerMat( [ [ 2, 3, 4 ], [ 3, 4, 3 ] ] ); [ [ 1, 0, 0 ], [ 0, 1, 0 ] ] gap> InfoOfInstalledOperationsOfCategory( stable_ab ); 20 primitive operations were used to derive 73 basic ones ...

CAP demo: stable category of ab by lifting objects

, fpres ' ab, Stabprojs(fpres ) Z Z Z gap> stable_ab := StableCategoryByLiftingStructure( ab ); The stable category of Category of left presentations of Z ... gap> stable_functor := CanonicalProjectionFunctor( stable_ab ); Canonical projection functor ... gap> m := HomalgMatrix( "[ [ 2, 3, 4 ], [ 3, 4, 3 ] ]", ZZ );; gap> a := AsLeftPresentation( m ); gap> stable_a := ApplyFunctor( stable_functor, a ); gap> List( [ a, stable_a ], IsZeroForObjects ); [ false, true ]

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 51 / 65 gap> InfoOfInstalledOperationsOfCategory( stable_ab ); 20 primitive operations were used to derive 73 basic ones ...

CAP demo: stable category of ab by lifting objects

, fpres ' ab, Stabprojs(fpres ) Z Z Z gap> stable_ab := StableCategoryByLiftingStructure( ab ); The stable category of Category of left presentations of Z ... gap> stable_functor := CanonicalProjectionFunctor( stable_ab ); Canonical projection functor ... gap> m := HomalgMatrix( "[ [ 2, 3, 4 ], [ 3, 4, 3 ] ]", ZZ );; gap> a := AsLeftPresentation( m ); gap> stable_a := ApplyFunctor( stable_functor, a ); gap> List( [ a, stable_a ], IsZeroForObjects ); [ false, true ] gap> SmithNormalFormIntegerMat( [ [ 2, 3, 4 ], [ 3, 4, 3 ] ] ); [ [ 1, 0, 0 ], [ 0, 1, 0 ] ]

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 51 / 65 CAP demo: stable category of ab by lifting objects

, fpres ' ab, Stabprojs(fpres ) Z Z Z gap> stable_ab := StableCategoryByLiftingStructure( ab ); The stable category of Category of left presentations of Z ... gap> stable_functor := CanonicalProjectionFunctor( stable_ab ); Canonical projection functor ... gap> m := HomalgMatrix( "[ [ 2, 3, 4 ], [ 3, 4, 3 ] ]", ZZ );; gap> a := AsLeftPresentation( m ); gap> stable_a := ApplyFunctor( stable_functor, a ); gap> List( [ a, stable_a ], IsZeroForObjects ); [ false, true ] gap> SmithNormalFormIntegerMat( [ [ 2, 3, 4 ], [ 3, 4, 3 ] ] ); [ [ 1, 0, 0 ], [ 0, 1, 0 ] ] gap> InfoOfInstalledOperationsOfCategory( stable_ab ); 20 primitive operations were used to derive 73 basic ones ...

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 51 / 65 The same holds for the exterior algebra E of a Q-. The same holds for the category of finite representations freps(Q, I) of an acyclic quiver Q with relations given by ideal I.

More examples

We can compute the example of the previous slide for any commutative computable ring R.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 52 / 65 The same holds for the category of finite representations freps(Q, I) of an acyclic quiver Q with relations given by ideal I.

More examples

We can compute the example of the previous slide for any commutative computable ring R. The same holds for the exterior algebra E of a Q-vector space.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 52 / 65 More examples

We can compute the example of the previous slide for any commutative computable ring R. The same holds for the exterior algebra E of a Q-vector space. The same holds for the category of finite representations freps(Q, I) of an acyclic quiver Q with relations given by ideal I.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 52 / 65 and let (hi : Ai → Bi+1)i∈Z be a family of morphisms in A:

A A di di+1 A• : ··· Ai−1 Ai Ai+1 ···

hi−1 hi

B• : ··· Bi−1 Bi Bi+1 ··· B B di di+1

B A Then the morphisms (ϕi := hi di+1 + di hi−1 : Ai → Bi )i∈Z define a chain morphism ϕ• : A• → B•. Such chain morphisms are called null-homotopic.

Null-homotopic chain morphisms

Let A be an additive category and A•, B• be objects in its category of b complexes Ch•(A)

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 53 / 65 B A Then the morphisms (ϕi := hi di+1 + di hi−1 : Ai → Bi )i∈Z define a chain morphism ϕ• : A• → B•. Such chain morphisms are called null-homotopic.

Null-homotopic chain morphisms

Let A be an additive category and A•, B• be objects in its category of b complexes Ch•(A) and let (hi : Ai → Bi+1)i∈Z be a family of morphisms in A:

A A di di+1 A• : ··· Ai−1 Ai Ai+1 ···

hi−1 hi

B• : ··· Bi−1 Bi Bi+1 ··· B B di di+1

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 53 / 65 Such chain morphisms are called null-homotopic.

Null-homotopic chain morphisms

Let A be an additive category and A•, B• be objects in its category of b complexes Ch•(A) and let (hi : Ai → Bi+1)i∈Z be a family of morphisms in A:

A A di di+1 A• : ··· Ai−1 Ai Ai+1 ···

ϕ ϕ i−1 hi−1 ϕi hi i+1

B• : ··· Bi−1 Bi Bi+1 ··· B B di di+1

B A Then the morphisms (ϕi := hi di+1 + di hi−1 : Ai → Bi )i∈Z define a chain morphism ϕ• : A• → B•.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 53 / 65 Null-homotopic chain morphisms

Let A be an additive category and A•, B• be objects in its category of b complexes Ch•(A) and let (hi : Ai → Bi+1)i∈Z be a family of morphisms in A:

A A di di+1 A• : ··· Ai−1 Ai Ai+1 ···

ϕ ϕ i−1 hi−1 ϕi hi i+1

B• : ··· Bi−1 Bi Bi+1 ··· B B di di+1

B A Then the morphisms (ϕi := hi di+1 + di hi−1 : Ai → Bi )i∈Z define a chain morphism ϕ• : A• → B•. Such chain morphisms are called null-homotopic.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 53 / 65 Cone(ϕ•) where di for i ∈ Z is given by the following matrix:

 A  di−1 −ϕi−1 B . 0 di

Moreover, we have the obvious natural injection of B• in Cone(ϕ•),

usually denoted by ιϕ• .

Mapping cone

For a chain morphism ϕ• : A• → B• we define the cone of ϕ•, denoted by Cone(ϕ•), to be the following complex:

Cone(ϕ•) di ··· Ai−2 ⊕ Bi−1 Ai−1 ⊕ Bi ···

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 54 / 65 Moreover, we have the obvious natural injection of B• in Cone(ϕ•),

usually denoted by ιϕ• .

Mapping cone

For a chain morphism ϕ• : A• → B• we define the cone of ϕ•, denoted by Cone(ϕ•), to be the following complex:

Cone(ϕ•) di ··· Ai−2 ⊕ Bi−1 Ai−1 ⊕ Bi ···

Cone(ϕ•) where di for i ∈ Z is given by the following matrix:

 A  di−1 −ϕi−1 B . 0 di

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 54 / 65 Mapping cone

For a chain morphism ϕ• : A• → B• we define the cone of ϕ•, denoted by Cone(ϕ•), to be the following complex:

Cone(ϕ•) di ··· Ai−2 ⊕ Bi−1 Ai−1 ⊕ Bi ···

Cone(ϕ•) where di for i ∈ Z is given by the following matrix:

 A  di−1 −ϕi−1 B . 0 di

Moreover, we have the obvious natural injection of B• in Cone(ϕ•), usually denoted by ιϕ• .

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 54 / 65 gap> A := Source( phi ); id_A := IdentityMorphism( A ); gap> iota := NaturalInjectionInMappingCone( id_A ); gap> IsColiftable( iota, phi ); or gap> IsNullHomotopic( phi );

Mapping cone and null-homotopic morphisms

A chain morphism ϕ• : A• → B• is null-homotopic iff ιid(A•) is coliftable along ϕ•, i.e., there is δ such that the following diagram commutes:

ϕ• A• B•

ι idA• δ

Cone(idA• )

The following code in CAP checks whether ϕ is null-homotopic:

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 55 / 65 gap> iota := NaturalInjectionInMappingCone( id_A ); gap> IsColiftable( iota, phi ); or gap> IsNullHomotopic( phi );

Mapping cone and null-homotopic morphisms

A chain morphism ϕ• : A• → B• is null-homotopic iff ιid(A•) is coliftable along ϕ•, i.e., there is δ such that the following diagram commutes:

ϕ• A• B•

ι idA• δ

Cone(idA• )

The following code in CAP checks whether ϕ is null-homotopic: gap> A := Source( phi ); id_A := IdentityMorphism( A );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 55 / 65 gap> IsColiftable( iota, phi ); or gap> IsNullHomotopic( phi );

Mapping cone and null-homotopic morphisms

A chain morphism ϕ• : A• → B• is null-homotopic iff ιid(A•) is coliftable along ϕ•, i.e., there is δ such that the following diagram commutes:

ϕ• A• B•

ι idA• δ

Cone(idA• )

The following code in CAP checks whether ϕ is null-homotopic: gap> A := Source( phi ); id_A := IdentityMorphism( A ); gap> iota := NaturalInjectionInMappingCone( id_A );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 55 / 65 or gap> IsNullHomotopic( phi );

Mapping cone and null-homotopic morphisms

A chain morphism ϕ• : A• → B• is null-homotopic iff ιid(A•) is coliftable along ϕ•, i.e., there is δ such that the following diagram commutes:

ϕ• A• B•

ι idA• δ

Cone(idA• )

The following code in CAP checks whether ϕ is null-homotopic: gap> A := Source( phi ); id_A := IdentityMorphism( A ); gap> iota := NaturalInjectionInMappingCone( id_A ); gap> IsColiftable( iota, phi );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 55 / 65 Mapping cone and null-homotopic morphisms

A chain morphism ϕ• : A• → B• is null-homotopic iff ιid(A•) is coliftable along ϕ•, i.e., there is δ such that the following diagram commutes:

ϕ• A• B•

ι idA• δ

Cone(idA• )

The following code in CAP checks whether ϕ is null-homotopic: gap> A := Source( phi ); id_A := IdentityMorphism( A ); gap> iota := NaturalInjectionInMappingCone( id_A ); gap> IsColiftable( iota, phi ); or gap> IsNullHomotopic( phi );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 55 / 65 Definition Let A be an additive category, then the bounded homotopy category of A, denoted by Hob(A) is defined by

b b Ho (A) := StabC(Ch•(A)).

Theorem Let A be a computable additive category with D-homomorphism structure such that D is abelian with a projective distinguished object. Then Hob(A) is computable additive and has a D-homomorphism structure.

b System of colifting objects for Ch• (A)

Lemma The class C of split exact complexes is a system of colifting objects for Chb(A), explicitly C := Cone(id ) and c := ι : A → C . • A• A• A• idA• • A•

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 56 / 65 Theorem Let A be a computable additive category with D-homomorphism structure such that D is abelian with a projective distinguished object. Then Hob(A) is computable additive and has a D-homomorphism structure.

The bounded homotopy category

Lemma The class C of split exact complexes is a system of colifting objects for Chb(A), explicitly C := Cone(id ) and c := ι : A → C . • A• A• A• idA• • A•

Definition Let A be an additive category, then the bounded homotopy category of A, denoted by Hob(A) is defined by

b b Ho (A) := StabC(Ch•(A)).

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 56 / 65 Computability of bounded homotopy categories

Lemma The class C of split exact complexes is a system of colifting objects for Chb(A), explicitly C := Cone(id ) and c := ι : A → C . • A• A• A• idA• • A•

Definition Let A be an additive category, then the bounded homotopy category of A, denoted by Hob(A) is defined by

b b Ho (A) := StabC(Ch•(A)).

Theorem Let A be a computable additive category with D-homomorphism structure such that D is abelian with a projective distinguished object. Then Hob(A) is computable additive and has a D-homomorphism structure.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 56 / 65 gap> ab := LeftPresentations( ZZ ); Category of left presentations of Z gap> H := HomotopyCategory( ab ); Homotopy category of Category of left presentations of Z gap> InfoOfInstalledOperationsOfCategory( H ); 32 primitive operations were used to derive 92 basic ones for this ab additive category gap> F := CanonicalProjectionFunctor( H ); Canonical projection functor from Chain complexes category over Category of left presentations of Z in Homotopy category of Category of left presentations of Z

CAP demo: the bounded homotopy category of ab

Let us go back to our first example gap> ZZ := HomalgRingOfIntegers( ); Z

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 57 / 65 gap> H := HomotopyCategory( ab ); Homotopy category of Category of left presentations of Z gap> InfoOfInstalledOperationsOfCategory( H ); 32 primitive operations were used to derive 92 basic ones for this ab additive category gap> F := CanonicalProjectionFunctor( H ); Canonical projection functor from Chain complexes category over Category of left presentations of Z in Homotopy category of Category of left presentations of Z

CAP demo: the bounded homotopy category of ab

Let us go back to our first example gap> ZZ := HomalgRingOfIntegers( ); Z gap> ab := LeftPresentations( ZZ ); Category of left presentations of Z

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 57 / 65 gap> InfoOfInstalledOperationsOfCategory( H ); 32 primitive operations were used to derive 92 basic ones for this ab additive category gap> F := CanonicalProjectionFunctor( H ); Canonical projection functor from Chain complexes category over Category of left presentations of Z in Homotopy category of Category of left presentations of Z

CAP demo: the bounded homotopy category of ab

Let us go back to our first example gap> ZZ := HomalgRingOfIntegers( ); Z gap> ab := LeftPresentations( ZZ ); Category of left presentations of Z gap> H := HomotopyCategory( ab ); Homotopy category of Category of left presentations of Z

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 57 / 65 gap> F := CanonicalProjectionFunctor( H ); Canonical projection functor from Chain complexes category over Category of left presentations of Z in Homotopy category of Category of left presentations of Z

CAP demo: the bounded homotopy category of ab

Let us go back to our first example gap> ZZ := HomalgRingOfIntegers( ); Z gap> ab := LeftPresentations( ZZ ); Category of left presentations of Z gap> H := HomotopyCategory( ab ); Homotopy category of Category of left presentations of Z gap> InfoOfInstalledOperationsOfCategory( H ); 32 primitive operations were used to derive 92 basic ones for this ab additive category

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 57 / 65 CAP demo: the bounded homotopy category of ab

Let us go back to our first example gap> ZZ := HomalgRingOfIntegers( ); Z gap> ab := LeftPresentations( ZZ ); Category of left presentations of Z gap> H := HomotopyCategory( ab ); Homotopy category of Category of left presentations of Z gap> InfoOfInstalledOperationsOfCategory( H ); 32 primitive operations were used to derive 92 basic ones for this ab additive category gap> F := CanonicalProjectionFunctor( H ); Canonical projection functor from Chain complexes category over Category of left presentations of Z in Homotopy category of Category of left presentations of Z

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 57 / 65 gap> C_1 := FreeLeftPresentation( 1, ZZ );; gap> C_0 := DirectSum( C_1, C_1 );; gap> m := HomalgMatrix( [[1,3]], ZZ );; gap> dC_1 := PresentationMorphism( C_1, m, C_0 );; gap> C := ChainComplex( [ dC_1 ], 1 ); gap> D_1 := C_0; gap> D_0 := AsLeftPresentation( HomalgMatrix( [[0,2]], ZZ ) );; gap> m := HomalgMatrix( [[2,3],[5,1]], ZZ );; gap> dD_1 := PresentationMorphism( D_1, m, D_0 );; gap> D := ChainComplex( [ dD_1 ], 1 );

CAP demo: the bounded homotopy category of ab

1 3  × × C : 0 Z1 2 Z1 1 0  26 13  15 7  13 13  2 3  1×2 5 1 Z 1×2 D : 0 h(0 2)i Z 0

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 58 / 65 gap> m := HomalgMatrix( [[1,3]], ZZ );; gap> dC_1 := PresentationMorphism( C_1, m, C_0 );; gap> C := ChainComplex( [ dC_1 ], 1 ); gap> D_1 := C_0; gap> D_0 := AsLeftPresentation( HomalgMatrix( [[0,2]], ZZ ) );; gap> m := HomalgMatrix( [[2,3],[5,1]], ZZ );; gap> dD_1 := PresentationMorphism( D_1, m, D_0 );; gap> D := ChainComplex( [ dD_1 ], 1 );

CAP demo: the bounded homotopy category of ab

1 3  × × C : 0 Z1 2 Z1 1 0  26 13  15 7  13 13  2 3  1×2 5 1 Z 1×2 D : 0 h(0 2)i Z 0

gap> C_1 := FreeLeftPresentation( 1, ZZ );; gap> C_0 := DirectSum( C_1, C_1 );;

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 58 / 65 gap> D_1 := C_0; gap> D_0 := AsLeftPresentation( HomalgMatrix( [[0,2]], ZZ ) );; gap> m := HomalgMatrix( [[2,3],[5,1]], ZZ );; gap> dD_1 := PresentationMorphism( D_1, m, D_0 );; gap> D := ChainComplex( [ dD_1 ], 1 );

CAP demo: the bounded homotopy category of ab

1 3  × × C : 0 Z1 2 Z1 1 0  26 13  15 7  13 13  2 3  1×2 5 1 Z 1×2 D : 0 h(0 2)i Z 0

gap> C_1 := FreeLeftPresentation( 1, ZZ );; gap> C_0 := DirectSum( C_1, C_1 );; gap> m := HomalgMatrix( [[1,3]], ZZ );; gap> dC_1 := PresentationMorphism( C_1, m, C_0 );; gap> C := ChainComplex( [ dC_1 ], 1 );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 58 / 65 gap> m := HomalgMatrix( [[2,3],[5,1]], ZZ );; gap> dD_1 := PresentationMorphism( D_1, m, D_0 );; gap> D := ChainComplex( [ dD_1 ], 1 );

CAP demo: the bounded homotopy category of ab

1 3  × × C : 0 Z1 2 Z1 1 0  26 13  15 7  13 13  2 3  1×2 5 1 Z 1×2 D : 0 h(0 2)i Z 0

gap> C_1 := FreeLeftPresentation( 1, ZZ );; gap> C_0 := DirectSum( C_1, C_1 );; gap> m := HomalgMatrix( [[1,3]], ZZ );; gap> dC_1 := PresentationMorphism( C_1, m, C_0 );; gap> C := ChainComplex( [ dC_1 ], 1 ); gap> D_1 := C_0; gap> D_0 := AsLeftPresentation( HomalgMatrix( [[0,2]], ZZ ) );;

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 58 / 65 CAP demo: the bounded homotopy category of ab

1 3  × × C : 0 Z1 2 Z1 1 0  26 13  15 7  13 13  2 3  1×2 5 1 Z 1×2 D : 0 h(0 2)i Z 0

gap> C_1 := FreeLeftPresentation( 1, ZZ );; gap> C_0 := DirectSum( C_1, C_1 );; gap> m := HomalgMatrix( [[1,3]], ZZ );; gap> dC_1 := PresentationMorphism( C_1, m, C_0 );; gap> C := ChainComplex( [ dC_1 ], 1 ); gap> D_1 := C_0; gap> D_0 := AsLeftPresentation( HomalgMatrix( [[0,2]], ZZ ) );; gap> m := HomalgMatrix( [[2,3],[5,1]], ZZ );; gap> dD_1 := PresentationMorphism( D_1, m, D_0 );; gap> D := ChainComplex( [ dD_1 ], 1 );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 58 / 65 gap> m := HomalgMatrix( [[15,7]], ZZ );; gap> phi_1 := PresentationMorphism( C_1, m, D_1 ); gap> phi := ChainMorphism( C, D, [ phi_0, phi_1 ], 0 ); gap> F_phi := ApplyFunctor( F, phi ); gap> IsZero( F_phi ); true gap> h_morphisms := HomotopyMorphisms( F_phi );

CAP demo: the bounded homotopy category of ab

1 3  × × C : 0 Z1 2 Z1 1 0  26 13  15 7  13 13  2 3  1×2 5 1 Z 1×2 D : 0 h(0 2)i Z 0

gap> m := HomalgMatrix( [[26,13],[13,13]], ZZ );; gap> phi_0 := PresentationMorphism( C_0, m, D_0 );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 59 / 65 gap> phi := ChainMorphism( C, D, [ phi_0, phi_1 ], 0 ); gap> F_phi := ApplyFunctor( F, phi ); gap> IsZero( F_phi ); true gap> h_morphisms := HomotopyMorphisms( F_phi );

CAP demo: the bounded homotopy category of ab

1 3  × × C : 0 Z1 2 Z1 1 0  26 13  15 7  13 13  2 3  1×2 5 1 Z 1×2 D : 0 h(0 2)i Z 0

gap> m := HomalgMatrix( [[26,13],[13,13]], ZZ );; gap> phi_0 := PresentationMorphism( C_0, m, D_0 ); gap> m := HomalgMatrix( [[15,7]], ZZ );; gap> phi_1 := PresentationMorphism( C_1, m, D_1 );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 59 / 65 gap> h_morphisms := HomotopyMorphisms( F_phi );

CAP demo: the bounded homotopy category of ab

1 3  × × C : 0 Z1 2 Z1 1 0  26 13  15 7  13 13  2 3  1×2 5 1 Z 1×2 D : 0 h(0 2)i Z 0

gap> m := HomalgMatrix( [[26,13],[13,13]], ZZ );; gap> phi_0 := PresentationMorphism( C_0, m, D_0 ); gap> m := HomalgMatrix( [[15,7]], ZZ );; gap> phi_1 := PresentationMorphism( C_1, m, D_1 ); gap> phi := ChainMorphism( C, D, [ phi_0, phi_1 ], 0 ); gap> F_phi := ApplyFunctor( F, phi ); gap> IsZero( F_phi ); true

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 59 / 65 CAP demo: the bounded homotopy category of ab

1 3  × × C : 0 Z1 2 Z1 1 0  26 13  15 7  13 13  2 3  1×2 5 1 Z 1×2 D : 0 h(0 2)i Z 0

gap> m := HomalgMatrix( [[26,13],[13,13]], ZZ );; gap> phi_0 := PresentationMorphism( C_0, m, D_0 ); gap> m := HomalgMatrix( [[15,7]], ZZ );; gap> phi_1 := PresentationMorphism( C_1, m, D_1 ); gap> phi := ChainMorphism( C, D, [ phi_0, phi_1 ], 0 ); gap> F_phi := ApplyFunctor( F, phi ); gap> IsZero( F_phi ); true gap> h_morphisms := HomotopyMorphisms( F_phi );

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 59 / 65 gap> h0 := h_morphisms[ 0 ]; gap> Display( h0 ); [ [ 633, -248 ], [ -206, 85 ] ]

A morphism in Category of left presentations of Z gap> IsCongruentForMorphisms( PreCompose( C^1, h0 ), phi[1] ); true gap> IsCongruentForMorphisms( PreCompose( h0, D^1 ), phi[0] ); true

CAP demo: the bounded homotopy category of ab

1 3  × × C : 0 Z1 2 Z1 1 0  26 13  15 7  13 13  2 3  1×2 5 1 Z 1×2 D : 0 h(0 2)i Z 0

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 60 / 65 gap> Display( h0 ); [ [ 633, -248 ], [ -206, 85 ] ]

A morphism in Category of left presentations of Z gap> IsCongruentForMorphisms( PreCompose( C^1, h0 ), phi[1] ); true gap> IsCongruentForMorphisms( PreCompose( h0, D^1 ), phi[0] ); true

CAP demo: the bounded homotopy category of ab

1 3  × × C : 0 Z1 2 Z1 1 0  26 13  15 7  13 13  2 3  1×2 5 1 Z 1×2 D : 0 h(0 2)i Z 0

gap> h0 := h_morphisms[ 0 ];

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 60 / 65 gap> IsCongruentForMorphisms( PreCompose( C^1, h0 ), phi[1] ); true gap> IsCongruentForMorphisms( PreCompose( h0, D^1 ), phi[0] ); true

CAP demo: the bounded homotopy category of ab

1 3  × × C : 0 Z1 2 Z1 1 0  26 13  15 7  13 13  2 3  1×2 5 1 Z 1×2 D : 0 h(0 2)i Z 0

gap> h0 := h_morphisms[ 0 ]; gap> Display( h0 ); [ [ 633, -248 ], [ -206, 85 ] ]

A morphism in Category of left presentations of Z

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 60 / 65 gap> IsCongruentForMorphisms( PreCompose( h0, D^1 ), phi[0] ); true

CAP demo: the bounded homotopy category of ab

1 3  × × C : 0 Z1 2 Z1 1 0  26 13  15 7  13 13  2 3  1×2 5 1 Z 1×2 D : 0 h(0 2)i Z 0

gap> h0 := h_morphisms[ 0 ]; gap> Display( h0 ); [ [ 633, -248 ], [ -206, 85 ] ]

A morphism in Category of left presentations of Z gap> IsCongruentForMorphisms( PreCompose( C^1, h0 ), phi[1] ); true

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 60 / 65 CAP demo: the bounded homotopy category of ab

1 3  × × C : 0 Z1 2 Z1 1 0  26 13  15 7  13 13  2 3  1×2 5 1 Z 1×2 D : 0 h(0 2)i Z 0

gap> h0 := h_morphisms[ 0 ]; gap> Display( h0 ); [ [ 633, -248 ], [ -206, 85 ] ]

A morphism in Category of left presentations of Z gap> IsCongruentForMorphisms( PreCompose( C^1, h0 ), phi[1] ); true gap> IsCongruentForMorphisms( PreCompose( h0, D^1 ), phi[0] ); true

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 60 / 65 b For any commutative computable ring S, the category Ho (fpresS) is computable additive with fpresS-homomorphism structure. n For the Z≥0-graded, Z≤0-graded exterior algebra E of Q , the b categories Stabprojs(E-gfpres) and Ho (E-gfpres) are computable additive with RowsQ-homomorphism structure.

More examples

For an acyclic quiver Q with relations given by ideal I, the category b( ( , )) Ho frepsQ Q I is computable additive with RowsQ-homomorphism structure.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 61 / 65 n For the Z≥0-graded, Z≤0-graded exterior algebra E of Q , the b categories Stabprojs(E-gfpres) and Ho (E-gfpres) are computable additive with RowsQ-homomorphism structure.

More examples

For an acyclic quiver Q with relations given by ideal I, the category b( ( , )) Ho frepsQ Q I is computable additive with RowsQ-homomorphism structure. b For any commutative computable ring S, the category Ho (fpresS) is computable additive with fpresS-homomorphism structure.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 61 / 65 More examples

For an acyclic quiver Q with relations given by ideal I, the category b( ( , )) Ho frepsQ Q I is computable additive with RowsQ-homomorphism structure. b For any commutative computable ring S, the category Ho (fpresS) is computable additive with fpresS-homomorphism structure. n For the Z≥0-graded, Z≤0-graded exterior algebra E of Q , the b categories Stabprojs(E-gfpres) and Ho (E-gfpres) are computable additive with RowsQ-homomorphism structure.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 61 / 65 Equivalences of categories can help answering many questions. A very famous example for this is

b ∼ b n ∼ D (n-Beilinson quiver) = D (P ) = Stabprojs(E-gfpres).

Applications

Some bounded derived categories are equivalent to bounded b homotopy categories, for instance D (fpresR) for any computable ring R with finite global .

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 62 / 65 A very famous example for this is

b ∼ b n ∼ D (n-Beilinson quiver) = D (P ) = Stabprojs(E-gfpres).

Applications

Some bounded derived categories are equivalent to bounded b homotopy categories, for instance D (fpresR) for any computable ring R with finite global dimension. Equivalences of categories can help answering many questions.

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 62 / 65 Applications

Some bounded derived categories are equivalent to bounded b homotopy categories, for instance D (fpresR) for any computable ring R with finite global dimension. Equivalences of categories can help answering many questions. A very famous example for this is

b ∼ b n ∼ D (n-Beilinson quiver) = D (P ) = Stabprojs(E-gfpres).

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 62 / 65 CAP

Try out CAP interactively: https://sebastianpos.github.io/Try-out-CAP/ CAP on GitHub: https://github.com/homalg-project/CAP_project

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 63 / 65 ReferencesI

Mohamed Barakat and Markus Lange-Hegermann, An axiomatic setup for algorithmic homological algebra and an alternative approach to localization, J. Algebra Appl. 10 (2011), no. 2, 269–293, (arXiv:1003.1943). MR 2795737 (2012f:18022) Sebastian Gutsche, Øystein Skartsæterhagen, and Sebastian Posur, The CAP project – Categories, Algorithms, Programming, (http://homalg-project.github.io/CAP_project), 2013–2018. Sebastian Gutsche, Constructive category theory and applications to algebraic geometry, Ph.D. thesis, University of Siegen, 2017, (http://dokumentix.ub.uni-siegen.de/opus/ volltexte/2017/1241/).

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 64 / 65 ReferencesII

Sebastian Posur, A constructive approach to Freyd categories, ArXiv e-prints (2017), (arXiv:1712.03492). Sebastian Posur, Constructive category theory and applications to equivariant sheaves, Ph.D. thesis, University of Siegen, 2017, (http://dokumentix.ub.uni-siegen.de/opus/ volltexte/2017/1179/).

Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 65 / 65