content: {-+
  Knot-tying definitions for the base+property syntax to Stratego translation.
  -}
  
  module Prop2Stratego where
  import BaseStruct2Stratego(transP,transD,transE,showId)
  import PropStruct2Stratego(transPD,transPA,transPP)
  import PropSyntax --hiding (D,P,E) -- recursive base+prop syntax
  import PrettyPrint
  import SpecialNames
  import StrategoAST(D,P,E)
  
  transPat :: PrintableOp i => HsPatI i -> P
  transPat (Pat p) = transP showId transPat p
  
  transDecs ds = map transDec ds
  
  transDec :: (IsSpecialName i,PrintableOp i) => HsDeclI i -> D
  transDec (Dec d) =
      prop (transD showId transExp transPat transDecs bad bad bad)
           (transPD showId transAssertion transPredicate)
           d
  
  --transExp :: HsExp -> E
  transExp (Exp e) = transE showId transExp transPat transDecs bad bad e
  
  transAssertion (PA a) =
     transPA showId transExp bad transAssertion transPredicate
             a
  
  transPredicate (PP p) =
     transPP showId transExp transPat bad transAssertion transPredicate
             p
  
  bad x = error "Base2Stratego: not yet"
  