I read this article: https://media.consensys.net/introduction-to-zksnarks-with-examples-3283b554fc3b
However, it's not clear to me a function such as zksnarkverify has been already implemented in Ethereum Solidity? Or we need to implement it by our self?
Is there an API or library to use zk-SNARK algorithms ? such as:
public keys generator G(program C, secret lambda) -> (prover public key, verifier public key),
or
prover algorithm P(prover public key, public x, secret w) -> proof
or
verifier algorithm V(verifier public key, public x, proof) -> true ?
where program C is C(public x, secret w).