{-# LANGUAGE AllowAmbiguousTypes #-}
module ZkFold.Base.Protocol.ARK.Protostar.SpecialSound where
import Numeric.Natural (Natural)
import Prelude hiding (length)
import ZkFold.Base.Algebra.Polynomials.Multivariate (Polynomial')
import ZkFold.Base.Data.Vector (Vector)
import ZkFold.Symbolic.Compiler.Arithmetizable (Arithmetic)
type SpecialSoundTranscript t a = [(ProverMessage t a, VerifierMessage t a)]
class Arithmetic f => SpecialSoundProtocol f a where
type Witness f a
type Input f a
type ProverMessage t a
type VerifierMessage t a
type Dimension a :: Natural
type Degree a :: Natural
rounds :: a -> Natural
prover :: a -> Witness f a -> Input f a -> SpecialSoundTranscript f a -> ProverMessage f a
verifier' :: a -> Input f a -> SpecialSoundTranscript Natural a
-> Vector (Dimension a) (Polynomial' f)
verifier :: a -> Input f a -> SpecialSoundTranscript f a -> Bool