content: {- |
  Module      :  ./CommonLogic/CASLSig.hs
  Description :  Central datastructures for development graphs
  Copyright   :  (c) Till Mossakowski, Uni Bremen 2002-2006
  License     :  GPLv2 or higher, see LICENSE.txt
  Maintainer  :  till@informatik.uni-bremen.de
  Stability   :  provisional
  Portability :  non-portable(Logic)
  
  Fixed CASL signature needed for translation of CommonLogic to CASL
  -}
  
  module CommonLogic.CASLSig where
  
  import qualified CASL.Sign as CSign
  import qualified Driver.AnaLib as AnaLib
  import qualified Driver.Options as Options
  import qualified Data.Map as Map
  import qualified System.IO.Unsafe as SysUnsafe
  import qualified Static.DevGraph as DevGraph
  import qualified Logic.Grothendieck as Grothendieck
  import qualified Common.ExtSign as ExtSign
  import qualified Logic.Coerce as Coerce
  import qualified CASL.Logic_CASL as CASL
  
  baseCASLSig :: CSign.CASLSign
  baseCASLSig = sig
    where Just (_, lib) = SysUnsafe.unsafePerformIO $ AnaLib.anaLib Options.defaultHetcatsOpts "CommonLogic/CommonLogic.casl"
          dgraph = head $ Map.elems lib
          gsig = head $ Map.elems $ DevGraph.sigMap dgraph
          Just esig = case gsig of
                        Grothendieck.G_sign lid extsign _
                          -> Coerce.coerceSign lid CASL.CASL "error: CommonoLogic.CASLSig" extsign
          ExtSign.ExtSign sig _ = esig
  