packages feed

moonlight-core-0.1.0.2: moonlight-core.cabal

cabal-version:       3.0
name:                moonlight-core
version:             0.1.0.2
synopsis:            Mathematical basis for Pale Meridian.
description:         A total vocabulary of numeric classes, structural identity, orders, patterns, fixpoints, union-find, finite registries, and host-neutral e-graph programs.
license:             MIT
license-file:        LICENSE
author:              Blue Rose
maintainer:          rosaliafialkova@gmail.com
copyright:           (c) 2026 Blue Rose
category:            Math
homepage:            https://github.com/PaleRoses/moonlight
bug-reports:         https://github.com/PaleRoses/moonlight/issues
build-type:          Simple
tested-with:         GHC == 9.14.1
extra-doc-files:
  README.md
  CHANGELOG.md

source-repository head
  type:     git
  location: https://github.com/PaleRoses/moonlight.git
  subdir:   moonlight-core

common shared-properties
  default-language: GHC2024
  ghc-options:
    -Wall
    -Wcompat
    -Wincomplete-record-updates
    -Wincomplete-uni-patterns
    -Wredundant-constraints
    -Wpartial-fields
    -Wno-missing-import-lists
  default-extensions:
    StrictData
    NoImplicitPrelude
    TypeFamilies
    UndecidableInstances

library moonlight-core-basis
  import: shared-properties
  visibility: private
  hs-source-dirs: src-basis
  exposed-modules:
    Moonlight.Core.Aggregate
    Moonlight.Core.Boundary
    Moonlight.Core.Cardinality
    Moonlight.Core.Capability
    Moonlight.Core.Dedup
    Moonlight.Core.DenseKey
    Moonlight.Core.DomainId
    Moonlight.Core.DomainId.Internal
    Moonlight.Core.Error
    Moonlight.Core.Finite
    Moonlight.Core.Hash
    Moonlight.Core.Identifier
    Moonlight.Core.Identifier.EGraph
    Moonlight.Core.IsoNorm
    Moonlight.Core.LawName
    Moonlight.Core.MapAccum
    Moonlight.Core.MapInvert
    Moonlight.Core.Match
    Moonlight.Core.ModuleIdentifier
    Moonlight.Core.OrdCollection
    Moonlight.Core.Order
    Moonlight.Core.ProofManifest
    Moonlight.Core.Queue
    Moonlight.Core.Refinement
    Moonlight.Core.Relational
    Moonlight.Core.Scan
    Moonlight.Core.StableHash
    Moonlight.Core.TotalRegistry
    Moonlight.Core.TypeLevel
    Moonlight.Core.Validation
    Moonlight.Internal.Unsound
  build-depends:
    base >= 4.22 && < 5
    , bytestring >= 0.11 && < 0.13
    , containers >= 0.8 && < 0.9
    , memory >= 0.18 && < 0.19
    , text >= 2.0 && < 2.2

library egraph-program
  import: shared-properties
  visibility: public
  hs-source-dirs: src-egraph-program
  exposed-modules:
    Moonlight.Core.EGraph.Program
  build-depends:
    base >= 4.22 && < 5
    , free >= 5.2 && < 6
    , moonlight-core:moonlight-core-basis

library moonlight-core-numeric
  import: shared-properties
  visibility: private
  hs-source-dirs: src-numeric
  exposed-modules:
    Moonlight.Core.ApproxEq
    Moonlight.Core.Canon
    Moonlight.Core.CanonicalNumber
    Moonlight.Core.ExactToken
    Moonlight.Core.Niche
    Moonlight.Core.Numeric
    Moonlight.Core.Scalar
    Moonlight.Core.Unsound
  other-modules:
    Moonlight.Core.CanonicalNumber.Internal
    Moonlight.Core.Niche.Internal
    Moonlight.Internal.FloatMath
  build-depends:
    base >= 4.22 && < 5
    , bytestring >= 0.11 && < 0.13
    , containers >= 0.8 && < 0.9
    , moonlight-core:moonlight-core-basis
    , text >= 2.0 && < 2.2

library syntax
  import: shared-properties
  visibility: public
  hs-source-dirs: src-syntax
  exposed-modules:
    Moonlight.Core.Guidance
    Moonlight.Core.Language
    Moonlight.Core.Pattern
    Moonlight.Core.Pattern.AntiUnify
    Moonlight.Core.Fix.Order
    Moonlight.Core.Site.Program
    Moonlight.Core.Substitution
    Moonlight.Core.Theory
  build-depends:
    base >= 4.22 && < 5
    , containers >= 0.8 && < 0.9
    , data-fix >= 0.3 && < 0.4
    , moonlight-core:moonlight-core-basis
    , transformers >= 0.6 && < 1

library automata
  import: shared-properties
  visibility: public
  hs-source-dirs: src-automata
  default-extensions:
    NoStrictData
  exposed-modules:
    Moonlight.Automata.Pure.Algebra
    Moonlight.Automata.Pure.Coalgebra
    Moonlight.Automata.Pure.Core
    Moonlight.Automata.Pure.Transducer
    Moonlight.Core.Pattern.Automata
    Moonlight.Core.Pattern.Kernel
  build-depends:
    base >= 4.22 && < 5
    , comonad >= 5 && < 6
    , containers >= 0.8 && < 0.9
    , data-fix >= 0.3 && < 0.4
    , free >= 5.2 && < 6
    , moonlight-core:moonlight-core-basis
    , moonlight-core:syntax
    , recursion-schemes >= 5.2 && < 6
    , these >= 1.2 && < 1.3
    , transformers >= 0.6 && < 1

library moonlight-core-solver
  import: shared-properties
  visibility: private
  hs-source-dirs: src-solver
  exposed-modules:
    Moonlight.Core.Fixpoint
    Moonlight.Core.Fixpoint.Dense
    Moonlight.Core.UnionFind
    Moonlight.Core.UnionFind.Transaction
  other-modules:
    Moonlight.Core.Fixpoint.Internal.Combinators
    Moonlight.Core.Fixpoint.Internal.Solver.Types
    Moonlight.Core.Fixpoint.Internal.Solver.Plan
    Moonlight.Core.Fixpoint.Internal.Solver.BitSet
    Moonlight.Core.Fixpoint.Internal.Solver.WorkQueue
    Moonlight.Core.Fixpoint.Internal.Solver.Arena
    Moonlight.Core.Fixpoint.Internal.Solver.Engine
    Moonlight.Core.Fixpoint.Dense.Internal.Csr
    Moonlight.Core.Fixpoint.Dense.Internal.Policy
    Moonlight.Core.Fixpoint.Dense.Internal.AdaptiveIntSet
    Moonlight.Core.Fixpoint.Dense.Internal.Scc
    Moonlight.Core.Fixpoint.Dense.Internal.ClosureCache
    Moonlight.Core.Fixpoint.Dense.Internal.Snapshot
    Moonlight.Core.Fixpoint.Dense.Internal.Scratch
    Moonlight.Core.Fixpoint.Dense.Internal.Traverse
    Moonlight.Core.UnionFind.Transaction.Internal.Types
    Moonlight.Core.UnionFind.Transaction.Internal.Policy
    Moonlight.Core.UnionFind.Transaction.Internal.DenseStore
    Moonlight.Core.UnionFind.Transaction.Internal.Storage
    Moonlight.Core.UnionFind.Transaction.Internal.Algorithm
    Moonlight.Core.UnionFind.Transaction.Internal.Snapshot
    Moonlight.Core.UnionFind.Transaction.Internal.Lifecycle
    Moonlight.Core.UnionFind.Internal.Semantics
    Moonlight.Core.UnionFind.Internal.Types
  build-depends:
    base >= 4.22 && < 5
    , containers >= 0.8 && < 0.9
    , deepseq >= 1.4 && < 1.6
    , free >= 5.2 && < 6
    , moonlight-core:moonlight-core-basis
    , primitive >= 0.7 && < 0.10
    , vector >= 0.13 && < 0.14

