-- 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
-- Tests for Data.Rewriting.Term
module Term where
import Arbitrary
import Data.Rewriting.Pos
import Data.Rewriting.Term
import Control.Monad (liftM2)
import Data.Maybe (fromMaybe)
propReplaceAt1 :: Pos -> Term' -> Term' -> Bool
propReplaceAt1 p t t' = fromMaybe True $ do
u <- replaceAt t p t'
v <- u `subtermAt` p
return $ t' == v
propReplaceAt2 :: Pos -> Term' -> Term' -> Term' -> Bool
propReplaceAt2 p t t1 t2 = fromMaybe True $ do
u1 <- replaceAt t p t1
u2 <- replaceAt t p t2
return $ (u1 == u2) == (t1 == t2)