packages feed

moonlight-category-0.1.0.0: src-laws/Moonlight/Category/Effect/Fixture/FinCat.hs

-- | Stable finite-category values for executable laws, tests, and benchmarks.
module Moonlight.Category.Effect.Fixture.FinCat
  ( sampleFinCat,
  )
where

import qualified Data.Map.Strict as Map
import qualified Data.Set as Set
import Moonlight.Category.Pure.FinCat
  ( FinCat,
    FinGeneratorId (..),
    FinMorphismId (..),
    FinObjectId (..),
    trustedThinFinCatFromTransitiveEndpoints,
  )

-- | The thin chain @0 -> 1 -> 2@ with its composite.
sampleFinCat :: FinCat
sampleFinCat =
  trustedThinFinCatFromTransitiveEndpoints
    (Set.fromList (FinObjectId <$> [0, 1, 2]))
    ( Map.fromList
        [ ((FinObjectId 0, FinObjectId 1), FinGeneratorMorphismId (FinGeneratorId 10)),
          ((FinObjectId 1, FinObjectId 2), FinGeneratorMorphismId (FinGeneratorId 11)),
          ((FinObjectId 0, FinObjectId 2), FinGeneratorMorphismId (FinGeneratorId 12))
        ]
    )