library moonlight-core-term
  import: shared-properties
  visibility: private
  hs-source-dirs: src-term
  exposed-modules:
    Moonlight.Core.Term.Database
    Moonlight.Core.Term.Database.Canonicalize
  other-modules:
    Moonlight.Core.Term.Database.Arrangement
    Moonlight.Core.Term.Database.Atom
    Moonlight.Core.Term.Database.Command
    Moonlight.Core.Term.Database.Encode
    Moonlight.Core.Term.Database.FreeJoin
    Moonlight.Core.Term.Database.Index
    Moonlight.Core.Term.Database.Lookup
    Moonlight.Core.Term.Database.OperatorTable
    Moonlight.Core.Term.Database.Pattern
    Moonlight.Core.Term.Database.Projection
    Moonlight.Core.Term.Database.Table
    Moonlight.Core.Term.Database.Transaction
    Moonlight.Core.Term.Database.Types
  build-depends:
    base >= 4.22 && < 5
    , containers >= 0.8 && < 0.9
    , moonlight-core:moonlight-core-basis
    , moonlight-core:syntax
    , primitive >= 0.7 && < 0.10
    , vector >= 0.13 && < 0.14

library
  import: shared-properties
  hs-source-dirs: src-public
  exposed-modules:
    Moonlight.Core
  reexported-modules:
    Moonlight.Core.Unsound
  build-depends:
    base >= 4.22 && < 5
    , containers >= 0.8 && < 0.9
    , moonlight-core:egraph-program
    , moonlight-core:moonlight-core-numeric
    , moonlight-core:moonlight-core-solver
    , moonlight-core:moonlight-core-basis
    , moonlight-core:syntax
    , moonlight-core:moonlight-core-term

common moonlight-core-test-properties
  default-language: GHC2024
  ghc-options: -Wall -Wcompat
  default-extensions:
    TypeFamilies
  build-depends:
    base >= 4.22 && < 5
    , bytestring >= 0.11
    , containers >= 0.8
    , filepath >= 1.4
    , moonlight-core
    , primitive >= 0.7
    , text >= 2.0
    , tasty >= 1.4
    , tasty-hunit >= 0.10
    , tasty-quickcheck >= 0.10
    , QuickCheck >= 2.14
    , vector >= 0.13

test-suite moonlight-core-basis-test
  import: moonlight-core-test-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    test/basis
    test/support
  main-is: Main.hs
  other-modules:
    BasisTests
    BoundarySpec
    CardinalitySpec
    DenseKeySpec
    FiniteSpec
    IsoNormSpec
    LawProperty
    MapAccumSpec
    OrdCollectionSpec
    OrderSpec
    ProofManifestSpec
    QueueSpec
    RelationalSpec
    SourceShape
    StableHashSpec
    TotalRegistrySpec
    TypeLevelSpec
    ValidationSpec

test-suite moonlight-core-numeric-test
  import: moonlight-core-test-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    test/numeric
    test/support
  main-is: Main.hs
  other-modules:
    ApproxEqSpec
    CanonSpec
    CanonicalNumberSpec
    ExactTokenSpec
    NicheSpec
    NumericTests
    ScalarLawsSpec
    SourceShape

test-suite moonlight-core-syntax-test
  import: moonlight-core-test-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    test/syntax
    test/support
  main-is: Main.hs
  other-modules:
    LawProperty
    PatternSpec
    SubstitutionSpec
    SyntaxTests
    TheorySpec

test-suite moonlight-core-solver-test
  import: moonlight-core-test-properties
  type: exitcode-stdio-1.0
  hs-source-dirs: test/solver
  main-is: Main.hs
  other-modules:
    FixpointSpec
    SolverTests
    UnionFindSpec

test-suite moonlight-core-term-test
  import: moonlight-core-test-properties
  type: exitcode-stdio-1.0
  hs-source-dirs: test/term
  main-is: Main.hs
  other-modules:
    DatabaseLawSpec
    DatabaseSpec
    TermTests

test-suite moonlight-core-facade-test
  import: moonlight-core-test-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    test/facade
    test/support
  main-is: Main.hs
  other-modules:
    PublicSurfaceSpec
    SourceShape

