Checking if Hochschild cohomology $\mathit{HH}^2(A)=0$

I believe that there is a 2-dimensional cocycle $g$ such that: $$ g(h_1 x \otimes h_2) = g(h_1 \otimes x h_2) = y h_1 x $$ and $g(a \otimes b) = 0$ for all other paths $a$ and $b$.

To check that it's a cocycle, we have to verify that for all paths $a$, $b$, $c$, we have $$ a g(b \otimes c) - g(a b \otimes c) + g(a \otimes bc) - g(a \otimes b)c = 0. $$ If $a=1$ or $c=1$ this is true; if $a \neq 1$ and $c \neq 1$ then the value of $g$ is length-3 and so it's killed by any product, and so we just need to verify $$ g(ab \otimes c) = g(a \otimes bc). $$ This is automatic if $b=1$, and both sides are zero if $a$, $b$, or $c$ are length greater than 1. This identity just needs to be checked when $a$, $b$, and $c$ are paths of length $1$, where it is straightforward.

Finally, to verify that it's nonzero in Hochschild cohomology we need to verify that there is no function $f$ such that $$ g(a \otimes b) = a f(b) - f(ab) + f(a)b. $$ If we apply this to $h_1 x \otimes h_2$ we find we need $$ h_1 x f(h_2) + f(h_1 x) h_2 = y h_1 x = -x h_2 y \notin I $$ but multiplication on the left by $h_1$ or on the right by $h_2$ sends all length 2 paths in $kQ$ into the ideal $I$.

(The second Hochschild cohomology group often "detects primitive relations". This cocycle is detecting that the length-3 path $h_1 x h_2$ is zero and that this is not a consequence on the length-2 relations.)


Of course Tyler Lawson's answer is the more conceptual and insightful one, but in case it is useful, I ran your GAP script on a machine with 64 GB of RAM, which turned out to be enough. If I understand the output of ExtOverAlgebra correctly, it seems that your $HH^2(A)$ group is a 138-dimensional vector space.

The GAP session is pasted below. Please let me know if I have misunderstood anything, including possibly the output of ExtOverAlgebra, which I never used before running your script.

gap> LoadPackage("qpa");
─────────────────────────────────────────────────────────────────────────────
Loading  GBNP 1.0.3 (Non-commutative Gröbner bases)
by A.M. Cohen (http://www.win.tue.nl/~amc) and
   J.W. Knopper ([email protected]).
Homepage: http://mathdox.org/products/gbnp/
─────────────────────────────────────────────────────────────────────────────
─────────────────────────────────────────────────────────────────────────────
Loading  QPA 1.30 (Quivers and Path Algebras)
by Edward Green (http://www.math.vt.edu/people/green) and
   Oeyvind Solberg (https://folk.ntnu.no/oyvinso/).
Homepage: https://folk.ntnu.no/oyvinso/QPA/
─────────────────────────────────────────────────────────────────────────────
true
gap> Q := Quiver(1, [[1,1,"x"],[1,1,"y"],[1,1,"h_1"],[1,1,"h_2"]]);
<quiver with 1 vertices and 4 arrows>
gap> R := PathAlgebra(Rationals,Q);
<Rationals[<quiver with 1 vertices and 4 arrows>]>
gap> gens:= GeneratorsOfAlgebra(R);
[ (1)*v1, (1)*x, (1)*y, (1)*h_1, (1)*h_2 ]
gap> x:=gens[2];
(1)*x
gap> y:=gens[3];
(1)*y
gap> h_1:=gens[4];
(1)*h_1
gap> h_2:=gens[5];
(1)*h_2
gap> relations :=[x^2,y^2,h_1^2,h_2^2,x*y,y*x,h_1*h_2,h_2*h_1,x*h_1*x,x*h_1*y,y*h_1*y,x*h_2*x,y*h_2*x,y*h_2*y,y*h_1*x+x*h_2*y,h_1*x*h_1,h_1*x*h_2,h_2*x*h_1,h_2*x*h_2,h_1*y*h_1,h_1*y*h_2,h_2*y*h_1,h_2*y*h_2];
[ (1)*x^2, (1)*y^2, (1)*h_1^2, (1)*h_2^2, (1)*x*y, (1)*y*x, (1)*h_1*h_2, 
  (1)*h_2*h_1, (1)*x*h_1*x, (1)*x*h_1*y, (1)*y*h_1*y, (1)*x*h_2*x, 
  (1)*y*h_2*x, (1)*y*h_2*y, (1)*x*h_2*y+(1)*y*h_1*x, (1)*h_1*x*h_1, 
  (1)*h_1*x*h_2, (1)*h_2*x*h_1, (1)*h_2*x*h_2, (1)*h_1*y*h_1, (1)*h_1*y*h_2, 
  (1)*h_2*y*h_1, (1)*h_2*y*h_2 ]
gap> gb := GBNPGroebnerBasis(relations,R);
[ (1)*x^2, (1)*x*y, (1)*y*x, (1)*y^2, (1)*h_1^2, (1)*h_1*h_2, (1)*h_2*h_1, 
  (1)*h_2^2, (1)*x*h_1*x, (1)*x*h_1*y, (1)*x*h_2*x, (1)*x*h_2*y+(1)*y*h_1*x, 
  (1)*y*h_1*y, (1)*y*h_2*x, (1)*y*h_2*y, (1)*h_1*x*h_1, (1)*h_1*x*h_2, 
  (1)*h_1*y*h_1, (1)*h_1*y*h_2, (1)*h_2*x*h_1, (1)*h_2*x*h_2, (1)*h_2*y*h_1, 
  (1)*h_2*y*h_2 ]
gap> I:=Ideal(R,gb);
<two-sided ideal in <Rationals[<quiver with 1 vertices and 4 arrows>]>, 
  (23 generators)>
gap> GroebnerBasis(I,gb);
<complete two-sided Groebner basis containing 23 elements>
gap> A:=R/I;
<Rationals[<quiver with 1 vertices and 4 arrows>]/
<two-sided ideal in <Rationals[<quiver with 1 vertices and 4 arrows>]>, 
  (23 generators)>>
gap> M := AlgebraAsModuleOverEnvelopingAlgebra(A);
<[ 14 ]>
gap> HH2 := ExtOverAlgebra(NthSyzygy(M, 1), M);
[ <<[ 602 ]> ---> <[ 784 ]>>, 
  [ <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>>, 
      <<[ 602 ]> ---> <[ 14 ]>>, <<[ 602 ]> ---> <[ 14 ]>> ], 
  function( map ) ... end ]
gap> Length(HH2[2]);
138