packages feed

keiki-0.7.0.0: src/Keiki/ProjectionDomain.hs

-- | Backend-neutral exact domains for nominal field projections.
--
-- A 'ProjectionDomain' is interpreted twice by Keiki: concretely through
-- 'memberProjectionDomain', and symbolically by the SBV translator. Text
-- patterns always match the complete 'Text' value. Their constructors reject
-- code points above U+2FFFF, invalid ranges, and invalid repetition bounds so
-- the two interpretations cannot silently diverge.
--
-- A domain used by 'Keiki.Core.exactFieldWitness' is a consumer-owned proof
-- declaration: every concrete owner must project into it, and every admitted
-- key must reconstruct an owner that projects back to the same key. Keiki's
-- law helpers and satisfying-model checks exercise this contract, but only a
-- consumer or generator can test that no real owner key was omitted.
module Keiki.ProjectionDomain
  ( ProjectionDomain,
    TextPattern,
    DomainConstructionError (..),
    maximumSmtCodePoint,
    finiteProjectionDomain,
    wholeProjectionDomain,
    textProjectionDomain,
    textLiteral,
    textCharSet,
    textCharRanges,
    textConcat,
    textAlternation,
    textRepeatBetween,
    memberProjectionDomain,
    matchesTextPattern,
  )
where

import Keiki.Internal.ProjectionDomain