{-# LANGUAGE UndecidableInstances #-}

module ZkFold.Base.Protocol.Plonkup.Prover.Polynomials where

import           Prelude                                 hiding (Num (..), drop, length, sum, take, (!!), (/), (^))

import           ZkFold.Base.Algebra.EllipticCurve.Class (EllipticCurve (..))
import           ZkFold.Base.Protocol.Plonkup.Internal   (PlonkupPolyExtended)

data PlonkupCircuitPolynomials n c = PlonkupCircuitPolynomials {
        forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
qlX :: PlonkupPolyExtended n c,
        forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
qrX :: PlonkupPolyExtended n c,
        forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
qoX :: PlonkupPolyExtended n c,
        forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
qmX :: PlonkupPolyExtended n c,
        forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
qcX :: PlonkupPolyExtended n c,
        forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
qkX :: PlonkupPolyExtended n c,
        forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
s1X :: PlonkupPolyExtended n c,
        forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
s2X :: PlonkupPolyExtended n c,
        forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
s3X :: PlonkupPolyExtended n c,
        forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
tX  :: PlonkupPolyExtended n c
    }
instance Show (ScalarField c) => Show (PlonkupCircuitPolynomials n c) where
    show :: PlonkupCircuitPolynomials n c -> String
show PlonkupCircuitPolynomials {PolyVec (ScalarField c) ((4 * n) + 6)
qlX :: forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
qrX :: forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
qoX :: forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
qmX :: forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
qcX :: forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
qkX :: forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
s1X :: forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
s2X :: forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
s3X :: forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
tX :: forall {k} (n :: Natural) (c :: k).
PlonkupCircuitPolynomials n c -> PlonkupPolyExtended n c
qlX :: PolyVec (ScalarField c) ((4 * n) + 6)
qrX :: PolyVec (ScalarField c) ((4 * n) + 6)
qoX :: PolyVec (ScalarField c) ((4 * n) + 6)
qmX :: PolyVec (ScalarField c) ((4 * n) + 6)
qcX :: PolyVec (ScalarField c) ((4 * n) + 6)
qkX :: PolyVec (ScalarField c) ((4 * n) + 6)
s1X :: PolyVec (ScalarField c) ((4 * n) + 6)
s2X :: PolyVec (ScalarField c) ((4 * n) + 6)
s3X :: PolyVec (ScalarField c) ((4 * n) + 6)
tX :: PolyVec (ScalarField c) ((4 * n) + 6)
..} =
        String
"Circuit Polynomials: "
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ PolyVec (ScalarField c) ((4 * n) + 6) -> String
forall a. Show a => a -> String
show PolyVec (ScalarField c) ((4 * n) + 6)
qlX String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" "
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ PolyVec (ScalarField c) ((4 * n) + 6) -> String
forall a. Show a => a -> String
show PolyVec (ScalarField c) ((4 * n) + 6)
qrX String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" "
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ PolyVec (ScalarField c) ((4 * n) + 6) -> String
forall a. Show a => a -> String
show PolyVec (ScalarField c) ((4 * n) + 6)
qoX String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" "
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ PolyVec (ScalarField c) ((4 * n) + 6) -> String
forall a. Show a => a -> String
show PolyVec (ScalarField c) ((4 * n) + 6)
qmX String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" "
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ PolyVec (ScalarField c) ((4 * n) + 6) -> String
forall a. Show a => a -> String
show PolyVec (ScalarField c) ((4 * n) + 6)
qcX String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" "
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ PolyVec (ScalarField c) ((4 * n) + 6) -> String
forall a. Show a => a -> String
show PolyVec (ScalarField c) ((4 * n) + 6)
qkX String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" "
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ PolyVec (ScalarField c) ((4 * n) + 6) -> String
forall a. Show a => a -> String
show PolyVec (ScalarField c) ((4 * n) + 6)
s1X String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" "
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ PolyVec (ScalarField c) ((4 * n) + 6) -> String
forall a. Show a => a -> String
show PolyVec (ScalarField c) ((4 * n) + 6)
s2X String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" "
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ PolyVec (ScalarField c) ((4 * n) + 6) -> String
forall a. Show a => a -> String
show PolyVec (ScalarField c) ((4 * n) + 6)
s3X