{-# LANGUAGE TypeOperators #-}

module ZkFold.Base.Protocol.IVC.StepFunction where

import           Prelude                           hiding (Num (..), drop, head, replicate, take, zipWith)

import           ZkFold.Symbolic.Class
import           ZkFold.Symbolic.Data.FieldElement (FieldElement (..))

type StepFunctionAssumptions a f ctx =
    ( Symbolic ctx
    , BaseField ctx ~ a
    , FieldElement ctx ~ f
    )

type StepFunction a i p = forall f ctx . StepFunctionAssumptions a f ctx
    => i f -> p f -> i f