  
  [1X1 [33X[0;0YPreliminaries[133X[101X
  
  [33X[0;0YIn this section we define skew braces and list some of their main properties
  [GV17].[133X
  
  
  [1X1.1 [33X[0;0YDefinition and examples[133X[101X
  
  [33X[0;0YA skew brace is a triple [23X(A,+,\circ)[123X, where [23X(A,+)[123X and [23X(A,\circ)[123X are two (not
  necessarily  abelian) groups such that the compatibility [23Xa\circ (b+c)=a\circ
  b-a+a\circ   c[123X   holds  for  all  [23Xa,b,c\in  A[123X.  Ones  proves  that  the  map
  [23X\lambda\colon      (A,\circ)\to\mathrm{Aut}(A,+)[123X,      [23Xa\mapsto\lambda_a(b)[123X,
  [23X\lambda_a(b)=-a+a\circ  b[123X,  is a group homomorphism. Notation: For [23Xa,b\in A[123X,
  we write [23Xa*b=\lambda_a(b)-b[123X.[133X
  
  [1X1.1-1 IsSkewbrace[101X
  
  [33X[1;0Y[29X[2XIsSkewbrace[102X( [3Xarg[103X ) [32X filter[133X
  [6XReturns:[106X  [33X[0;10Y[9Xtrue[109X or [9Xfalse[109X[133X
  
  [1X1.1-2 Skewbrace[101X
  
  [33X[1;0Y[29X[2XSkewbrace[102X( [3Xlist[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya skew brace[133X
  
  [33X[0;0YThe  argument [3Xlist[103X is a list of pairs of elements in a group. By Proposition
  5.11  of [GV17], skew braces over an abelian group [23XA[123X are equivalent to pairs
  [23X(G,\pi)[123X, where [23XG[123X is a group and [23X\pi\colon G\to A[123X is a bijective [23X1[123X-cocycle, a
  finite  skew  brace  can be constructed from the set [23X\{(a_j,g_j):1\leq j\leq
  n\}[123X,  where  [23XG=\{g_1,\dots,g_n\}[123X  and  [23XA=\{a_1,\dots,a_n\}[123X  are  permutation
  groups. This function is used to construct skew braces.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSkewbrace([[(),()]]);[127X[104X
    [4X[28X<brace of size 1>[128X[104X
    [4X[25Xgap>[125X [27XSkewbrace([[(),()],[(1,2),(1,2)]]);[127X[104X
    [4X[28X<brace of size 2>[128X[104X
  [4X[32X[104X
  
  [1X1.1-3 SmallSkewbrace[101X
  
  [33X[1;0Y[29X[2XSmallSkewbrace[102X( [3Xn[103X, [3Xk[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya skew brace[133X
  
  [33X[0;0YThe function returns the [3Xk[103X-th skew brace from the database of skew braces of
  order [3Xn[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSmallSkewbrace(8,3);[127X[104X
    [4X[28X<brace of size 8>[128X[104X
  [4X[32X[104X
  
  [1X1.1-4 TrivialBrace[101X
  
  [33X[1;0Y[29X[2XTrivialBrace[102X( [3Xabelian_group[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya brace[133X
  
  [33X[0;0YThis   function   returns   the   trivial   brace  over  the  abelian  group
  [3Xabelian_group[103X. Here [3Xabelian_group[103X should be an abelian group![133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XTrivialBrace(CyclicGroup(IsPermGroup, 5));[127X[104X
    [4X[28X<brace of size 5>[128X[104X
  [4X[32X[104X
  
  [1X1.1-5 TrivialSkewbrace[101X
  
  [33X[1;0Y[29X[2XTrivialSkewbrace[102X( [3Xgroup[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya skew brace[133X
  
  [33X[0;0YThis function returns the trivial skew brace over [3Xgroup[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XTrivialSkewbrace(DihedralGroup(10));[127X[104X
    [4X[28X<skew brace of size 10>[128X[104X
  [4X[32X[104X
  
  [1X1.1-6 SmallBrace[101X
  
  [33X[1;0Y[29X[2XSmallBrace[102X( [3Xn[103X, [3Xk[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya brace of abelian type[133X
  
  [33X[0;0YThe  function  returns the [3Xk[103X-th brace (of abelian type) from the database of
  braces of order [3Xn[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSmallBrace(8,3);[127X[104X
    [4X[28X<brace of size 8>[128X[104X
  [4X[32X[104X
  
  [1X1.1-7 IdSkewbrace[101X
  
  [33X[1;0Y[29X[2XIdSkewbrace[102X( [3Xobj[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YThe  function  returns  [3X[  n,  k  ][103X  if  the skew brace [3Xobj[103X is isomorphic to
  [3XSmallSkewbrace(n,k)[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIdSkewbrace(SmallSkewbrace(8,5));[127X[104X
    [4X[28X[ 8, 5 ][128X[104X
  [4X[32X[104X
  
  [1X1.1-8 AutomorphismGroup[101X
  
  [33X[1;0Y[29X[2XAutomorphismGroup[102X( [3Xobj[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YThe function computes the automorphism group of a skew brace.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xbr := SmallSkewbrace(8,20);;[127X[104X
    [4X[25Xgap>[125X [27XAutomorphismGroup(br);[127X[104X
    [4X[28X<group with 8 generators>[128X[104X
    [4X[25Xgap>[125X [27XStructureDescription(last);[127X[104X
    [4X[28X"D8"[128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xbr := SmallSkewbrace(8,25);;[127X[104X
    [4X[25Xgap>[125X [27Xaut := AutomorphismGroup(br);;[127X[104X
    [4X[25Xgap>[125X [27Xf := Random(aut);;[127X[104X
    [4X[25Xgap>[125X [27Xx := Random(br);;[127X[104X
    [4X[25Xgap>[125X [27XImageElm(f, x) in br;[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X1.1-9 IdBrace[101X
  
  [33X[1;0Y[29X[2XIdBrace[102X( [3Xobj[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YThe function returns [3X[ n, k ][103X if the brace of abelian type [3Xobj[103X is isomorphic
  to [3XSmallBrace(n,k)[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIdBrace(SmallBrace(8,5));[127X[104X
    [4X[28X[ 8, 5 ][128X[104X
  [4X[32X[104X
  
  [1X1.1-10 IsomorphismSkewbraces[101X
  
  [33X[1;0Y[29X[2XIsomorphismSkewbraces[102X( [3Xobj1[103X, [3Xobj2[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Yan  isomorphism of skew braces if [3Xobj1[103X and [3Xobj2[103X are isomorphic and
            [3Xfail[103X otherwise.[133X
  
  [33X[0;0YIf  [23XA[123X and [23XB[123X are skew braces, a skew brace homomorphism is a map [23Xf\colon A\to
  B[123X such that[133X
  
  
  [24X[33X[0;6Yf(a+b)=f(a)+f(b)\quad f(a\circ b)=f(a)\circ f(b)[133X
  
  [124X
  
  [33X[0;0Yhold  for  all  [23Xa,b\in A[123X. A skew brace isomorphism is a bijective skew brace
  homomorphism.    [3XIsomorphismSkewbraces[103X    first   computes   all   injective
  homomorphisms  from  [23X(A,+)[123X  to  [23X(B,+)[123X and then tries to find one [23Xf[123X such that
  [23Xf(a\circ b)=f(a)\circ f(b)[123X for all [23Xa,b\in A[123X.[133X
  
  [1X1.1-11 DirectProductSkewbraces[101X
  
  [33X[1;0Y[29X[2XDirectProductSkewbraces[102X( [3Xobj1[103X, [3Xobj2[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ythe direct product of [3Xobj1[103X and [3Xobj2[103X[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xbr1 := SmallBrace(8,18);;[127X[104X
    [4X[25Xgap>[125X [27Xbr2 := SmallBrace(12,2);;[127X[104X
    [4X[25Xgap>[125X [27Xbr := DirectProductSkewbraces(br1,br2);;[127X[104X
    [4X[25Xgap>[125X [27XIsLeftNilpotent(br);[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XIsRightNilpotent(br);[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XIsSolvable(br);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X1.1-12 DirectProductOp[101X
  
  [33X[1;0Y[29X[2XDirectProductOp[102X( [3Xarg1[103X, [3Xarg2[103X ) [32X operation[133X
  
  [1X1.1-13 IsTwoSided[101X
  
  [33X[1;0Y[29X[2XIsTwoSided[102X( [3Xobj[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[3Xtrue[103X if the skew brace is two sided, [3Xfalse[103X otherwise[133X
  
  [33X[0;0YA  skew  brace [23XA[123X is said to be [13Xtwo-sided[113X if [23X(a+b)\circ c=a\circ c-c+b\circ c[123X
  holds for all [23Xa,b,c\in A[123X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIsTwoSided(SmallSkewbrace(8,2));[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XIsTwoSided(SmallSkewbrace(8,4));[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X1.1-14 IsAutomorphismGroupOfSkewbrace[101X
  
  [33X[1;0Y[29X[2XIsAutomorphismGroupOfSkewbrace[102X( [3Xobj[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[3Xtrue[103X  if  the  group  is  the automorphism group of a skew braces,
            [3Xfalse[103X otherwise[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xbr := SmallSkewbrace(8,25);;[127X[104X
    [4X[25Xgap>[125X [27Xaut := AutomorphismGroup(br);;[127X[104X
    [4X[25Xgap>[125X [27XOrder(aut);[127X[104X
    [4X[28X4[128X[104X
    [4X[25Xgap>[125X [27XIsAutomorphismGroupOfSkewbrace(aut);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X1.1-15 IsClassical[101X
  
  [33X[1;0Y[29X[2XIsClassical[102X( [3Xobj[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[3Xtrue[103X if the skew brace is of abelian type, [3Xfalse[103X otherwise[133X
  
  [33X[0;0YLet  [23X\mathcal{X}[123X  be  a  property of groups. A skew brace [23XA[123X is said to be of
  [23X\mathcal{X}[123X-type   if   its   additive  group  belongs  to  [23X\mathcal{X}[123X.  In
  particular,  skew  braces of abelian type are those skew braces with abelian
  additive group. Such skew braces were introduced by Rump in [Rum07].[133X
  
  [1X1.1-16 IsOfAbelianType[101X
  
  [33X[1;0Y[29X[2XIsOfAbelianType[102X( [3Xarg[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[9Xtrue[109X or [9Xfalse[109X[133X
  
  [1X1.1-17 IsBiSkewbrace[101X
  
  [33X[1;0Y[29X[2XIsBiSkewbrace[102X( [3Xobj[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[3Xtrue[103X if the skew brace is a bi-skew brace, [3Xfalse[103X otherwise[133X
  
  [33X[0;0YA  skew  brace [23X(A,+,\circ)[123X is said to be a bi-skew brace if [23X(A,\circ,+)[123X is a
  skew brace[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XNumber([1..NrSmallSkewbraces(8)], k->IsBiSkewbrace(SmallSkewbrace(8,k)));[127X[104X
    [4X[28X39[128X[104X
  [4X[32X[104X
  
  [1X1.1-18 IsOfNilpotentType[101X
  
  [33X[1;0Y[29X[2XIsOfNilpotentType[102X( [3Xobj[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[3Xtrue[103X if the skew brace is of nilpotent type, [3Xfalse[103X otherwise[133X
  
  [33X[0;0YLet  [23X\mathcal{X}[123X  be  a  property of groups. A skew brace [23XA[123X is said to be of
  [23X\mathcal{X}[123X-type   if   its   additive  group  belongs  to  [23X\mathcal{X}[123X.  In
  particular,  skew  braces  of  nilpotent  type  are  those  skew braces with
  nilpotent additive group.[133X
  
  [1X1.1-19 IsTrivialSkewbrace[101X
  
  [33X[1;0Y[29X[2XIsTrivialSkewbrace[102X( [3Xobj[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[3Xtrue[103X if the skew brace is trivial, [3Xfalse[103X otherwise[133X
  
  [33X[0;0YThe function returns [3Xtrue[103X if the skew brace [23XA[123X is trivial, i.e., [23Xa\circ b=a+b[123X
  for  all  [23Xa,b\in  A[123X. WARNING: The property IsTrivial applied to a skew brace
  will return true if and only if the skew brace has only one element.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xbr := SmallSkewbrace(9,1);;[127X[104X
    [4X[25Xgap>[125X [27XIsTrivialSkewbrace(br);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsTrivial(br);[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
  [1X1.1-20 Skewbrace2YB[101X
  
  [33X[1;0Y[29X[2XSkewbrace2YB[102X( [3Xobj[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ythe set-theoretic solution associated with the skew brace [3Xobj[103X[133X
  
  [33X[0;0YIf [23XA[123X is a skew brace, the map [23Xr_A\colon A\times A\to A\times A[123X[133X
  
  
  [24X[33X[0;6Yr_A(a,b)=(\lambda_a(b),\lambda_a(b)'\circ a\circ b)[133X
  
  [124X
  
  [33X[0;0Yis  a  non-degenerate  set-theoretic  solution of the Yang--Baxter equation.
  Furthermore,  [23Xr_A[123X  is  involutive if and only if [23XA[123X is of abelian type (i.e.,
  the additive group of [23XA[123X is abelian).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSkewbrace2YB(TrivialBrace(CyclicGroup(6)));[127X[104X
    [4X[28X<A set-theoretical solution of size 6>[128X[104X
  [4X[32X[104X
  
  [1X1.1-21 Brace2YB[101X
  
  [33X[1;0Y[29X[2XBrace2YB[102X( [3Xarg[103X ) [32X attribute[133X
  
  [1X1.1-22 SkewbraceSubset2YB[101X
  
  [33X[1;0Y[29X[2XSkewbraceSubset2YB[102X( [3Xobj[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ythe  set-theoretic  solution  associated  with a given subset of a
            skew brace[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xbr := TrivialSkewbrace(SymmetricGroup(3));;[127X[104X
    [4X[25Xgap>[125X [27XAsList(br);[127X[104X
    [4X[28X[ <()>, <(2,3)>, <(1,2)>, <(1,2,3)>, <(1,3,2)>, <(1,3)> ][128X[104X
    [4X[25Xgap>[125X [27XSkewbraceSubset2YB(br, last{[4,5]});[127X[104X
    [4X[28X<A set-theoretical solution of size 2>[128X[104X
  [4X[32X[104X
  
  [1X1.1-23 SemidirectProduct[101X
  
  [33X[1;0Y[29X[2XSemidirectProduct[102X( [3XA[103X, [3XB[103X, [3Xs[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ythe semidirect product of skew braces[133X
  
  [33X[0;0YLet  [23XA[123X and [23XB[123X be two skew braces and [23X\sigma[123X be a skew brace action of [23XB[123X on [23XA[123X,
  this  is a group homomorphism [23X\sigma\colon (B,\circ)\to Aut_{\mathrm{Br}}(A)[123X
  from  the multiplicative group of [23XB[123X to the skew brace automorphism of [23XA[123X. The
  semidirect  product of [23XA[123X and [23XB[123X with with respect to [23X\sigma[123X is the skew brace
  [23XA\rtimes_{\sigma}B[123X with operations[133X
  
  
  [24X[33X[0;6Y(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)[133X
  
  [124X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XA := SmallSkewbrace(4,2);;[127X[104X
    [4X[25Xgap>[125X [27XB := SmallSkewbrace(3,1);;[127X[104X
    [4X[25Xgap>[125X [27Xs := SkewbraceActions(B,A);;[127X[104X
    [4X[25Xgap>[125X [27XSize(s);[127X[104X
    [4X[28X1[128X[104X
    [4X[25Xgap>[125X [27XIdSkewbrace(SemidirectProduct(A,B,s[1]));[127X[104X
    [4X[28X[ 12, 11 ][128X[104X
    [4X[25Xgap>[125X [27XIdSkewbrace(DirectProduct(A,B));[127X[104X
    [4X[28X[ 12, 11 ][128X[104X
  [4X[32X[104X
  
  [1X1.1-24 UnderlyingAdditiveGroup[101X
  
  [33X[1;0Y[29X[2XUnderlyingAdditiveGroup[102X( [3XA[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ythe underlying multiplicative group of the skew brace[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xbr := SmallBrace(4,2);;[127X[104X
    [4X[25Xgap>[125X [27XG:=UnderlyingMultiplicativeGroup(br);;[127X[104X
    [4X[25Xgap>[125X [27XStructureDescription(G);[127X[104X
    [4X[28X"C2 x C2"[128X[104X
  [4X[32X[104X
  
  [1X1.1-25 UnderlyingMultiplicativeGroup[101X
  
  [33X[1;0Y[29X[2XUnderlyingMultiplicativeGroup[102X( [3XA[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ythe underlying additive group of the skew brace[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xbr := SmallSkewbrace(6,2);;[127X[104X
    [4X[25Xgap>[125X [27XG:=UnderlyingAdditiveGroup(br);;[127X[104X
    [4X[25Xgap>[125X [27XIsAbelian(G);[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
