  We describe an algorithm to compute the zeta-function of a proper, smooth
curve over a finite field, when the curve is given together with some auxiliary
data. Our method is based on computing the matrix of the action of a
semi-linear Frobenius on the first cohomology group of the curve by means of
Serre duality. The cup product involved can be computed locally, after first
computing local expansions of a globally defined lift of Frobenius. The
resulting algorithm's complexity is softly cubic in the field degree, which is
also the case with Kedlaya's algorithm in the hyperelliptic case.
