-- |
-- 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.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.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