module Language.Nominal.Properties.NameSetSpec
    where

import qualified Data.List.Extra as L
import           Test.QuickCheck

import           Language.Nominal.Name
import           Language.Nominal.NameSet
-- import           Language.Nominal.Properties.SpecUtilities

-- ns disjoint ns', if apart 
prop_supp_apart :: [Name Bool] -> [Name Bool] -> Property
prop_supp_apart ns ns' = (take 4 ns `apart` take 4 ns') ==> take 4 ns `L.disjoint` take 4 ns'  -- restrict length so tests don't give up

-- ns disjoint ns' iff apart, if triv labels 
prop_supp_apart_atom :: [Name ()] -> [Name ()] -> Bool
prop_supp_apart_atom ns ns' = (ns `apart` ns') == ns `L.disjoint` ns'

{-- supp([[a]]) = supp(unions [a])
prop_supp_unions :: [[Name Int]] -> Bool 
prop_supp_unions l = supp (S.unions --}