# About 3-fold log canonical singularity

As far as I know, log canonical surface singularities were classified. How about higher dimensional case?

I especially want to know whether given 3-fold singularity is log canonical or not.

Let $f$ be a holomorphic function near $0 \in \mathbb C^4$ and $D=\{ f=0\}$. Then how can I check that whether it is log canonical or not?

For example, Let $f=x_2x_4+(x_3+x_4)^2+(x_1x_4+x_2x_3)(x_1+x_2+x_3+x_4)+(x_1x_4+x_2x_3)^2$.

Is it log canonical? Can you give any answers or references?

Yes, it is log canonical.

A quick way is simply to check whether it is F-pure after reduction to characteristic p for some p. (Actually, before this paper, one would have to check infinitely many primes, but now we know that fpt($f$ mod $p$) $\leq$ lct($f$) for all p).

Fortunately, one can check this very easily in a computer (I bet blowups would also be do-able here, although certainly a lot more work...).

In characteristic $p = 7, 13$, I checked that $\langle f^{p-1} \rangle^{[1/p]} = \langle 1 \rangle = \mathbb{Z}/p[x_1,x_1,x_3,x_4]$. This proves that the pair $(\mathbb{A}^4, f^1)$ is $F$-pure and hence log canonical back in characteristic zero. For some additional background, you could see these survey articles: Smith-Zhang, Schwede-Tucker, Blickle-Schwede, Patakfalvi-Schwede-Tucker. The original result that the FPT is $\leq$ the LCT is for $p \gg 0$ is essentially due to Hara-Watanabe (except they didn't define the FPT, that was Takagi-Watanabe and Mustata-Takagi-Watanabe, see the references contained in the above articles).

## The actual computation

Ok, I did this in Macaulay2, and I used PosChar.m2 (a Macaulay2 package, some documentation is HERE). I then entered the following commands:

loadPackage "PosChar"
p = 7
R=ZZ/p[x1,x2,x3,x4]
f = x2*x4+(x3+x4)^2+(x1*x4+x2*x3)*(x1+x2+x3+x4)+(x1*x4+x2*x3)^2
ethRoot(f^(p-1), 1)


Macaulay2 output

ideal 1
Ideal of R


which proves that it is $F$-pure and hence log canonical back in characteristic zero. Anyway, the key computation which I am sure you could also do by hand in this case is called "Fedder's Criterion" (see the above articles).

### A caveat

The package PosChar.m2 also has a function called "IsSharplyFPurePoly" which could also work here. However, the implementation is slower than what I did above (I need to go fix that, I will try to update this answer when I do that).