cabal-version: 3.0 name: symbolic-base version: 0.1.0.0 tested-with: GHC == 9.6.3 synopsis: ZkFold Symbolic compiler and zero-knowledge proof protocols homepage: https://zkfold.io/ category: Cryptography, DSL, Math, Symbolic Computation author: Vladimir Sinyakov, Pavel Sokolov, Vladimir Morozov, Eitan Chatav, Ilya Baryshnikov, Anna Hovanskaya, Evgenii Samodelov, Murat Kasimov, Maxim Churilov maintainer: vlasin@zkfold.io license: MIT license-file: LICENSE build-type: Simple Data-Files: test/data/shabittestvectors/*.rsp description: This package contains the zkFold Symbolic framework base library. It includes the zkFold Symbolic compiler and a number of zero knowledge proof protocols. The compiler translates code written using the zkFold Symbolic framework into arithmetic circuits. The zero knowledge proof protocols are used to verify statements about the circuits. Flag Pedantic Description: Enable pedantic build with -Werror Manual: True Default: False common options default-language: Haskell2010 ghc-options: -fwarn-redundant-constraints -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wnoncanonical-monad-instances -Wpartial-fields -Wredundant-constraints -Wunused-packages -O2 -threaded if flag(pedantic) ghc-options: -Werror default-extensions: BangPatterns, BinaryLiterals, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, ExistentialQuantification, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, InstanceSigs, KindSignatures, LambdaCase, MultiParamTypeClasses, MultiWayIf, NamedFieldPuns, NoImplicitPrelude, NoStarIsType, NumericUnderscores, OverloadedStrings, OverloadedLabels, PolyKinds, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, StandaloneKindSignatures, TupleSections, TypeApplications, TypeFamilies, ViewPatterns common options-exe import: options ghc-options: -rtsopts ghc-prof-options: -with-rtsopts=-pj library import: options exposed-modules: ZkFold.Base.Algebra.Basic.Class ZkFold.Base.Algebra.Basic.Field ZkFold.Base.Algebra.Basic.Number ZkFold.Base.Algebra.Basic.Permutations ZkFold.Base.Algebra.Basic.DFT ZkFold.Base.Algebra.Basic.VectorSpace ZkFold.Base.Algebra.EllipticCurve.BLS12_381 ZkFold.Base.Algebra.EllipticCurve.BN254 ZkFold.Base.Algebra.EllipticCurve.Pasta ZkFold.Base.Algebra.EllipticCurve.Class ZkFold.Base.Algebra.EllipticCurve.Ed25519 ZkFold.Base.Algebra.EllipticCurve.Pairing ZkFold.Base.Algebra.Polynomials.Multivariate ZkFold.Base.Algebra.Polynomials.Multivariate.Groebner ZkFold.Base.Algebra.Polynomials.Multivariate.Monomial ZkFold.Base.Algebra.Polynomials.Multivariate.Polynomial ZkFold.Base.Algebra.Polynomials.Multivariate.Substitution ZkFold.Base.Algebra.Polynomials.Univariate ZkFold.Base.Control.HApplicative ZkFold.Base.Data.ByteString ZkFold.Base.Data.Functor.Rep ZkFold.Base.Data.HFunctor ZkFold.Base.Data.List.Infinite ZkFold.Base.Data.Matrix ZkFold.Base.Data.Package ZkFold.Base.Data.Product ZkFold.Base.Data.Sparse.Matrix ZkFold.Base.Data.Sparse.Vector ZkFold.Base.Data.Type ZkFold.Base.Data.Utils ZkFold.Base.Data.Vector ZkFold.Base.Protocol.KZG ZkFold.Base.Protocol.Plonk ZkFold.Base.Protocol.Plonk.Prover ZkFold.Base.Protocol.Plonk.Verifier ZkFold.Base.Protocol.Plonkup ZkFold.Base.Protocol.Plonkup.LookupConstraint ZkFold.Base.Protocol.Plonkup.PlonkConstraint ZkFold.Base.Protocol.Plonkup.PlonkupConstraint ZkFold.Base.Protocol.Plonkup.Input ZkFold.Base.Protocol.Plonkup.Internal ZkFold.Base.Protocol.Plonkup.Proof ZkFold.Base.Protocol.Plonkup.Prover ZkFold.Base.Protocol.Plonkup.Prover.Polynomials ZkFold.Base.Protocol.Plonkup.Prover.Secret ZkFold.Base.Protocol.Plonkup.Prover.Setup ZkFold.Base.Protocol.Plonkup.Relation ZkFold.Base.Protocol.Plonkup.Setup ZkFold.Base.Protocol.Plonkup.Testing ZkFold.Base.Protocol.Plonkup.Utils ZkFold.Base.Protocol.Plonkup.Verifier ZkFold.Base.Protocol.Plonkup.Verifier.Commitments ZkFold.Base.Protocol.Plonkup.Verifier.Setup ZkFold.Base.Protocol.Plonkup.Witness ZkFold.Base.Protocol.Protostar ZkFold.Base.Protocol.Protostar.Accumulator ZkFold.Base.Protocol.Protostar.AccumulatorScheme ZkFold.Base.Protocol.Protostar.AlgebraicMap ZkFold.Base.Protocol.Protostar.ArithmetizableFunction ZkFold.Base.Protocol.Protostar.CommitOpen ZkFold.Base.Protocol.Protostar.Commit ZkFold.Base.Protocol.Protostar.FiatShamir ZkFold.Base.Protocol.Protostar.IVC ZkFold.Base.Protocol.Protostar.NARK ZkFold.Base.Protocol.Protostar.Oracle ZkFold.Base.Protocol.Protostar.RecursiveCircuit ZkFold.Base.Protocol.Protostar.SpecialSound ZkFold.Base.Protocol.NonInteractiveProof ZkFold.Base.Protocol.NonInteractiveProof.Internal ZkFold.Base.Protocol.NonInteractiveProof.Prover ZkFold.Base.Protocol.NonInteractiveProof.Testing ZkFold.Prelude ZkFold.Symbolic.Algorithms.ECDSA.ECDSA ZkFold.Symbolic.Algorithms.Hash.Blake2b ZkFold.Symbolic.Algorithms.Hash.Blake2b.Constants ZkFold.Symbolic.Algorithms.Hash.MiMC ZkFold.Symbolic.Algorithms.Hash.MiMC.Constants ZkFold.Symbolic.Algorithms.Hash.SHA2 ZkFold.Symbolic.Algorithms.Hash.SHA2.Constants ZkFold.Symbolic.Algorithms.RSA ZkFold.Symbolic.Class ZkFold.Symbolic.Compiler ZkFold.Symbolic.Compiler.ArithmeticCircuit ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance ZkFold.Symbolic.Compiler.ArithmeticCircuit.Internal ZkFold.Symbolic.Compiler.ArithmeticCircuit.Map ZkFold.Symbolic.Compiler.ArithmeticCircuit.MerkleHash ZkFold.Symbolic.Compiler.ArithmeticCircuit.Optimization ZkFold.Symbolic.Compiler.ArithmeticCircuit.Witness ZkFold.Symbolic.Data.Bool ZkFold.Symbolic.Data.ByteString ZkFold.Symbolic.Data.Class ZkFold.Symbolic.Data.Combinators ZkFold.Symbolic.Data.Conditional ZkFold.Symbolic.Data.DiscreteField ZkFold.Symbolic.Data.Ed25519 ZkFold.Symbolic.Data.Eq ZkFold.Symbolic.Data.FFA ZkFold.Symbolic.Data.Hash ZkFold.Symbolic.Data.Input ZkFold.Symbolic.Data.List ZkFold.Symbolic.Data.Maybe ZkFold.Symbolic.Data.Ord ZkFold.Symbolic.Data.Payloaded ZkFold.Symbolic.Data.UInt ZkFold.Symbolic.Data.UTCTime ZkFold.Symbolic.Data.FieldElement ZkFold.Symbolic.Interpreter ZkFold.Symbolic.MonadCircuit build-depends: base >= 4.9 && < 5, adjunctions < 4.5, aeson < 2.3, base64-bytestring , binary < 0.11, -- TODO: remove `blake2` after refactoring of ZK protocols blake2 < 0.4, bytestring < 0.12, containers < 0.7, constraints , cryptohash-sha256 < 0.12, deepseq <= 1.5.0.0, distributive , infinite-list , lens , monoidal-containers , mtl < 2.4, optics < 0.5, pretty-simple < 4.2, QuickCheck < 2.15, random < 1.3, semialign < 1.4, semigroups , split < 0.2.6, -- TODO: remove `swagger2` after moving the related code to `zkfold-prover` swagger2 , text , these < 1.3, type-errors < 0.2.1, vector < 0.14, vector-binary-instances < 0.3, vector-split < 1.1, hs-source-dirs: src test-suite symbolic-base-test import: options-exe type: exitcode-stdio-1.0 ghc-options: "-with-rtsopts=-A128M -AL256m -qb0 -qn4 -N" main-is: Main.hs other-modules: Tests.ArithmeticCircuit Tests.Arithmetization Tests.Arithmetization.Test1 Tests.Arithmetization.Test2 Tests.Arithmetization.Test3 Tests.Arithmetization.Test4 Tests.Arithmetization.Optimization Tests.Binary Tests.Blake2b Tests.ByteString Tests.Compiler Tests.FFA Tests.Field Tests.GroebnerBasis Tests.Group Tests.Hash Tests.List Tests.NonInteractiveProof Tests.Pairing Tests.Permutations Tests.Plonkup Tests.Protostar Tests.RSA Tests.SHA2 Tests.UInt Tests.Univariate Tests.Univariate.Poly Tests.Univariate.PolyVec build-depends: base >= 4.9 && < 5, adjunctions < 4.5, binary < 0.11, bytestring , blake2 , constraints , containers , containers , deepseq , directory <= 1.3.8.4, filepath <= 1.5.2.0, hspec < 2.12, QuickCheck , random < 1.3, regex-tdfa <= 1.3.2.2, RSA < 1.1, split < 0.2.6, symbolic-base , vector , vector-algorithms , aeson hs-source-dirs: test benchmark bench-poly-mul import: options-exe main-is: BenchPolyMul.hs hs-source-dirs: bench type: exitcode-stdio-1.0 ghc-options: -O3 build-depends: base, deepseq, random, symbolic-base, tasty-bench, vector, benchmark in-circuit-ec-benchmark import: options-exe main-is: BenchEC.hs hs-source-dirs: bench type: exitcode-stdio-1.0 ghc-options: -O3 build-depends: base, deepseq, tasty-bench, random, symbolic-base,