-- |
-- Module     : Unbound.Generics.LocallyNameless
-- Copyright  : (c) 2014, Aleksey Kliger
-- License    : BSD3 (See LICENSE)
-- Maintainer : Aleksey Kliger
-- Stability  : experimental
--
--
-- The purpose of @unbound-genrics@ is to simplify the construction of
-- data structures with rich variable binding structure by providing
-- generic implementations of alpha-equivalence ('aeq'), free variable
-- permutation ('swaps'), local and global variable freshness
-- ('lfresh', 'fresh'), 
--
--
-- 
-- See 'Alpha', 'Bind', "Unbound.Generics.LocallyNameless.Operations" for more information.
module Unbound.Generics.LocallyNameless (
  module Unbound.Generics.LocallyNameless.Alpha,
  module Unbound.Generics.LocallyNameless.Name,
  module Unbound.Generics.LocallyNameless.Operations,
  module Unbound.Generics.LocallyNameless.Bind,
  module Unbound.Generics.LocallyNameless.Ignore,
  module Unbound.Generics.LocallyNameless.Embed,
  module Unbound.Generics.LocallyNameless.Shift,
  module Unbound.Generics.LocallyNameless.Rebind,
  module Unbound.Generics.LocallyNameless.Rec,
  module Unbound.Generics.LocallyNameless.Fresh,
  module Unbound.Generics.LocallyNameless.LFresh,
  module Unbound.Generics.LocallyNameless.Subst
  ) where

import Unbound.Generics.LocallyNameless.Alpha
import Unbound.Generics.LocallyNameless.Name hiding (Bn, Fn)
import Unbound.Generics.LocallyNameless.Bind hiding (B)
import Unbound.Generics.LocallyNameless.Ignore hiding (I)
import Unbound.Generics.LocallyNameless.Embed
import Unbound.Generics.LocallyNameless.Shift
import Unbound.Generics.LocallyNameless.Rebind hiding (Rebnd)
import Unbound.Generics.LocallyNameless.Rec
import Unbound.Generics.LocallyNameless.Fresh
import Unbound.Generics.LocallyNameless.LFresh
import Unbound.Generics.LocallyNameless.Operations
import Unbound.Generics.LocallyNameless.Subst