Knot-tying definitions for the base+property+typeinfo syntax to Isabelle translation.
module PropDecorate2Isabelle where import BaseStruct2Isabelle(transP,transD,transE,transId) import PropStruct2Isabelle(transPD,transPA,transPP) import Prop2Isabelle(transQType,transType,transContext) import qualified Prop2Isabelle as P2S(transPat) import TiPropDecorate import PropSyntaxStruct(prop) import HasBaseStruct(hsId,hsPId) import TiDecorate(TiPat(..)) import TiClasses(fromDefs,toDefs) import IsabelleDecl --transPat :: PrintableOp i => HsPatI i -> P transPat (Pat p) = transP transId transPat p transPat (TiPApp p1 p2) = transPat p2 -- !!! transPat (TiPSpec i _ _) = transPat (hsPId i) transPat (TiPTyped e t) = transPat e rmIgnored = filter notIgnored where notIgnored (Ignored _) = False notIgnored _ = True transDecs ds = map transDec ds --transDec :: (IsSpecialName i,PrintableOp i) => HsDeclI i -> D transDec (Dec d) = prop (transD transId transExp transPat transLocalDecs transType transContext transType) (transPD transId transOAssertion transPredicate) d --transExp :: HsExp -> E transExp (Exp e) = transE transId transExp transPat transLocalDecs transType transContext e transExp (TiSpec i _ _) = transExp (hsId i) transExp (TiTyped e t) = transExp e transOAssertion (OA xs ds a) = {- ... -} transAssertion a -- !!! transAssertion (PA a) = transPA transId transExp transQType transAssertion transPredicate a transPredicate (PP p) = transPP transId transExp P2S.transPat transQType transAssertion transPredicate p --transType (Typ t) = transT transId transType t --transContext ts = map transType ts --transQType qt = transQ transContext transType qt --bad x = error "Base2Isabelle: not yet" transLocalDecs ds = concatMap transLocalDec (fromDefs ds) transLocalDec d = case transDec d of Def (P def) -> [def] _ -> [] -- silently ignores unimplemented things!!!