packages feed

dtmc-0.3.0.0: dtmc.cabal

cabal-version:      3.0
name:               dtmc
version:            0.3.0.0
synopsis:           Type-safe discrete-time Markov chains
description:
  Type-safe finite discrete-time Markov chains with matrix and kernel
  representations, plus locally finite countable-state kernels for exact
  finite-horizon analysis and simulation.
  The package provides validated probability laws, finite-time joint and
  conditional probabilities, hitting and return quantities, visit counts,
  communicating-class analysis, canonical decomposition, absorption,
  stationary distributions, and ordinary and cyclic limiting behaviour.
category:           Math, Probability
homepage:           https://github.com/kholmetskii/dtmc
bug-reports:        https://github.com/kholmetskii/dtmc/issues
license:            BSD-3-Clause
license-file:       LICENSE
author:             Arkadii Kholmetskii
maintainer:         Arkadii Kholmetskii <kholmetskiia@gmail.com>
copyright:          2026 Arkadii Kholmetskii
build-type:         Simple
tested-with:
    GHC ==9.6.7
  , GHC ==9.8.4
  , GHC ==9.10.3
  , GHC ==9.12.4
  , GHC ==9.14.1
extra-doc-files:
    README.md
    CHANGELOG.md

extra-source-files:
    cabal.project
    benchmark/README.md
    benchmark/REPORT.md
    benchmark/results/environment.json
    benchmark/results/ratio-summary.csv
    benchmark/results/ratios.csv
    benchmark/results/scaling.csv
    benchmark/results/summary.csv
    benchmark/results/verification.json
    benchmark/results/plots/absorbing--hitting-bounded-exact-k-100--speed-ratio.svg
    benchmark/results/plots/dense--evolution-one-step--speed-ratio.svg
    benchmark/results/plots/dense--hitting-time-cold-all-states--speed-ratio.svg
    benchmark/results/plots/periodic--finite-time-observation-k-100--speed-ratio.svg
    benchmark/cabal.project
    benchmark/cabal.project.freeze
    benchmark/analyse.py
    benchmark/plot.py
    benchmark/run.py
    benchmark/data/generate.py
    benchmark/data/spec.json
    benchmark/python/bench.py
    benchmark/python/pyproject.toml
    benchmark/python/requirements.lock
    benchmark/python/verify.py

common lang
  default-language: GHC2021

  default-extensions:
      DataKinds
    , RoleAnnotations
    , TypeFamilies

  ghc-options:
      -Wall
      -Wcompat
      -Wincomplete-uni-patterns
      -Wredundant-constraints

library
  import:           lang
  hs-source-dirs:   src

  exposed-modules:
      Dtmc
      Dtmc.Simplex
      Dtmc.State
      Dtmc.Distribution
      Dtmc.Distribution.Vector
      Dtmc.Distribution.Map
      Dtmc.Transition
      Dtmc.Transition.Matrix
      Dtmc.Transition.Kernel
      Dtmc.Simulation
      Dtmc.Dynamics
      Dtmc.Analysis.Event
      Dtmc.Analysis.FiniteTime
      Dtmc.Analysis.Expectation
      Dtmc.Analysis.Limiting
      Dtmc.Analysis.LinearSystem
      Dtmc.Analysis.HittingTime
      Dtmc.Analysis.ReturnTime
      Dtmc.Analysis.VisitCount
      Dtmc.Analysis.Absorption
      Dtmc.Analysis.Classification
      Dtmc.Analysis.Stationary

  other-modules:
      Dtmc.Distribution.Vector.Internal
      Dtmc.Distribution.Map.Internal
      Dtmc.Transition.Internal
      Dtmc.Transition.Matrix.Internal
      Dtmc.Simplex.Internal
      Dtmc.Analysis.FiniteHorizon.Internal
      Dtmc.Analysis.FiniteTime.Internal
      Dtmc.Analysis.Classification.Internal
      Dtmc.Analysis.Classification.Reachability.Internal
      Dtmc.Analysis.LinearSystem.Internal
      Dtmc.Analysis.Initial.Internal
      Dtmc.Transition.Matrix.Internal.Graph
      Dtmc.Dynamics.Internal
      Dtmc.State.Internal

  build-depends:
      base >=4.18 && <5
    , array >=0.5.8 && <0.6
    , containers >=0.6.7 && <0.8
    , finite-typelits >=0.2.0.1 && <0.3
    , hmatrix >=0.20.2 && <0.21
    , mwc-random >=0.15.0.1 && <0.16
    , primitive >=0.9 && <0.10
    , vector >=0.13 && <0.14

test-suite spec
  import:           lang
  type:             exitcode-stdio-1.0
  hs-source-dirs:   test
  main-is:          Spec.hs

  other-modules:
      Dtmc.Distribution.VectorSpec
      Dtmc.Distribution.MapSpec
      Dtmc.Distribution.InterfaceSpec
      Dtmc.StateSpec
      Dtmc.Transition.MatrixSpec
      Dtmc.SimulationSpec
      Dtmc.DynamicsSpec
      Dtmc.Analysis.EventSpec
      Dtmc.Analysis.FiniteTimeCanonicalSpec
      Dtmc.Analysis.HittingTimeCanonicalSpec
      Dtmc.Analysis.CanonicalDifferentialSpec
      Dtmc.Analysis.NamespaceCompileSpec
      Dtmc.Analysis.ProbabilityOracle
      Dtmc.Analysis.FiniteTimeSpec
      Dtmc.Analysis.AbsorptionSpec
      Dtmc.Analysis.ClassificationSpec
      Dtmc.Analysis.ReturnTimeCanonicalSpec
      Dtmc.Analysis.VisitCountCanonicalSpec
      Dtmc.Analysis.HittingTimeSpec
      Dtmc.Analysis.ReturnTimeSpec
      Dtmc.Analysis.VisitCountSpec
      Dtmc.Analysis.LimitingSpec
      Dtmc.Analysis.StationarySpec
      Dtmc.Analysis.TimeSpecSupport
      Dtmc.Transition.KernelSpec
      Dtmc.Transition.InterfaceSpec
      Dtmc.IntegrationSpec
      Dtmc.TestSupport

  build-depends:
      base
    , containers
    , dtmc
    , finite-typelits
    , hspec >=2.11.17 && <2.12
    , mwc-random
    , QuickCheck >=2.18 && <2.19

  build-tool-depends:
      hspec-discover:hspec-discover >=2.11.17 && <2.12

benchmark dtmc-bench
  import:           lang
  type:             exitcode-stdio-1.0
  hs-source-dirs:   benchmark/haskell
  main-is:          Main.hs

  other-modules:
      Cases
      Dataset
      Force
      Verification

  ghc-options:
      -threaded
      -rtsopts

  build-depends:
      aeson >=2.2 && <2.3
    , base
    , binary >=0.8.9 && <0.9
    , bytestring >=0.11 && <0.13
    , criterion >=1.6.4 && <1.7
    , deepseq >=1.4.8 && <1.6
    , dtmc
    , finite-typelits
    , filepath >=1.4 && <1.6
    , mwc-random
    , vector >=0.13 && <0.14

source-repository head
  type:             git
  location:         https://github.com/kholmetskii/dtmc.git

source-repository this
  type:             git
  location:         https://github.com/kholmetskii/dtmc.git
  tag:              v0.3.0.0