content: module NameMapsProp where
  import NameMaps
  import NameMapsPropStruct()
  import NameMapsBaseStruct()
  import NameMapsBase()
  import PropSyntax
  --import MUtils
  
  instance AccNames i (HsExpI i) where accNames = accNamesRec
  instance AccNames i (HsDeclI i) where accNames = accNamesRec
  instance AccNames i (AssertionI i) where accNames = accNamesRec
  instance AccNames i (PredicateI i) where accNames = accNamesRec
  
  instance MapNames i1 (HsDeclI i1) i2 (HsDeclI i2) where mapNames2 = mapNames2Rec
  instance MapNames i1 (HsExpI  i1) i2 (HsExpI  i2) where mapNames2 = mapNames2Rec
  instance MapNames i1 (AssertionI i1) i2 (AssertionI i2) where mapNames2 = mapNames2Rec
  instance MapNames i1 (PredicateI i1) i2 (PredicateI i2) where mapNames2 = mapNames2Rec
  
  instance (Monad m,Functor m) => SeqNames m (HsDeclI (m i)) (HsDeclI i) where
    seqNames = seqNamesRec
  instance (Monad m,Functor m) => SeqNames m (HsExpI (m i)) (HsExpI i) where
    seqNames = seqNamesRec
  instance (Monad m,Functor m) => SeqNames m (AssertionI (m i)) (AssertionI i) where
    seqNames = seqNamesRec
  instance (Monad m,Functor m) => SeqNames m (PredicateI (m i)) (PredicateI i) where
    seqNames = seqNamesRec
  
  instance (MapNames i1 b1 i2 b2,MapNames i1 p1 i2 p2)
        => MapNames i1 (Prop b1 p1) i2 (Prop b2 p2)
    where mapNames2 d f = mapProp (mapNames2 d f) (mapNames2 d f)
  
  instance (SeqNames m b1 b2,SeqNames m p1 p2)
         => SeqNames m (Prop b1 p1) (Prop b2 p2) where
    seqNames = seqProp . mapProp seqNames seqNames
  
  