# # file: meataxe.gap # # purpose: Wrappers for Meataxe routines # # created: Pasha Zusmanovich Jan 7 2014 # # latest revision history: # Feb 11 2021 in MeataxeAdjointRep(), do TransposedMat (otherwise we are # are computing its dual) # Oct 28 2021 cosmetics: some of the code is valid for arbitrary nonassociative # algebras, not necessary Lie # # constructs the Meataxe representation in A of an associative algebra, # generated by right multiplications on elements of A; # for Lie algebras, this is adjoint representation # for associative algebras, this is regular representation MeataxeAdjointRep := function (A) local B, matrices, v; B := Basis (A); matrices := []; for v in B do Add (matrices, TransposedMat (AdjointMatrix (B, v))); od; return (GModuleByMats (matrices, LeftActingDomain (A))); end; # constructs a Meataxe dual representation to a given one MeataxeDualRep := function (M) local matrices, m; matrices := []; for m in MTX.Generators (M) do Add (matrices, - TransposedMat (m)); od; return (GModuleByMats (matrices, MTX.Field (M))); end; # for a given algebra A, determines whether it is simple or not MeataxeIsSimple := function (A) return (MTX.IsIrreducible (MeataxeAdjointRep (A))); end; MeataxeIsCentralSimple := function (A) return (MTX.IsAbsolutelyIrreducible (MeataxeAdjointRep (A))); end; # for a given algebra A, returns whether the adjoint module is isomorphic to its # dual; # for Lie algebras, this is equivalent to the fact that A is isomorphic to A* as # A-modules MeataxeAdjointIsomToDual := function (A) local ad; ad := MeataxeAdjointRep (A); return (not (MTX.IsomorphismModules (ad, MeataxeDualRep (ad)) = fail)); end; # end of meataxe.gap