{-# LANGUAGE UndecidableInstances #-}

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

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

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

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