From 84f2db15cf050b5d944d0d041c67721d2583e183 Mon Sep 17 00:00:00 2001 From: Tibor Gruen Date: Mon, 17 Aug 2020 16:08:48 +0200 Subject: [PATCH] clean up of previous commits --- examples/ConvertToMapOfFinSets.g | 15 +- examples/RelationsOfEndomorphisms.g | 61 ++- examples/RepresentingC4C4.g | 461 ++++++++++---------- examples/{ => rest}/NaturalTransformation.g | 102 ++--- 4 files changed, 307 insertions(+), 332 deletions(-) rename examples/{ => rest}/NaturalTransformation.g (94%) diff --git a/examples/ConvertToMapOfFinSets.g b/examples/ConvertToMapOfFinSets.g index abdb0cd..4d9be49 100644 --- a/examples/ConvertToMapOfFinSets.g +++ b/examples/ConvertToMapOfFinSets.g @@ -28,12 +28,12 @@ Display( g ); #! @EndExample #! We can also create finite concrete categories with objects -#! not starting from 1, to demonstrate that -#! ConcreteCategoryForCAP( [ [,,,5,6,4], [,,,7,8,9], [,,,,,,8,9,7] ] ) -#! and ConcreteCategoryForCAP( [ [2,3,1], [4,5,6], [,,,5,6,4] ] ) yield -#! equivalent categories, i.e. their underlying quivers are -#! the same and they give the same algebroid and category -#! of representations. +#! not starting with $1$, to demonstrate that +#! ConcreteCategoryForCAP( [ [,,,5,6,4], [,,,7,8,9], [,,,,,,8,9,7] ] ) +#! and ConcreteCategoryForCAP( [ [2,3,1], [4,5,6], [,,,5,6,4] ] ) yield +#! isomorphic categories, in particular, their underlying quivers are +#! isomorphic (here even equal), inducing isomorphic algebroids and +#! isomorphic categories of representations. #! @Example ccat := ConcreteCategoryForCAP( [ [2,3,1], [4,5,6], [,,,5,6,4] ] ); @@ -57,6 +57,3 @@ CatReps2 := Hom( A2, GF3 ); CatReps1 = CatReps2; #! true #! @EndExample - - - diff --git a/examples/RelationsOfEndomorphisms.g b/examples/RelationsOfEndomorphisms.g index 3d35c09..5ce8991 100644 --- a/examples/RelationsOfEndomorphisms.g +++ b/examples/RelationsOfEndomorphisms.g @@ -1,31 +1,30 @@ -#! @BeginChunk Endomorphisms - -LoadPackage( "CatReps" ); - -#! -#! Two examples to test if RelationsOfEndomorphisms also works -#! on endomorphisms that aren't bijective. -#! The first example is a constant endomorphism, so applying -#! it twice should be the same as once. - -#! @Example -GF3 := HomalgRingOfIntegers(3); -#! GF(3) -ccat := ConcreteCategoryForCAP( [ [1,1,1], [4,5,6], [,,,5,6,4] ] ); -#! A finite concrete category -relEndo := RelationsOfEndomorphisms( GF3, ccat ); -#! [ Z(3)^0*(a*a) + Z(3)*(a), Z(3)^0*(c*c*c) + Z(3)*(2) ] -#! @EndExample - -#! The next example is the permutation by the companion matrix to $a^8-a^3$, so -#! neither $a^5-a^0$, $a^6-a^1$ nor $a^7-a^2$ are zero: - -#! @Example -GF3 := HomalgRingOfIntegers(3); -#! GF(3) -ccat := ConcreteCategoryForCAP( [ [2,3,4,5,6,7,8,4] ] ); -#! A finite concrete category -relEndo := RelationsOfEndomorphisms( GF3, ccat ); -#! [ Z(3)^0*(a*a*a*a*a*a*a*a) + Z(3)*(a*a*a) ] -#! @EndExample -#! @EndChunk \ No newline at end of file +#! @BeginChunk Endomorphisms + +LoadPackage( "CatReps" ); + +#! The two examples below test RelationsOfEndomorphisms +#! on endomorphisms that are not bijective. + +#! The first generating morphism of the first example is constant, and hence an idempotent. + +#! @Example +GF3 := HomalgRingOfIntegers(3); +#! GF(3) +ccat := ConcreteCategoryForCAP( [ [1,1,1], [4,5,6], [,,,5,6,4] ] ); +#! A finite concrete category +relEndo := RelationsOfEndomorphisms( GF3, ccat ); +#! [ Z(3)^0*(a*a) + Z(3)*(a), Z(3)^0*(c*c*c) + Z(3)*(2) ] +#! @EndExample + +#! The next example is a single permutation defined by the companion matrix of $a^8-a^3$, hence +#! neither $a^5-a^0$, $a^6-a^1$, nor $a^7-a^2$ are zero: + +#! @Example +GF3 := HomalgRingOfIntegers(3); +#! GF(3) +ccat := ConcreteCategoryForCAP( [ [2,3,4,5,6,7,8,4] ] ); +#! A finite concrete category +relEndo := RelationsOfEndomorphisms( GF3, ccat ); +#! [ Z(3)^0*(a*a*a*a*a*a*a*a) + Z(3)*(a*a*a) ] +#! @EndExample +#! @EndChunk diff --git a/examples/RepresentingC4C4.g b/examples/RepresentingC4C4.g index 8224a71..8d8610d 100644 --- a/examples/RepresentingC4C4.g +++ b/examples/RepresentingC4C4.g @@ -1,241 +1,220 @@ -#! @BeginChunk RepresentingC4C4 - -LoadPackage( "CatReps" ); - -#! In order to understand the workings and choices in the first example, -#! I made a similar example to compare the results. - -#! @Example -c4c4 := ConcreteCategoryForCAP( [ [2,3,4,1], [5,6,7,8], - [,,,,6,7,8,5] ] ); -#! A finite concrete category -HOMALG_MATRICES.PreferDenseMatrices := true; -#! true -GF3 := HomalgRingOfIntegers( 3 ); -#! GF(3) -kq := Algebroid( GF3, c4c4 ); -#! Algebroid generated by the right quiver -#! q(2)[a:1->1,b:1->2,c:2->2] -UnderlyingQuiverAlgebra( kq ); -#! (GF(3) * q) / -#! [ Z(3)^0*(a*a*a*a) + Z(3)*(1), -#! Z(3)^0*(c*c*c*c) + Z(3)*(2), -#! Z(3)*(b*c) + Z(3)^0*(a*b) ] -SetIsLinearClosureOfACategory( kq, true ); -#! @EndExample - -#! We are now looking to represent our concrete category -#! $c4c4$, i.e. we want to find matrices a, b, c that -#! satisfy the relations of the Algebroid. -#! Since the endomorphisms are permutations on a set of -#! 4 elements it makes sense to choose permutation matrices. -#! But if we choose 4x4 permutation matrices for both -#! endomorphisms, the only possible matrix for b would -#! be the 4x4 identity matrix, which isn't very interesting. -#! Instead we can see the permutations on 4 elements in -#! $S_4$ as elements of $Stab_{5,6}$ subset $S_6$ or of -#! $Stab_{5}$ subset $S_5$. As permutation matrices, they -#! are block diagonal matrices with the smaller permutation -#! matrix on 4 elements complemented with a 2x2 or 1x1 -#! identity matrix on the diagonal. -#! This gives us two different -#! dimensions for our target matrix category, $6$ and $5$ -#! respectively, and makes the choice of the matrix for b -#! less trivial. - -#! @Example -CatReps := Hom( kq, GF3 ); -#! The category of functors: Algebroid generated by the -#! right quiver q(2)[a:1->1,b:1->2,c:2->2] -> -#! Category of matrices over GF(3) -#aMat := HomalgMatrix( [ -aMat :=[ - [ 0,0,0,1,0,0 ], - [ 1,0,0,0,0,0 ], - [ 0,1,0,0,0,0 ], - [ 0,0,1,0,0,0 ], - [ 0,0,0,0,1,0 ], - [ 0,0,0,0,0,1 ] -];; -# ], 6, 6, GF3 ); -# -#cMat := HomalgMatrix( [ -cMat := [ - [ 0,0,0,1,0 ], - [ 1,0,0,0,0 ], - [ 0,1,0,0,0 ], - [ 0,0,1,0,0 ], - [ 0,0,0,0,1 ] -];; -# ], 5, 5, GF3 ); -# -Display( aMat^4 ); -#! [ [ 1, 0, 0, 0, 0, 0 ], -#! [ 0, 1, 0, 0, 0, 0 ], -#! [ 0, 0, 1, 0, 0, 0 ], -#! [ 0, 0, 0, 1, 0, 0 ], -#! [ 0, 0, 0, 0, 1, 0 ], -#! [ 0, 0, 0, 0, 0, 1 ] ] -Display( cMat^4 ); -#! [ [ 1, 0, 0, 0, 0 ], -#! [ 0, 1, 0, 0, 0 ], -#! [ 0, 0, 1, 0, 0 ], -#! [ 0, 0, 0, 1, 0 ], -#! [ 0, 0, 0, 0, 1 ] ] -#! @EndExample - -#! I calculated by hand the matrix multiplications -#! $a*b = b*c$ and what they imply for the entries in b -#! given the matrices a and c above. The result is that -#! from the 30 variables $b_{11},...,b_{65}$ only -#! nine free variables remain, which can be set to -#! any element in our field: -#! - -#! @Example -b11 := 0;; b12 := 1;; b13 := 0;; b21 := 1;; -b15 := 0;; b51 := 1;; b55 := 0;; b61 := 1;; b65 := 1;; - -#bMat := HomalgMatrix( [ -bMat := [ - [b11,b12,b13,b21,b15], - [b21,b11,b12,b13,b15], - [b13,b21,b11,b12,b15], - [b12,b13,b21,b11,b15], - [b51,b51,b51,b51,b55], - [b61,b61,b61,b61,b65] -];; -#], 6,5, GF3 ); -# -Display( bMat ); -#! [ [ 0, 1, 0, 1, 0 ], -#! [ 1, 0, 1, 0, 0 ], -#! [ 0, 1, 0, 1, 0 ], -#! [ 1, 0, 1, 0, 0 ], -#! [ 1, 1, 1, 1, 0 ], -#! [ 1, 1, 1, 1, 1 ] ] -Display( aMat*bMat ); -#! [ [ 1, 0, 1, 0, 0 ], -#! [ 0, 1, 0, 1, 0 ], -#! [ 1, 0, 1, 0, 0 ], -#! [ 0, 1, 0, 1, 0 ], -#! [ 1, 1, 1, 1, 0 ], -#! [ 1, 1, 1, 1, 1 ] ] -Display( bMat*cMat ); -#! [ [ 1, 0, 1, 0, 0 ], -#! [ 0, 1, 0, 1, 0 ], -#! [ 1, 0, 1, 0, 0 ], -#! [ 0, 1, 0, 1, 0 ], -#! [ 1, 1, 1, 1, 0 ], -#! [ 1, 1, 1, 1, 1 ] ] -aMat*bMat = bMat*cMat; -#! true -#! @EndExample - -#! So the three relations in our algebroid should be satisfied -#! by these matrices, therefore they should make a -#! well-defined representation of C4C4. (Defining the matrices -#! as HomalgMatrices instead of GAP matrices yields in an error -#! in RecordOfCatRep which is used in WeakDirectSumDecomposition, -#! so for now they are defined as GAP matrices). - -#! @Example -eleven := AsObjectInHomCategory( kq, [ 6, 5 ], [ aMat, bMat, cMat ] ); -#! <(1)->6, (2)->5; (a)->6x6, (b)->6x5, (c)->5x5> -IsWellDefined( eleven ); -#! true -Display( eleven ); -#! An object in The category of functors: Algebroid -#! generated by the right quiver q(2)[a:1->1,b:1->2,c:2->2] -#! -> Category of matrices over GF(3) defined by the following data: -#! -#! -#! Image of <(1)>: -#! A vector space object over GF(3) of dimension 6 -#! -#! Image of <(2)>: -#! A vector space object over GF(3) of dimension 5 -#! -#! Image of (1)-[{ Z(3)^0*(a) }]->(1): -#! . . . 1 . . -#! 1 . . . . . -#! . 1 . . . . -#! . . 1 . . . -#! . . . . 1 . -#! . . . . . 1 -#! -#! A morphism in Category of matrices over GF(3) -#! -#! -#! Image of (1)-[{ Z(3)^0*(b) }]->(2): -#! . 1 . 1 . -#! 1 . 1 . . -#! . 1 . 1 . -#! 1 . 1 . . -#! 1 1 1 1 . -#! 1 1 1 1 1 -#! -#! A morphism in Category of matrices over GF(3) -#! -#! -#! Image of (2)-[{ Z(3)^0*(c) }]->(2): -#! . . . 1 . -#! 1 . . . . -#! . 1 . . . -#! . . 1 . . -#! . . . . 1 -#! -#! A morphism in Category of matrices over GF(3) -gammas := WeakDirectSumDecomposition( eleven ); -#! [ <(1)->1x6, (2)->0x5>, <(1)->1x6, (2)->1x5>, <(1)->1x6, (2)->1x5>, -#! <(1)->2x6, (2)->0x5>, <(1)->0x6, (2)->2x5>, <(1)->1x6, (2)->1x5> ] -#! @EndExample - -#! As opposed to nine in the first example, eleven itself -#! can already be decomposed. - -#! @Example -Display( Source( UniversalMorphismFromDirectSum( gammas ) ) ); -#! An object in The category of functors: Algebroid -#! generated by the right quiver q(2)[a:1->1,b:1->2,c:2->2] -#! -> Category of matrices over GF(3) defined by the following data: -#! -#! -#! Image of <(1)>: -#! A vector space object over GF(3) of dimension 6 -#! -#! Image of <(2)>: -#! A vector space object over GF(3) of dimension 5 -#! -#! Image of (1)-[{ Z(3)^0*(a) }]->(1): -#! 1 . . . . . -#! . 1 . . . . -#! . . 2 . . . -#! . . . . 2 . -#! . . . 1 . . -#! . . . . . 1 -#! -#! A morphism in Category of matrices over GF(3) -#! -#! -#! Image of (1)-[{ Z(3)^0*(b) }]->(2): -#! . . . . . -#! 1 . . . . -#! . 1 . . . -#! . . . . . -#! . . . . . -#! . . . . 2 -#! -#! A morphism in Category of matrices over GF(3) -#! -#! -#! Image of (2)-[{ Z(3)^0*(c) }]->(2): -#! 1 . . . . -#! . 2 . . . -#! . . 2 2 . -#! . . 2 1 . -#! . . . . 1 -#! -#! A morphism in Category of matrices over GF(3) -#! @EndExample -#! @EndChunk +#! @BeginChunk RepresentingC4C4 + +LoadPackage( "CatReps" ); + +#! In order to understand the choices in the above example, +#! we made a similar example to compare the results. + +#! @Example +c4c4 := ConcreteCategoryForCAP( [ [2,3,4,1], [5,6,7,8], [,,,,6,7,8,5] ] ); +#! A finite concrete category +HOMALG_MATRICES.PreferDenseMatrices := true; +#! true +GF3 := HomalgRingOfIntegers( 3 ); +#! GF(3) +kq := Algebroid( GF3, c4c4 ); +#! Algebroid generated by the right quiver +#! q(2)[a:1->1,b:1->2,c:2->2] +UnderlyingQuiverAlgebra( kq ); +#! (GF(3) * q) / +#! [ Z(3)^0*(a*a*a*a) + Z(3)*(1), +#! Z(3)^0*(c*c*c*c) + Z(3)*(2), +#! Z(3)*(b*c) + Z(3)^0*(a*b) ] +SetIsLinearClosureOfACategory( kq, true ); +#! @EndExample + +#! In order to find representations of our concrete category +#! $C4C4$ we need to find matrices $a, b, c$ that +#! satisfy the relations of the algebroid. +#! Here we choose permutation matrices corresponding to the two permutations +#! $a, c$. +#! We view the permutations on $4$ points in +#! $\mathrm{S}_4$ as elements of $\mathrm{Stab}_{\mathrm{S}_6}(5,6)$ or of +#! $\mathrm{Stab}_{\mathrm{S}_5}(5)$. As permutation matrices, they +#! are block diagonal matrices with the smaller permutation +#! matrix on $4$ elements complemented with a $2 \times 2$ or $1 \times 1$ +#! identity matrix on the diagonal. +#! This gives us two different +#! dimensions for our target matrix category, $6$ and $5$ +#! respectively, and makes the choice of the matrix for b +#! less trivial. + +#! @Example +CatReps := Hom( kq, GF3 ); +#! The category of functors: Algebroid generated by the +#! right quiver q(2)[a:1->1,b:1->2,c:2->2] -> +#! Category of matrices over GF(3) +amat := HomalgMatrix( One( GF3 ) * +[ [ 0,0,0,1,0,0 ], + [ 1,0,0,0,0,0 ], + [ 0,1,0,0,0,0 ], + [ 0,0,1,0,0,0 ], + [ 0,0,0,0,1,0 ], + [ 0,0,0,0,0,1 ] ], 6, 6, GF3 ); +#! +cmat := HomalgMatrix( One(GF3) * +[ [ 0,0,0,1,0 ], + [ 1,0,0,0,0 ], + [ 0,1,0,0,0 ], + [ 0,0,1,0,0 ], + [ 0,0,0,0,1 ] ], 5, 5, GF3 ); +#! +Display( amat^4 ); +#! 1 . . . . . +#! . 1 . . . . +#! . . 1 . . . +#! . . . 1 . . +#! . . . . 1 . +#! . . . . . 1 +Display( cmat^4 ); +#! 1 . . . . +#! . 1 . . . +#! . . 1 . . +#! . . . 1 . +#! . . . . 1 +#! @EndExample + +#! Given the matrices $a$ and $c$ above one can now solve the homogenous linear system +#! $a*b = b*c$ in the $30$ unknowns $b_{11},...,b_{65}$. +#! The following $9$ variables are free variables: + +#! @Example +b11 := 0;; b12 := 1;; b13 := 0;; b21 := 1;; +b15 := 0;; b51 := 1;; b55 := 0;; b61 := 1;; b65 := 1;; +bmat := HomalgMatrix( One( GF3 ) * +[ [b11,b12,b13,b21,b15], + [b21,b11,b12,b13,b15], + [b13,b21,b11,b12,b15], + [b12,b13,b21,b11,b15], + [b51,b51,b51,b51,b55], + [b61,b61,b61,b61,b65] ], 6, 5, GF3 ); +#! +Display( bmat ); +#! . 1 . 1 . +#! 1 . 1 . . +#! . 1 . 1 . +#! 1 . 1 . . +#! 1 1 1 1 . +#! 1 1 1 1 1 +Display( amat * bmat ); +#! 1 . 1 . . +#! . 1 . 1 . +#! 1 . 1 . . +#! . 1 . 1 . +#! 1 1 1 1 . +#! 1 1 1 1 1 +Display( bmat * cmat ); +#! 1 . 1 . . +#! . 1 . 1 . +#! 1 . 1 . . +#! . 1 . 1 . +#! 1 1 1 1 . +#! 1 1 1 1 1 +amat * bmat = bmat * cmat; +#! true +#! @EndExample + +#! So the three relations in our algebroid should be satisfied +#! by these matrices, therefore they should provide a +#! well-defined representation of C4C4. + +#! @Example +eleven := AsObjectInHomCategory( kq, [ 6, 5 ], [ amat, bmat, cmat ] ); +#! <(1)->6, (2)->5; (a)->6x6, (b)->6x5, (c)->5x5> +IsWellDefined( eleven ); +#! true +Display( eleven ); +#! An object in The category of functors: Algebroid +#! generated by the right quiver q(2)[a:1->1,b:1->2,c:2->2] +#! -> Category of matrices over GF(3) defined by the following data: +#! +#! +#! Image of <(1)>: +#! A vector space object over GF(3) of dimension 6 +#! +#! Image of <(2)>: +#! A vector space object over GF(3) of dimension 5 +#! +#! Image of (1)-[{ Z(3)^0*(a) }]->(1): +#! . . . 1 . . +#! 1 . . . . . +#! . 1 . . . . +#! . . 1 . . . +#! . . . . 1 . +#! . . . . . 1 +#! +#! A morphism in Category of matrices over GF(3) +#! +#! +#! Image of (1)-[{ Z(3)^0*(b) }]->(2): +#! . 1 . 1 . +#! 1 . 1 . . +#! . 1 . 1 . +#! 1 . 1 . . +#! 1 1 1 1 . +#! 1 1 1 1 1 +#! +#! A morphism in Category of matrices over GF(3) +#! +#! +#! Image of (2)-[{ Z(3)^0*(c) }]->(2): +#! . . . 1 . +#! 1 . . . . +#! . 1 . . . +#! . . 1 . . +#! . . . . 1 +#! +#! A morphism in Category of matrices over GF(3) +gammas := WeakDirectSumDecomposition( eleven ); +#! [ <(1)->1x6, (2)->0x5>, <(1)->1x6, (2)->1x5>, <(1)->1x6, (2)->1x5>, +#! <(1)->2x6, (2)->0x5>, <(1)->0x6, (2)->2x5>, <(1)->1x6, (2)->1x5> ] +#! @EndExample + +#! As opposed to nine in the previous example, eleven itself +#! can already be decomposed. + +#! @Example +Display( Source( UniversalMorphismFromDirectSum( gammas ) ) ); +#! An object in The category of functors: Algebroid +#! generated by the right quiver q(2)[a:1->1,b:1->2,c:2->2] +#! -> Category of matrices over GF(3) defined by the following data: +#! +#! +#! Image of <(1)>: +#! A vector space object over GF(3) of dimension 6 +#! +#! Image of <(2)>: +#! A vector space object over GF(3) of dimension 5 +#! +#! Image of (1)-[{ Z(3)^0*(a) }]->(1): +#! 1 . . . . . +#! . 1 . . . . +#! . . 2 . . . +#! . . . . 2 . +#! . . . 1 . . +#! . . . . . 1 +#! +#! A morphism in Category of matrices over GF(3) +#! +#! +#! Image of (1)-[{ Z(3)^0*(b) }]->(2): +#! . . . . . +#! 1 . . . . +#! . 1 . . . +#! . . . . . +#! . . . . . +#! . . . . 2 +#! +#! A morphism in Category of matrices over GF(3) +#! +#! +#! Image of (2)-[{ Z(3)^0*(c) }]->(2): +#! 1 . . . . +#! . 2 . . . +#! . . 2 2 . +#! . . 2 1 . +#! . . . . 1 +#! +#! A morphism in Category of matrices over GF(3) +#! @EndExample +#! @EndChunk diff --git a/examples/NaturalTransformation.g b/examples/rest/NaturalTransformation.g similarity index 94% rename from examples/NaturalTransformation.g rename to examples/rest/NaturalTransformation.g index b1704bf..e719fb7 100644 --- a/examples/NaturalTransformation.g +++ b/examples/rest/NaturalTransformation.g @@ -1,51 +1,51 @@ -Read("CategoryOfRepresentations.g"); - -e11 := 1;; e12 := 1;; e13 := 0;; e42 := 1;; e43 := 1;; - -eMat := [ -[e11, e12, e13], -[0, e11, e12], -[0, 0, e11], -[0, e42, e43], -[0, 0, e42] -]; -#! [ [ 1, 1, 0 ], [ 0, 1, 1 ], [ 0, 0, 1 ], [ 0, 1, 1 ], [ 0, 0, 1 ] ] - -f11 := 1;; f12 := 0;; f13 := 1;; f33 := 0;; f43 := 1;; -fMat := [ -[f11, f12, f13], -[0, f11, f13], -[0, 0, f33], -[0, 0, f43] -]; -#! [ [ 1, 0, 1 ], [ 0, 1, 1 ], [ 0, 0, 0 ], [ 0, 0, 1 ] ] - -e12 := 1;; e13 := 0;; e42 := 1;; e43 := 1;; -f12 := 0;; f13 := -e12;; f43 := e12-e42;; - -eMat := [ -[0, e12, e13], -[0, 0, e12], -[0, 0, 0], -[0, e42, e43], -[0, 0, e42] -]; - -fMat := [ -[0, f12, -e12], -[0, 0, -e12], -[0, 0, 0], -[0, 0, e12-e42] -]; - -eta := [ -VectorSpaceMorphism( -nine(kq.1), HomalgMatrix(eMat, GF3), six(kq.1) ), -VectorSpaceMorphism( -nine(kq.2), HomalgMatrix(fMat, GF3), six(kq.2) ) ]; -ninetosix := AsMorphismInHomCategory( nine, eta, six ); - -IsObject( nine ); -#! true -IsMorphism( ninetosix ); -# Error \ No newline at end of file +Read("CategoryOfRepresentations.g"); + +e11 := 1;; e12 := 1;; e13 := 0;; e42 := 1;; e43 := 1;; + +eMat := [ +[e11, e12, e13], +[0, e11, e12], +[0, 0, e11], +[0, e42, e43], +[0, 0, e42] +]; +#! [ [ 1, 1, 0 ], [ 0, 1, 1 ], [ 0, 0, 1 ], [ 0, 1, 1 ], [ 0, 0, 1 ] ] + +f11 := 1;; f12 := 0;; f13 := 1;; f33 := 0;; f43 := 1;; +fMat := [ +[f11, f12, f13], +[0, f11, f13], +[0, 0, f33], +[0, 0, f43] +]; +#! [ [ 1, 0, 1 ], [ 0, 1, 1 ], [ 0, 0, 0 ], [ 0, 0, 1 ] ] + +e12 := 1;; e13 := 0;; e42 := 1;; e43 := 1;; +f12 := 0;; f13 := -e12;; f43 := e12-e42;; + +eMat := [ +[0, e12, e13], +[0, 0, e12], +[0, 0, 0], +[0, e42, e43], +[0, 0, e42] +]; + +fMat := [ +[0, f12, -e12], +[0, 0, -e12], +[0, 0, 0], +[0, 0, e12-e42] +]; + +eta := [ +VectorSpaceMorphism( +nine(kq.1), HomalgMatrix(eMat, GF3), six(kq.1) ), +VectorSpaceMorphism( +nine(kq.2), HomalgMatrix(fMat, GF3), six(kq.2) ) ]; +ninetosix := AsMorphismInHomCategory( nine, eta, six ); + +IsObject( nine ); +#! true +IsMorphism( ninetosix ); +# Error