# Singular

##### 7.5.14.0. findimAlgebra
Procedure from library `nctools.lib` (see nctools_lib).

Usage:
findimAlgebra(M,[r]); M a matrix, r an optional ring

Return:
ring

Purpose:
define a finite dimensional algebra structure on a ring

Note:
the matrix M is used to define the relations x(i)*x(j) = M[i,j] in the basering (by default) or in the optional ring r.
The procedure equips the ring with the noncommutative structure.
The procedure exports the ideal (not a two-sided Groebner basis!), called `fdQuot`, for further qring definition.

Theory:
finite dimensional algebra can be represented as a factor algebra of a G-algebra modulo certain two-sided ideal. The relations of a f.d. algebra are thus naturally divided into two groups: firstly, the relations on the variables of the ring, making it into G-algebra and the rest of them, which constitute the ideal which will be factored out.

Example:
 ```LIB "nctools.lib"; ring r=(0,a,b),(x(1..3)),dp; matrix S[3][3]; S[2,3]=a*x(1); S[3,2]=-b*x(1); def A=findimAlgebra(S); setring A; fdQuot = twostd(fdQuot); qring Qr = fdQuot; Qr; ==> // coefficients: QQ(a, b) ==> // number of vars : 3 ==> // block 1 : ordering dp ==> // : names x(1) x(2) x(3) ==> // block 2 : ordering C ==> // noncommutative relations: ==> // x(3)x(2)=(-b)/(a)*x(2)*x(3) ==> // quotient ring from ideal ==> _[1]=x(3)^2 ==> _[2]=x(2)*x(3)+(-a)*x(1) ==> _[3]=x(1)*x(3) ==> _[4]=x(2)^2 ==> _[5]=x(1)*x(2) ==> _[6]=x(1)^2 ```