A framework for constructive category theory in computer algebra
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 category theory
Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 2 / 65 Addition 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 morphisms, 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 ring. 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 matrix M ∈ R can represent the module 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 morphism
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 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
ϕ 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 commutative ring. × × 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 isomorphism ν : 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 additive category. 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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
Posur, Saleh, Zickgraf (Siegen) CAP July 15, 2019 51 / 65 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.
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