moonlight-pale-0.1.0.0: src-diagnostic/Moonlight/Pale/Diagnostic/Topology/Cohomology.hs
{-| Coboundary-construction obstructions and nilpotence evidence. -}
module Moonlight.Pale.Diagnostic.Topology.Cohomology
( CoboundaryConstructionError (..),
CoboundaryNilpotenceEvidence (..),
evidenceNilpotent,
)
where
import Data.Kind (Type)
import Moonlight.Pale.Diagnostic.Topology.Boundary (BoundaryIncidenceShapeError)
import Prelude (Bool (False, True), Eq, Int, Read, Show, String)
type CoboundaryConstructionError :: Type
data CoboundaryConstructionError
= CoboundaryBoundaryShapeError BoundaryIncidenceShapeError
| CoboundaryMiddleBasisCardinalityMismatch Int Int
| CoboundaryMiddleBasisCellMismatch Int
| CoboundaryOperatorBuildError String
deriving stock (Eq, Show, Read)
type CoboundaryNilpotenceEvidence :: Type
data CoboundaryNilpotenceEvidence
= SingleContextNilpotent
| SingleContextNonNilpotent
| MultiContextNilpotent
| MultiContextNonNilpotent
| CoboundaryConstructionFailed CoboundaryConstructionError
deriving stock (Eq, Show, Read)
evidenceNilpotent :: CoboundaryNilpotenceEvidence -> Bool
evidenceNilpotent evidenceValue =
case evidenceValue of
SingleContextNilpotent -> True
SingleContextNonNilpotent -> False
MultiContextNilpotent -> True
MultiContextNonNilpotent -> False
CoboundaryConstructionFailed _ -> False