packages feed

constrained-generators-0.2.0.0: src/Constrained/API/Extend.hs

{-# LANGUAGE PatternSynonyms #-}

-- | This module provides an API for extending the library with new function
-- symbols.
module Constrained.API.Extend (
  -- * Abstract syntax
  SpecificationD (..),
  pattern TypeSpec,
  PredD (..),
  TermD (..),
  BinderD (..),

  -- * Implementing new functions
  appTerm,
  Semantics (..),
  Syntax (..),

  -- ** The `Logic` instance
  Logic (..),
  HOLE (..),
  pattern Unary,
  pattern (:<:),
  pattern (:>:),

  -- ** Built-in 'TypeSpec's
  PairSpec (..),
  MapSpec (..),
  SetSpec (..),
  NumSpec (..),
  TreeSpec (..),

  -- * Generics
  (:::),
  SOP,
  algebra,
  inject,

  -- * Building new `NumSpec`-based instances
  emptyNumSpec,
  cardinalNumSpec,
  combineNumSpec,
  genFromNumSpec,
  shrinkWithNumSpec,
  fixupWithNumSpec,
  conformsToNumSpec,
  toPredsNumSpec,
  MaybeBounded (..),

  -- * Re-export of `Constrained.API`
  module Constrained.API,
) where

import Constrained.API
import Constrained.AbstractSyntax
import Constrained.Base
import Constrained.FunctionSymbol
import Constrained.Generic
import Constrained.NumOrd
import Constrained.Spec.Map
import Constrained.Spec.Set
import Constrained.Spec.Tree
import Constrained.TheKnot