test-suite moonlight-core-test
  import: moonlight-core-test-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    test/aggregate
    test/basis
    test/numeric
    test/syntax
    test/solver
    test/term
    test/facade
    test/support
  main-is: Main.hs
  other-modules:
    ApproxEqSpec
    BasisTests
    BoundarySpec
    CardinalitySpec
    CanonSpec
    CanonicalNumberSpec
    DatabaseLawSpec
    DatabaseSpec
    DenseKeySpec
    ExactTokenSpec
    FiniteSpec
    FixpointSpec
    IsoNormSpec
    LawProperty
    MapAccumSpec
    NicheSpec
    NumericTests
    OrdCollectionSpec
    OrderSpec
    PatternSpec
    ProofManifestSpec
    PublicSurfaceSpec
    QueueSpec
    RelationalSpec
    ScalarLawsSpec
    SolverTests
    SourceShape
    StableHashSpec
    SubstitutionSpec
    SyntaxTests
    TermTests
    TheorySpec
    TotalRegistrySpec
    TypeLevelSpec
    UnionFindSpec
    ValidationSpec

common moonlight-core-benchmark-properties
  default-language: GHC2024
  ghc-options: -Wall -Wcompat -O2 -rtsopts
  default-extensions:
    TypeFamilies
  build-depends:
    base >= 4.22 && < 5
    , tasty-bench >= 0.3 && < 0.6

benchmark moonlight-core-basis-bench
  import: moonlight-core-benchmark-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    bench/basis
    bench/support
  main-is: Main.hs
  other-modules:
    BasisBench
    BenchSupport
  build-depends:
    bytestring >= 0.11
    , containers >= 0.8
    , deepseq >= 1.4
    , memory >= 0.18
    , moonlight-core
    , moonlight-core:moonlight-core-basis
    , text >= 2.0

benchmark moonlight-core-numeric-bench
  import: moonlight-core-benchmark-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    bench/numeric
    bench/support
  main-is: Main.hs
  other-modules:
    BenchSupport
    NumericBench
  build-depends:
    bytestring >= 0.11
    , moonlight-core
    , moonlight-core:moonlight-core-numeric
    , moonlight-core:moonlight-core-basis
    , scientific >= 0.3

benchmark moonlight-core-syntax-bench
  import: moonlight-core-benchmark-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    bench/syntax
    bench/support
  main-is: Main.hs
  other-modules:
    BenchSupport
    SyntaxBench
  build-depends:
    containers >= 0.8
    , moonlight-core
    , moonlight-core:moonlight-core-basis
    , moonlight-core:syntax

benchmark moonlight-core-solver-bench
  import: moonlight-core-benchmark-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    bench/solver
    bench/support
  main-is: Main.hs
  other-modules:
    BenchSupport
    SolverBench
  build-depends:
    containers >= 0.8
    , deepseq >= 1.4
    , equivalence >= 0.4
    , moonlight-core
    , moonlight-core:moonlight-core-solver
    , moonlight-core:moonlight-core-basis
    , vector >= 0.13

benchmark moonlight-core-term-bench
  import: moonlight-core-benchmark-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    bench/term
    bench/support
  main-is: Main.hs
  other-modules:
    BenchSupport
    TermBench
  build-depends:
    containers >= 0.8
    , moonlight-core
    , moonlight-core:moonlight-core-term
    , vector >= 0.13

benchmark moonlight-core-bench
  import: moonlight-core-benchmark-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    bench/aggregate
    bench/basis
    bench/numeric
    bench/syntax
    bench/solver
    bench/term
    bench/support
  main-is: Main.hs
  other-modules:
    BasisBench
    BenchSupport
    NumericBench
    SolverBench
    SyntaxBench
    TermBench
  build-depends:
    bytestring >= 0.11
    , containers >= 0.8
    , deepseq >= 1.4
    , equivalence >= 0.4
    , memory >= 0.18
    , moonlight-core
    , moonlight-core:moonlight-core-numeric
    , moonlight-core:moonlight-core-solver
    , moonlight-core:moonlight-core-basis
    , moonlight-core:syntax
    , moonlight-core:moonlight-core-term
    , scientific >= 0.3
    , text >= 2.0
    , vector >= 0.13