term-rewriting-0.1: src/Data/Rewriting/Substitution/Type.hs
-- This file is part of the 'term-rewriting' library. It is licensed
-- under an MIT license. See the accompanying 'LICENSE' file for details.
--
-- Authors: Bertram Felgenhauer
module Data.Rewriting.Substitution.Type (
Subst,
GSubst,
-- * utilities not reexported from 'Data.Rewriting.Substitution'
fromMap,
toMap,
) where
import Data.Rewriting.Term.Type
import qualified Data.Map as M
-- | A substitution, mapping variables to terms. Substitutions are
-- equal to the identity almost everywhere.
type Subst f v = GSubst v f v
-- | A generalised? substitution: a finite, partial map from variables
-- to terms with a different variable type.
newtype GSubst v f v' = GS { unGS :: M.Map v (Term f v') }
deriving Show
-- Do not derive Eq: Depending on the interpretation, v / Var v
-- will have to be ignored or not.
fromMap :: M.Map v (Term f v') -> GSubst v f v'
fromMap = GS
toMap :: GSubst v f v' -> M.Map v (Term f v')
toMap = unGS