Commit 63746baa authored by Hans-Peter Deifel's avatar Hans-Peter Deifel
Browse files

Document new RefinementTypes for Polynomial functor

parent effbdc54
......@@ -178,25 +178,52 @@ instance PrettyShow a => PrettyShow (FactorValue a) where
prettyShow (ExponentialValue v) =
"[" <> mconcat (intersperse ", " (map prettyShow (V.toList v))) <> "]"
type Three = Word8 -- ToRest | ToCompound | ToSub
--deriving (Show, Eq, Ord, Enum)
-- | Morally the type '3'.
--
-- We use Word8 for efficiency, so this should only ever have the values 0, 1
-- and 2 with the following meanings:
--
-- 0: Edge goes to rest
-- 1: Edge goes to compound block
-- 2: Edge goes to subblock
type Three = Word8
toRest :: Three
toRest = 0
toCompound :: Three
toCompound = 1
toSub :: Three
toSub = 2
-- | (Index in Sum, Number of variable Factors, Constant factors)
type instance H1 Polynomial = (Int, Int, Vector Int)
-- | Tuple @(a, b)@ of
--
-- [a]: Index of this edge in the product on the second level
-- [b]: Index of this edge in the exponential on the third level
-- | Index of this edge into the product
--
-- For "Identity"s, @b@ is 0. Also note that the top-level co-product doesn't
-- appear in the label at all. It already appears in "H1".
-- Note that this ignores constant factors, so an edge to the X in (2, 5, X)
-- would have 0 as Label, not 2. Also, the top-level co-product doesn't appear
-- in the label at all. It already appears in "H1".
type instance Label Polynomial = Int
-- | Defined as H2
--
-- For each variable in the product, this is True if the corresponding successor
-- state belongs to the subblock and False otherwise.
type instance Weight Polynomial = VU.Vector Bool
-- | Defined as H3
--
-- Same as for Weight, but now with the three states described in the
-- documentation for Three.
type instance H3 Polynomial = VU.Vector Three
instance ParseMorphism Polynomial where
parseMorphismPoint (Polynomial expr) = parseSum1 expr
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment