Preliminaries

In this section we define skew braces and list some of their main properties .
Definition and examples A skew brace is a triple (A,+,\circ), where (A,+) and (A,\circ) are two (not necessarily abelian) groups such that the compatibility a\circ (b+c)=a\circ b-a+a\circ c holds for all a,b,c\in A. Ones proves that the map \lambda\colon (A,\circ)\to\mathrm{Aut}(A,+), a\mapsto\lambda_a(b), \lambda_a(b)=-a+a\circ b, is a group homomorphism. Notation: For a,b\in A, we write a*b=\lambda_a(b)-b. true or false

a skew brace The argument list is a list of pairs of elements in a group. By Proposition 5.11 of , skew braces over an abelian group A are equivalent to pairs (G,\pi), where G is a group and \pi\colon G\to A is a bijective 1-cocycle, a finite skew brace can be constructed from the set \{(a_j,g_j):1\leq j\leq n\}, where G=\{g_1,\dots,g_n\} and A=\{a_1,\dots,a_n\} are permutation groups. This function is used to construct skew braces.
gap> Skewbrace([[(),()]]); <brace of size 1> gap> Skewbrace([[(),()],[(1,2),(1,2)]]); <brace of size 2>
a skew brace The function returns the k-th skew brace from the database of skew braces of order n.
gap> SmallSkewbrace(8,3); <brace of size 8>
a brace This function returns the trivial brace over the abelian group abelian_group. Here abelian_group should be an abelian group!
gap> TrivialBrace(CyclicGroup(IsPermGroup, 5)); <brace of size 5>
a skew brace This function returns the trivial skew brace over group.
gap> TrivialSkewbrace(DihedralGroup(10)); <skew brace of size 10>
a brace of abelian type The function returns the k-th brace (of abelian type) from the database of braces of order n.
gap> SmallBrace(8,3); <brace of size 8>
a list The function returns [ n, k ] if the skew brace obj is isomorphic to SmallSkewbrace(n,k).
gap> IdSkewbrace(SmallSkewbrace(8,5)); [ 8, 5 ]
a list The function computes the automorphism group of a skew brace.
gap> br := SmallSkewbrace(8,20);; gap> AutomorphismGroup(br); <group with 8 generators> gap> StructureDescription(last); "D8"
gap> br := SmallSkewbrace(8,25);; gap> aut := AutomorphismGroup(br);; gap> f := Random(aut);; gap> x := Random(br);; gap> ImageElm(f, x) in br; true
a list The function returns [ n, k ] if the brace of abelian type obj is isomorphic to SmallBrace(n,k).
gap> IdBrace(SmallBrace(8,5)); [ 8, 5 ]
an isomorphism of skew braces if obj1 and obj2 are isomorphic and fail otherwise. If A and B are skew braces, a skew brace homomorphism is a map f\colon A\to B such that f(a+b)=f(a)+f(b)\quad f(a\circ b)=f(a)\circ f(b) hold for all a,b\in A. A skew brace isomorphism is a bijective skew brace homomorphism. IsomorphismSkewbraces first computes all injective homomorphisms from (A,+) to (B,+) and then tries to find one f such that f(a\circ b)=f(a)\circ f(b) for all a,b\in A. the direct product of obj1 and obj2
gap> br1 := SmallBrace(8,18);; gap> br2 := SmallBrace(12,2);; gap> br := DirectProductSkewbraces(br1,br2);; gap> IsLeftNilpotent(br); false gap> IsRightNilpotent(br); false gap> IsSolvable(br); true

true if the skew brace is two sided, false otherwise A skew brace A is said to be two-sided if (a+b)\circ c=a\circ c-c+b\circ c holds for all a,b,c\in A.
gap> IsTwoSided(SmallSkewbrace(8,2)); false gap> IsTwoSided(SmallSkewbrace(8,4)); true
true if the group is the automorphism group of a skew braces, false otherwise

gap> br := SmallSkewbrace(8,25);; gap> aut := AutomorphismGroup(br);; gap> Order(aut); 4 gap> IsAutomorphismGroupOfSkewbrace(aut); true
true if the skew brace is of abelian type, false otherwise Let \mathcal{X} be a property of groups. A skew brace A is said to be of \mathcal{X}-type if its additive group belongs to \mathcal{X}. In particular, skew braces of abelian type are those skew braces with abelian additive group. Such skew braces were introduced by Rump in . true or false

true if the skew brace is a bi-skew brace, false otherwise A skew brace (A,+,\circ) is said to be a bi-skew brace if (A,\circ,+) is a skew brace
gap> Number([1..NrSmallSkewbraces(8)], k->IsBiSkewbrace(SmallSkewbrace(8,k))); 39
true if the skew brace is of nilpotent type, false otherwise Let \mathcal{X} be a property of groups. A skew brace A is said to be of \mathcal{X}-type if its additive group belongs to \mathcal{X}. In particular, skew braces of nilpotent type are those skew braces with nilpotent additive group. true if the skew brace is trivial, false otherwise The function returns true if the skew brace A is trivial, i.e., a\circ b=a+b for all a,b\in A. WARNING: The property IsTrivial applied to a skew brace will return true if and only if the skew brace has only one element.
gap> br := SmallSkewbrace(9,1);; gap> IsTrivialSkewbrace(br); true gap> IsTrivial(br); false
the set-theoretic solution associated with the skew brace obj If A is a skew brace, the map r_A\colon A\times A\to A\times A r_A(a,b)=(\lambda_a(b),\lambda_a(b)'\circ a\circ b) is a non-degenerate set-theoretic solution of the Yang--Baxter equation. Furthermore, r_A is involutive if and only if A is of abelian type (i.e., the additive group of A is abelian).
gap> Skewbrace2YB(TrivialBrace(CyclicGroup(6))); <A set-theoretical solution of size 6>

the set-theoretic solution associated with a given subset of a skew brace
gap> br := TrivialSkewbrace(SymmetricGroup(3));; gap> AsList(br); [ <()>, <(2,3)>, <(1,2)>, <(1,2,3)>, <(1,3,2)>, <(1,3)> ] gap> SkewbraceSubset2YB(br, last{[4,5]}); <A set-theoretical solution of size 2>
the semidirect product of skew braces Let A and B be two skew braces and \sigma be a skew brace action of B on A, this is a group homomorphism \sigma\colon (B,\circ)\to Aut_{\mathrm{Br}}(A) from the multiplicative group of B to the skew brace automorphism of A. The semidirect product of A and B with with respect to \sigma is the skew brace A\rtimes_{\sigma}B with operations (a_1,b_1)+(a_2,b_2)=(a_1+a_2,b_1+b_2), \quad (a_1,b_1)\circ (b_2,b_2)=(a_1\circ\sigma(b_1)(a_2),b_1\circ b_2)
gap> A := SmallSkewbrace(4,2);; gap> B := SmallSkewbrace(3,1);; gap> s := SkewbraceActions(B,A);; gap> Size(s); 1 gap> IdSkewbrace(SemidirectProduct(A,B,s[1])); [ 12, 11 ] gap> IdSkewbrace(DirectProduct(A,B)); [ 12, 11 ]