1. Introduction
Anticommutative algebras form a fundamental class within nonassociative algebra, characterized by the identity
. This simple condition imposes strong structural constraints and encompasses several central varieties, including Lie algebras, Malcev algebras, and binary Lie algebras. Their study dates back to the classical works of A. A. Albert [
1] and R. D. Schafer [
2], whose monographs established the foundations of modern nonassociative algebra theory. Anticommutative identities appear naturally in geometry, differential equations, and mathematical physics, particularly in the algebraic formalization of symmetries and integrability conditions.
More recently, novel anticommutative structures, most notably the Tortkara algebras introduced by Dzhumadil’daev [
3], have attracted renewed interest due to their connections with Zinbiel algebras, operad theory, and the classification of low-dimensional nonassociative systems. Dzhumadil’daev showed in [
3] that every Zinbiel algebra endowed with the commutator becomes a Tortkara algebra, and that these algebras satisfy a distinctive identity blending symmetry and alternation. Subsequent research has focused on their structural properties, their relationships with Zinbiel and other nonassociative algebras, and their behavior under various classification frameworks. In particular, nilpotent Tortkara algebras of dimension up to six have been classified both geometrically and algebraically by Gorshkova, Kaygorodov, and Khrypchenko in [
4,
5]. The systematic exploration of these varieties, together with graph-theoretic and computational methods, continues to provide new insights into the broader landscape of anticommutative nonassociative algebras.
Potential applications include mathematical physics, especially in theories that model complex interactions and symmetries, as well as emerging roles in cryptography and algebraic models for nonlinear dynamical systems.
On the other hand, Graph Theory has become an essential tool for addressing problems across many research fields. It can be effectively applied to the study of non-associative algebras in general, and Tortkara algebras in particular. To the best of our knowledge, the specific connection between graph-theoretic constructions and Tortkara algebras has not been systematically investigated in the literature. However, graph theory has already been crucial in studying other non-associative algebras such as Lie, Leibniz, Malcev, Zinbiel, and evolution algebras. For example, in Lie algebras, trees help determine Dynkin diagrams [
6], and graphs are used to represent their structures [
7]. Leibniz algebras have been classified via associated graphs [
8], and similar studies exist for Malcev and Zinbiel algebras [
9,
10]. Finite connected bipartite graphs have also been used to construct semisimple semi-indecomposable finite-dimensional Leibniz algebras [
11]. Among nonassociative algebras, evolution algebras are especially important. Several papers explore their links with graphs [
12,
13,
14,
15], using graph-based methods to study key properties. Finally, ref. [
16] addresses open problems related to graphicable algebras, highlighting the potential of graph-theoretical approaches in this area.
On the other hand, Graph Theory has become an essential tool for addressing problems across many research fields. It can be effectively applied to the study of non-associative algebras in general, and Tortkara algebras in particular. To the best of our knowledge, the specific connection between graph-theoretic constructions and Tortkara algebras has not been systematically investigated in the literature. However, graph theory has already been crucial in studying other non-associative algebras such as Lie, Leibniz, Malcev, Zinbiel, and evolution algebras.
In this work, we present a method to associate finite-dimensional anticommutative algebras, defined over a fixed basis , with combinatorial structures in the form of directed graphs, where full triangles may appear. Starting from the classification of 3-dimensional anticommutative algebras, we provide the list of combinatorial structures associated with each of them. Moreover, we develop two algorithmic methods. The first one computes if a given anticommutative algebra is a Tortkara algebra. The second one computes which additional conditions the algebras associated with a given combinatorial structure have to fulfill in order to be a Tortkara algebra. Finally, we carry out a computational study and complexity analysis of the previous algorithms.
Our results offer new insights into the link between anticommutative algebras and combinatorial structures opening a new research line in the theory of Tortkara algebras and their applications.
2. Preliminaries
In this section we introduce some preliminaries concepts that we will use in this paper. We start with some definitions and results on Tortkara algebras.
Definition 1 (Algebra over a field). An algebra over a field is a vector space with a bilinear product.
Some examples of algebras are the complex numbers, the quaternions, the square matrices, Lie algebras or Tortkara algebras.
Definition 2 (Anticommutative algebra)
. An algebra over a field is called anticommutative if its product satisfiesIf the field has characteristic different from two, anticommutativity implies the alternating property, that is, for every . Definition 3 (Tortkara algebra)
. A Tortkara algebra over a field is an anticommutative algebra which satisfiesThe latter is called the Tortkara identity. Proposition 1. Over a field of characteristic different from two, the Tortkara identity has the following multi-linear form Proof. If the field has characteristic different from two, we obtain (
2) from (
3) in the case
. Also, we obtain (
3) from (
2) by writing
y as
. □
From now on, we suppose that the field does not have characteristic two. Also, we use the notation
Therefore,
Since is lineal, in order to prove that an algebra is a Tortkara algebra, we have to verify that for every combination of elements of a basis of .
The following definitions are about general concepts of algebras. We will write them applied to Tortkara algebras.
Definition 4. Given a basis of an n-dimensional Tortkara algebra over a field , its structure constants are , defined by , for .
Definition 5. The derived series of a finite-dimensional Tortkara algebra is is ()-step solvable if there exists such that and . Definition 6. The central series of a finite-dimensional Tortkara algebra is is ()-step nilpotent if there exists such that and . Corollary 1. Let be a Tortkara algebra. For all we have
.
.
.
Proof. This follows from the definitions of the derived and central series. □
Example 1. Let be the anticommutative algebra with basis defined by is a Tortkara algebra sinceNext, we calculate the derived seriesTherefore, is 3-step solvable. Lastly, we calculate the central seriesSince , we have and . These two vectors are linearly independent, so is at least 2-dimensional. Since and is 2-dimensional, we obtain . Therefore, is not nilpotent. Finally, we will show some concepts on Graph Theory.
Definition 7. A (undirected) graph is an ordered pair where
V is a nonempty set of elements called vertices.
is a set of unordered pair of vertices. The elements of E are called edges.
Definition 8. A directed graph or digraph is an ordered pair where
V is a nonempty set of elements called vertices.
is a set of ordered pair of vertices. The elements of V are called directed edges.
Let be a graph (undirected or directed). V and E are called vertex set and edge set, respectively.
Definition 9. A subgraph (resp. subdigraph) of a graph (resp. digraph) G is a graph (resp. digraph) such that its vertex set and edge set are subsets of those of G.
Definition 10. A subgraph (resp. subdigraph) of a graph (resp. digraph) is said to be induced by a vertex subset if its vertex set is and its edge set consists of all the edges of G between two vertices in .
Definition 11. Let be a directed graph. A vertex is a sink if each edge incident with v is oriented towards v.
Definition 12. Let be a directed graph. A vertex is a source if each edge incident with v is oriented away from v.
Definition 13. A directed graph is well-oriented if every vertex is either a sink or a source.
3. Associating Combinatorial Structures with Tortkara Algebras
In this section we describe a procedure that associates, to any anticommutative algebra together with a chosen basis, a combinatorial structure encoding its structure constants.
Let
be a
n-dimensional anticommutative algebra with basis
and whose structure constants correspond to
. Then, the pair
is associated with a combinatorial structure by the following procedure (
Figure 1):
- (a)
For each , we draw a vertex i.
- (b)
Given two distinct vertices i and j, and without loss of generality assuming , we proceed as follows:
- (b1)
If , we draw a directed edge from vertex i to j with weight .
- (b2)
If , we draw a directed edge from vertex j to i with weight .
- (c)
Given three vertices such that at least one of the structure constants is nonzero, we draw the full triangle such that the edges , and have weights , and , respectively. Moreover:
- (c1)
We use a discontinuous line (named ghost edge) for edges with weight 0.
- (c2)
If two triangles and with satisfy , draw only one edge between vertices i and j shared by both triangles.
To illustrate the previous construction, we now present an explicit example. We emphasise that the procedure applies to any anticommutative algebra, but for concreteness we consider a particular Tortkara algebra.
Example 2. Let be the Tortkara algebra with basis defined byIts associated combinatorial structure is shown in Figure 2. From now on, when we talk about graphs or combinatorial structures associated with an anticommutative algebra, we refer to the combinatorial structure described previously. If the combinatorial structure has no triangles, then it will be called a directed graph.
We will also use to denote the vertices of a combinatorial structure G and to denote its edges (directed edges and edges of triangles).
Remark 1. Let be an anticommutative algebra, let be a basis of and let G be the associated combinatorial structure. By definition of G, for each i, with , we have that all the structure constants which appears in the products and (i.e., , ) are related to the weights of the edges that are between the vertices i and j. Therefore, the absence of edges between two vertices i and j indicates that all structure constants vanish, and hence .
4. Examples of Combinatorial Structures Associated with 3-Dimensional Anticommutative Algebras
In this section we illustrate the correspondence between anticommutative algebras and the combinatorial structures introduced in
Section 3. We focus on the case of dimension three, where the complete classification of anticommutative algebras over an algebraically closed field of characteristic different from two was obtained in [
17].
Given a basis , recall that the associated combinatorial configuration is constructed as follows: an (undirected) edge between i and j is included whenever is nonzero, and a filled triangle is added whenever a nonzero product involves a nontrivial linear combination of the basis elements. This procedure is exhaustive in dimension three, where at most one triangle can appear.
Table 1 reproduces the seven families of three-dimensional anticommutative algebras. For each of them we determine its associated structure, obtaining the complete list of possible configurations. These examples motivate the algorithmic procedure developed in the next section.
Proposition 2. Let be a 3-dimensional anticommutative algebra. Then, is associated with one of the combinatorial structures of Figure 3. Proof. Let
be one of the algebras listed in
Table 1. We determine its associated combinatorial configuration by applying the correspondence described above. Since the algebra is anticommutative and of dimension three, the only possible nonzero products are of the form
Thus, the underlying combinatorial structure has at most three pair of directed edges and may contain at most one filled triangle (with or without ghost edges).
We now analyse each algebra family.
Case . The only nonzero product is . Hence the combinatorial structure consists of a triangle with only one non-ghost edge, .
Case . Here and , which yields two directed edges and . No nontrivial linear combination appears, so there is no triangle.
Case
. The products satisfy
Thus vertex 3 is connected to vertices
, and the product
involves the other basis element,
, so the triangle
with two ghost edges,
and
is included in the associated combinatorial structure.
Case
. This algebra satisfies
Each pair of basis elements has a nonzero product, and every product is nontrivial, so the combinatorial structure consists in the filled triangle without ghost edges.
Case
. The nonzero products give directed edges connected vertex 3 to vertices
, and the unique nontrivial product is
Therefore the underlying combinatorial structure includes the filled triangle with only one non-ghost edge,
, besides the directed edges
,
y
.
Case . The products and give a path 321. No nontrivial linear combination appears, so there is no filled triangle.
Case
. This algebra has
Thus vertex 3 is connected to vertices
by directed edges, and the configuration also contains the filled triangle with only one non-ghost edge,
.
These are all seven isomorphism classes of three-dimensional anticommutative algebras. Each gives rise to a unique configuration, and all configurations in
Figure 3 arise in this manner. Hence the correspondence is exhaustive and the list is complete. □
5. Algorithms and Program Codes
In this section we describe two complementary procedures. The first one determines whether a given anticommutative algebra is a Tortkara algebra. The second one computes the additional constraints that an anticommutative algebra associated with a fixed combinatorial structure must satisfy in order to fulfill the Tortkara identity. Both algorithms rely on symbolic manipulation of the structure constants and automatic expansion of identities.
Although in this section we particularize our computations to Tortkara algebras in order to explicitly impose the Tortkara identity, the algorithmic framework we describe is completely general. Indeed, the same methodology applies verbatim to any class of anticommutative (or even non-anticommutative) algebras defined by polynomial identities, such as Lie, Leibniz, Malcev, or Zinbiel algebras. Once the multilinear form of the defining identity is written in symbolic form, the procedure of generating the bilinear products, expanding the identity, and solving the resulting system of equations works in exactly the same way. Therefore, our implementation provides a unified computational tool to test whether a given algebra satisfies a prescribed identity, or to determine the additional constraints that the structure constants of algebras associated with a fixed combinatorial pattern must satisfy in order to belong to any of these varieties.
To implement these algorithms, we fix a basis and denote by , , the structure constants of the algebra. We have implemented our algorithm in Python, using NumPy and SymPy libraries and following these steps:
Computing the product between two arbitrary basis vectors in .
Evaluating the product between two vectors expressed as a linear combination of vectors from .
Imposing the multi-linear form of the Tortkara identity and solving the corresponding system of equations.
AnticommutativeAlgebraSymbolic class represents a generic anticommutative algebra. Its constructor receives the dimension of the algebra as a parameter. The structure constants of the algebra are stored in the class property called coeffs, which is a 3-dimensional array. The constant is stored in the position . This array is initialized with all its values set to zero. Next, we show the constructor of the class.
class AnticommutativeAlgebraSymbolic:
def __init__(self, dim: int):
self.dimension = dim
self.coeffs = np.ndarray((dim, dim, dim), object)
self.coeffs[:,:,:] = sp.Rational(0)
self.is_in_graph = np.zeros((dim, dim, dim), int)
This class has methods that helps us populate the 3-dimensional structure constants array. The method set_coefficient_value(i, j, k, value) sets , while set_coefficient_variable(i, j, k, is_non_zero = True) sets the constant as a variable. Also, add_directed_edge_variable(⋯) and add_triangle_variable(⋯) set as variables all the constants related to the corresponding directed edge and triangle, respectively, of the associated combinatorial structure. There is also a method called get_coefficient(i, j, k) that returns the structure constant . Finally, the method get_variables() returns a list of all the structure constants that are set as variables. We show these methods below.
def get_coefficient(self, i, j, k):
return self.coeffs[i−1, j−1, k−1]
def set_coefficient_value(self, i, j, k, value):
if(i == j and value != 0):
print(f“The product e_{i} e_{j} must be zero.”)
return
i0 = i−1
j0 = j−1
k0 = k−1
self.coeffs[i0,j0,k0] = value
self.coeffs[j0,i0,k0] = −value
self.is_in_graph[i0,j0,k0] = 1
self.is_in_graph[j0,i0,k0] = 1
def set_coefficient_variable(self, i, j, k,
is_non_zero = True):
i0 = i−1
j0 = j−1
k0 = k−1
self.is_in_graph[i0,j0,k0] = 1
self.is_in_graph[j0,i0,k0] = 1
if is_non_zero:
self.coeffs[i0,j0,k0] = sp.symbols(f‘c{i}{j}^{k}’)
self.coeffs[j0,i0,k0] = −self.coeffs[i0,j0,k0]
else:
self.coeffs[i0,j0,k0] = sp.Rational(0)
self.coeffs[j0,i0,k0] = sp.Rational(0)
def add_directed_edge_variable(self, i, j):
if(i<j):
self.set_coefficient_variable(i, j, j, True)
elif(i>j):
self.set_coefficient_variable(j, i, j, True)
def add_triangle_variable(self, i, j, k,
ij_is_non_zero = True, ik_is_non_zero = True,
jk_is_non_zero = True):
if not ij_is_non_zero and not ik_is_non_zero
and not jk_is_non_zero:
print(“All the edges of a triangle can not be zero.”)
return
if(i<j):
self.set_coefficient_variable(i, j, k, ij_is_non_zero)
elif(i>j):
self.set_coefficient_variable(j, i, k, ij_is_non_zero)
if(i<k):
self.set_coefficient_variable(i, k, j, ik_is_non_zero)
elif(i>k):
self.set_coefficient_variable(k, i, j, ik_is_non_zero)
if(j<k):
self.set_coefficient_variable(j, k, i, jk_is_non_zero)
elif(j>k):
self.set_coefficient_variable(k, j, i, jk_is_non_zero)
def get_variables(self):
dim = self.dimension
return [self.coeffs[i,j,k] for i in range(0, dim−1)
for j in range(i+1, dim)
for k in range(0, dim)
if (self.is_in_graph[i,j,k]
and type(self.coeffs[i,j,k]) is sp.Symbol)]
The method bilineal_vector_product(v1, v2) shown below computes the bilinear product . It returns an n-dimensional array representing the vector , where the i-th element of the array is the i-th coordinate of v. The other three are variations of this one in the case or (or both) are elements of the basis. For example, bilineal_vector_product_int_int(i, j) returns the product .
def bilineal_vector_product_vector_int(self, v1, j):
return np.einsum(‘i,ik->k’, v1, self.coeffs[:, j])
def bilineal_vector_product_int_vector(self, i, v2):
return np.einsum(‘jk,j->k’, self.coeffs[i], v2)
def bilineal_vector_product(self, v1, v2):
return np.einsum(‘i,ijk,j->k’, v1, self.coeffs, v2)
The method tortkara_identity(i, j, k, l) returns . Similarly to the previous methods, it returns an n-dimensional array representing the vector . It also uses the auxiliary methods tortkara_identity_left_side(i, j, k, l) and tortkara_identity_right_side(i, j, k, l).
def tortkara_identity(self, i, j, k, l):
left_side = self.tortkara_identity_left_side(i, j, k, l)
+ self.tortkara_identity_left_side(i, l, k, j)
right_side = self.tortkara_identity_right_side(i, j, k, l)
+ self.tortkara_identity_right_side(i, l, k, j)
tortkara_identity = left_side − right_side
for i in range(0,self.dimension):
tortkara_identity[i] =
sp.expand(sp.simplify(tortkara_identity[i]))
return~tortkara_identity
def tortkara_identity_left_side(self, i, j, k, l):
return self.bilineal_vector_product(
self.bilineal_vector_product_int_int(i, j),
self.bilineal_vector_product_int_int(k, l))
def tortkara_identity_right_side(self, i, j, k, l):
r1 = self.bilineal_vector_product_vector_int(
self.bilineal_vector_product_int_int(i, j), k)
r2 = self.bilineal_vector_product_vector_int(
self.bilineal_vector_product_int_int(j, k), i)
r3 = self.bilineal_vector_product_vector_int(
self.bilineal_vector_product_int_int(k, i), j)
jacobi_ijk = r1 + r2 + r3
return
self.bilineal_vector_product_vector_int(jacobi_ijk,l)
If there are no structure constants set as variables, we can use the method is_tortkara_algebra() show below to test if the algebra that we have defined is a Tortkara algebra. If it is not, it prints which Tortkara identities are not zero. The method get_string_vector(v) is an auxiliary method from another class not shown here that prints an array as a sum of elements of the basis.
def is_tortkara_algebra(self):
dim = self.dimension
is_tortkara = True
for i in range(0, dim):
for j in range(0, dim):
for k in range(0, dim):
for l in range(0, dim):
identity = self.tortkara_identity(i, j, k, l)
if not np.any(identity):
continue
if is_tortkara:
is_tortkara = False
print(f“e_{i}, e_{j}, e_{k}, e_{l}:
{BaseMath.get_string_vector(identity)} != 0”)
if is_tortkara:
print(“It’s a Tortkara Algebra, yay!”)
else:
print(“It’s NOT a Tortkara Algebra :”)
return is_tortkara
Finally, if there are structure constants set as variables, the method get_equations_tortkara() returns a list of the equations that the algebra must satisfy to be a Tortkara algebra. If some equation is of the form , it is not added to the list. Therefore, if the method returns the empty list, it is always a Tortkara algebra. If the list contains at least one equation, we can use the solver in SymPy to calculate the conditions the algebra has to met to be a Tortkara algebra.
def get_equations_tortkara(self):
dim = self.dimension
identities = self.get_identities_tortkara()
return [sp.Eq(identity[i],0)
for identity in identities for i in range(0, dim)]
def get_identities_tortkara(self):
dim = self.dimension
return [self.tortkara_identity(i, j, k, l)
for i in range(0, dim)
for j in range(0, dim)
for k in range(0, dim)
for l in range(0, dim)]
Example 3. Here we show an example to calculate the conditions an algebra associated with a combinatorial structure has to met to be a Tortkara algebra.
t = AnticommutativeAlgebraSymbolic(3)
t.add_triangle_variable(1,2,3,1,0,0)
t.add_directed_edge_variable(1,2)
t.add_directed_edge_variable(2,1)
t.add_directed_edge_variable(1,3)
t.add_directed_edge_variable(3,1)
t.add_directed_edge_variable(2,3)
t.add_directed_edge_variable(3,2)
variables = t.get_variables()
sp.solve(t.get_equations(),variables,dict=False,set=True)
It returns
([c12^1, c12^2, c12^3, c13^1, c13^3, c23^2, c23^3],
{(c13^1*(−c12^2*c23^3 + c12^3*c23^2)/(c13^3*c23^2),
c12^2,
c12^3,
c13^1,
c13^3,
c23^2,
c23^3)})
Therefore, the condition that the algebra associated with that combinatorial structure has to met is .
Example 4. Here we show another example.
t = AnticommutativeAlgebraSymbolic(3)
t.add_triangle_variable(1,2,3,1,1,0)
t.add_directed_edge_variable(1,2)
t.add_directed_edge_variable(2,1)
t.add_directed_edge_variable(1,3)
t.add_directed_edge_variable(2,3)
variables = t.get_variables()
sp.solve(t.get_equations(),variables,dict=False,set=True)
It returns
([c12^1, c12^2, c12^3, c13^2, c13^3, c23^3],
{(0, c12^2, c12^3, c13^2, c13^3, c23^3),
(c12^1, c12^2, c12^3, 0, c13^3, c23^3),
(c12^1, c12^2, c12^3, c13^2, c13^3, 0)})
Every possible solutions has some structure constant set to zero. Therefore, this combinatorial structure can not be associated with a Tortkara algebra.
6. Computational Study
In this section we present a detailed computational study of the algorithmic procedures introduced in
Section 5. The implementation has been carried out in Python 3.10, using NumPy 1.26 and SymPy 1.12, on an Intel(R) Core(TM) i7-4510U CPU at 2.60 GHz with 12 GB of RAM. Both computing time (C.T.) and used memory (U.M.) have been measured for various dimensions
n of the algebra.
The computational study considers general anticommutative algebras with symbolic structure constants associated with arbitrary combinatorial structures, including directed edges and triangles. For each dimension
n, all multilinear Tortkara identities are generated and solved symbolically using SymPy.
Table 2 summarizes the observed computing time and memory usage.
Figure 4 and
Figure 5 show the growth of computing time and memory usage as functions of the algebra dimension
n. Both quantities fit a positive exponential trend, while the ratio U.M./C.T. approximately follows a decreasing exponential behavior, as shown in
Figure 6.
To quantify the computational trends, we fit exponential models of the form:
where
is computing time,
is memory usage, and
are fitting parameters. Least-squares regression yields:
The faster exponential growth of computing time compared to memory explains why symbolic solutions become infeasible for dimensions
–7. The quotient U.M./C.T. behaves as
, illustrating the negative exponential trend in
Figure 6.
7. Complexity Analysis
The algorithmic complexity can be estimated in terms of the number of operations in the worst case. In
Table 3, we show that complexity, where
denote the number of operations for Step
i of the procedure:
The effective number of non-trivial identities is often much smaller due to anticommutativity and the combinatorial pattern, which allows feasible computation for –6.
From the computational experiments and statistical modeling, we observe:
Dense combinatorial structures with many triangles produce a large number of symbolic variables and constraints, significantly increasing computing time.
Sparse or acyclic graphs tend to generate fewer non-trivial identities, making the computation faster and solutions more likely to exist.
Certain combinatorial configurations are inherently incompatible with Tortkara algebras, regardless of the choice of structure constants.
Exponential fitting provides a predictive model for resources, helping to plan computations for larger dimensions.
These results support a systematic, algorithmic approach for exploring combinatorial structures likely to correspond to Tortkara algebras.