{-# LANGUAGE NoImplicitPrelude #-}
module Knots
  ( module Knots.Braid
  , module Knots.Complex
  , module Knots.Free
  , module Knots.Graded
  , module Knots.Khovanov
  , module Knots.Morphism
  , module Knots.PD
  , module Knots.Prelude
  , module Knots.Table
  , module Knots.Torus
  , module Knots.Util
  , cohomBraidPar
  )
  where

import Knots.Braid
import Knots.Complex
import Knots.Free
import Knots.Graded
import Knots.Khovanov
import Knots.Morphism
import Knots.PD
import Knots.Prelude
import Knots.Table
import Knots.Torus
import Knots.Util

import Control.Parallel.Strategies
import qualified Data.Map as Map
import qualified Data.Set as Set

cohomBraidPar :: Int -> Braid -> [ (Int, [Int] ) ]
cohomBraidPar nProcs =
    Map.assocs . withStrategy (parTraversable (evalList rseq))
    . cohomologyGraded . khCx_Q Nothing . fromBraid