GraphLogic.hs revision 8836fa284a241af325aa6f41234b5130b26ec4f9
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuModule : $Header$
e9458b1a7a19a63aa4c179f9ab20f4d50681c168Jens ElknerDescription : Logic for manipulating the graph in the Central GUI
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuCopyright : (c) Jorina Freya Gerken, Till Mossakowski, Uni Bremen 2002-2006
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel ManceLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuMaintainer : till@tzi.de
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel ManceStability : provisional
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuPortability : non-portable (imports Logic)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , performProofAction
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski , openProofStatus
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , saveProofStatus
be2439588008221e691321fdf4f75432cfb72878Felix Gabriel Mance , openTranslateGraph
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , showReferencedLibrary
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , getSignatureOfNode
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , getTheoryOfNode
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , getLocalAxOfNode
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , translateTheoryOfNode
0dd6e7830de0887c9a12356447975a826b3b3db2Christian Maeder , displaySubsortGraph
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , displayConceptGraph
e0f1794e365dd347e97b37d7d22b2fce27296fa1Christian Maeder , lookupTheoryOfNode
424860079d47bf490fa98d5d7498096a0447c569mcodescu , getSublogicOfNode
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , showOriginOfNode
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , showProofStatusOfNode
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder , proveAtNode
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder , showJustSubtree
32bbac77828be0233953f8fe476edb0a9585408dChristian Maeder , showIDOfEdge
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , getNumberOfNode
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , showMorphismOfEdge
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , showOriginOfEdge
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , checkconservativityOfEdge
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , showProofStatusOfThm
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder , hideShowNames
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , translateGraph
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport Logic.Logic(conservativityCheck)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport Logic.Coerce(coerceSign, coerceMorphism)
27fdf879983dd28e211b41f3be6c0e930b7c816bFelix Gabriel Manceimport Comorphisms.LogicGraph(logicGraph)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport Syntax.AS_Library(LIB_NAME, getModTime, getLIB_ID)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport Static.DGToSpec(dgToSpec, computeTheory)
27fdf879983dd28e211b41f3be6c0e930b7c816bFelix Gabriel Manceimport Static.AnalysisLibrary(anaLibExt, anaLib)
d0f58d27c2536eba454d8f77de8617bc6a2c99cdFelix Gabriel Manceimport Static.DGTranslation(libEnv_translation)
d0f58d27c2536eba454d8f77de8617bc6a2c99cdFelix Gabriel Manceimport Proofs.InferBasic(basicInferenceNode)
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Manceimport Proofs.StatusUtils(lookupHistory, removeContraryChanges)
27fdf879983dd28e211b41f3be6c0e930b7c816bFelix Gabriel Manceimport GUI.Utils(listBox, createTextSaveDisplay)
424860079d47bf490fa98d5d7498096a0447c569mcodescuimport GUI.Taxonomy (displayConceptGraph,displaySubsortGraph)
60f30f0eeeacdfc1e0dfe39664373ddf5a0675adFelix Gabriel Manceimport GUI.DGTranslation(getDGLogic)
424860079d47bf490fa98d5d7498096a0447c569mcodescuimport qualified GUI.HTkUtils (displayTheory,
424860079d47bf490fa98d5d7498096a0447c569mcodescu displayTheoryWithWarning,
424860079d47bf490fa98d5d7498096a0447c569mcodescu createInfoDisplayWithTwoButtons)
d6d81ead61a5f9fb7d047e623f7898e730c258camcodescuimport GraphDisp(deleteArc, deleteNode)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport TextDisplay(createTextDisplay)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport InfoBus(encapsulateWaitTermAct)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport DialogWin (useHTk)
60f30f0eeeacdfc1e0dfe39664373ddf5a0675adFelix Gabriel Manceimport Messages(errorMess)
7852de3551fc797566ee71165bafe05b6d81728cnotanartistimport qualified HTk
60f30f0eeeacdfc1e0dfe39664373ddf5a0675adFelix Gabriel Manceimport Common.Id(nullRange)
9475501a6acf48434052d9e6f4a05ed6681eaaabFrancisc Nicolae Bungiuimport Common.DocUtils(showDoc, pretty)
7852de3551fc797566ee71165bafe05b6d81728cnotanartistimport Common.ResultT(liftR, runResultT)
424860079d47bf490fa98d5d7498096a0447c569mcodescuimport qualified Common.OrderedMap as OMap
0dd6e7830de0887c9a12356447975a826b3b3db2Christian Maederimport qualified Common.InjMap as InjMap
0dd6e7830de0887c9a12356447975a826b3b3db2Christian Maederimport qualified Common.Lib.Rel as Rel
424860079d47bf490fa98d5d7498096a0447c569mcodescuimport qualified Common.Lib.Graph as Tree
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport Driver.WriteFn(writeShATermFile)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport Driver.ReadFn(libNameToFile, readVerbose)
60f30f0eeeacdfc1e0dfe39664373ddf5a0675adFelix Gabriel Manceimport System.Directory(getModificationTime)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport Data.List(nub,deleteBy,find)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport Data.Graph.Inductive.Graph as Graph(Node, LEdge, LNode, lab', labNode')
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport qualified Data.IntMap as IntMap
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport qualified Data.Map as Map
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroederimport Control.Concurrent.MVar(tryPutMVar, readMVar, tryTakeMVar)
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder-- | Undo one step of the History
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroederundo :: GInfo -> LibEnv -> IO ()
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuundo (GInfo {libEnvIORef = ioRefProofStatus,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu conversionMapsIORef = convRef,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu gi_LIB_NAME = ln,
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder gi_GraphInfo = actGraphInfo
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu }) initEnv = do
31e9d2a02e15b7dbc157e0d3fb3b84f6c8666482Christian Maeder oldEnv <- readIORef ioRefProofStatus
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu gctx = lookupGlobalContext ln oldEnv
656f17ae9b7610ff2de1b6eedeeadea0c3bcdc8dChristian Maeder initgctx = lookupGlobalContext ln initEnv
d3cb3401882f6956de016f8eecbec1cd3b868acbFelix Gabriel Mance phist = proofHistory gctx
d3cb3401882f6956de016f8eecbec1cd3b868acbFelix Gabriel Mance rhist = redoHistory gctx
d3cb3401882f6956de016f8eecbec1cd3b868acbFelix Gabriel Mance if phist == [emptyHistory] then return ()
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu lastchange = head phist
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu phist' = tail phist
7852de3551fc797566ee71165bafe05b6d81728cnotanartist rhist' = lastchange:rhist
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu gctx' = (applyProofHistory phist' initgctx ) {redoHistory = rhist'}
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu newEnv = Map.insert ln gctx' initEnv
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu dgraph = devGraph gctx'
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu writeIORef ioRefProofStatus newEnv
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu remakeGraph convRef gid actGraphInfo dgraph ln
0dd6e7830de0887c9a12356447975a826b3b3db2Christian Maeder-- | redo one step of the redoHistory
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuredo :: GInfo -> LibEnv -> IO ()
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuredo (GInfo {libEnvIORef = ioRefProofStatus,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu conversionMapsIORef = convRef,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu gi_LIB_NAME = ln,
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu gi_GraphInfo = actGraphInfo
06acd8a23b2f06e7b2373d53f738cf56c7f03223Francisc Nicolae Bungiu }) initEnv = do
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu oldEnv <- readIORef ioRefProofStatus
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu gctx = lookupGlobalContext ln oldEnv
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu initgctx = lookupGlobalContext ln initEnv
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu phist = proofHistory gctx
7852de3551fc797566ee71165bafe05b6d81728cnotanartist rhist = redoHistory gctx
32bbac77828be0233953f8fe476edb0a9585408dChristian Maeder if rhist == [emptyHistory] then return ()
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski nextchange = head rhist
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski rhist' = tail rhist
32bbac77828be0233953f8fe476edb0a9585408dChristian Maeder phist' = nextchange:phist
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski gctx' = (applyProofHistory phist' initgctx) {redoHistory = rhist'}
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu newEnv = Map.insert ln gctx' initEnv
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder dgraph = devGraph gctx'
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder writeIORef ioRefProofStatus newEnv
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder remakeGraph convRef gid actGraphInfo dgraph ln
b84c87f199dc287d235d7dad6ea344f6912ef531Christian Maeder-- | reloads the Library of the DevGraph
7852de3551fc797566ee71165bafe05b6d81728cnotanartistreload :: GInfo -> IO()
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowskireload (GInfo {libEnvIORef = ioRefProofStatus,
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder conversionMapsIORef = convRef,
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder graphId = gid,
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder gi_LIB_NAME = ln,
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder gi_GraphInfo = actGraphInfo,
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder gi_hetcatsOpts = opts
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder oldle <- readIORef ioRefProofStatus
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder libdeps = Rel.toList $ Rel.intransKernel $ Rel.transClosure $ Rel.fromList
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder $ getLibDeps oldle
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ioruplibs <- newIORef ([] :: [LIB_NAME])
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu writeIORef ioruplibs []
7852de3551fc797566ee71165bafe05b6d81728cnotanartist reloadLibs ioRefProofStatus opts libdeps ioruplibs ln
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu le <- readIORef ioRefProofStatus
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski dgraph = devGraph $ lookupGlobalContext ln le
624f8c31bd8d6746b93f4b5966aa6fc7680fefc5Felix Gabriel Mance writeIORef ioRefProofStatus le
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski remakeGraph convRef gid actGraphInfo dgraph ln
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu-- | Creates a list of all LIB_NAME pairs, which have a dependency
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiugetLibDeps :: LibEnv -> [(LIB_NAME, LIB_NAME)]
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu concat $ map (\ ln -> getDep ln le) $ Map.keys le
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu-- | Creates a list of LIB_NAME pairs for the fist argument
b84c87f199dc287d235d7dad6ea344f6912ef531Christian MaedergetDep :: LIB_NAME -> LibEnv -> [(LIB_NAME, LIB_NAME)]
7852de3551fc797566ee71165bafe05b6d81728cnotanartist map (\ x -> (ln, x)) $ map (\ (_,x,_) -> dgn_libname x) $ IntMap.elems $
624f8c31bd8d6746b93f4b5966aa6fc7680fefc5Felix Gabriel Mance IntMap.filter (\ (_,x,_) -> isDGRef x) $ Tree.convertToMap $
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder dgBody $ devGraph $ lookupGlobalContext ln le
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu-- | Reloads a library
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiureloadLib :: IORef LibEnv -> HetcatsOpts -> IORef [LIB_NAME] -> LIB_NAME
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel MancereloadLib iorle opts ioruplibs ln = do
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mance mfile <- existsAnSource opts {intype = GuessIn}
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu $ rmSuffix $ libNameToFile opts ln
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu case mfile of
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu Nothing -> do
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu Just file -> do
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu le <- readIORef iorle
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu mres <- anaLibExt opts file le'
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu case mres of
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu Just (_, newle) -> do
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu uplibs <- readIORef ioruplibs
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu writeIORef ioruplibs $ ln:uplibs
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu writeIORef iorle newle
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu Nothing -> do
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu fail $ "Could not read original development graph from '"++ file
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu-- | Reloads libraries if nessesary
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescureloadLibs :: IORef LibEnv -> HetcatsOpts -> [(LIB_NAME, LIB_NAME)]
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu -> IORef [LIB_NAME] -> LIB_NAME -> IO Bool
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescureloadLibs iorle opts deps ioruplibs ln = do
newln:_ = filter (ln ==) $ Map.keys le
mapM_ (deleteArc og) $ map (\ (_,_,_,x) -> x) $ map snd $ AGV.edges g
mapM_ (deleteNode og) $ map snd $ map snd $ AGV.nodes g
AGV.Result _ errorMsg <- checkHasHiddenNodes gid descr actGraphInfo
Just (_, libEnv) -> case Map.lookup ln libEnv of
let proofStatus = Map.insert ln
-> (LibEnv -> IO (Res.Result LibEnv))
HTk.putWinOnTop w))
Res.Result ds res <- proofFun proofStatus
Map.insert ln newGlobContext newProofStatus
case InjMap.lookupWithB descr dgAndabstrNodeMap of
Res.Result ds Nothing -> show $ vcat $ map pretty ds
Res.Result _ m -> showDoc m ""
AGV.Result descr msg <- hideSetOfNodeTypes gid
in createTextDisplay title (showDoc (descr-1) "") [HTk.size(10,10)]
case InjMap.lookupWithB descr dgAndabstrNodeMap of
[HTk.size(80,50)]
DGraph -> IO (Res.Result (Node,G_theory))
$ InjMap.lookupWithB descr dgAndabstrNodeMap
case InjMap.lookupWithB descr dgAndabstrNodeMap of
[HTk.size(30,10)]
Res.Result ds res -> do
$ InjMap.lookupWithB descr dgAndabstrNodeMap
Res.Result [] (Just (node,th)) -> do
Res.Result ds _ <- runResultT(
Res.Result ds _ -> showDiags opts ds
case InjMap.lookupWithB descr dgAndabstrNodeMap of
Res.Result _ (Just th) ->
in createTextDisplay title logstr [HTk.size(30,10)]
Res.Result ds _ ->
case InjMap.lookupWithB descr dgAndabstrNodeMap of
(showDoc orig "") [HTk.size(30,10)]
case InjMap.lookupWithB descr dgAndabstrNodeMap of
createTextDisplay title stat [HTk.size(105,55)]
let goals = OMap.filter (not . isAxiom) sens
(proven,open) = OMap.partition isProvenSenStatus goals
case InjMap.lookupWithB descr dgAndabstrNodeMap of
createTextDisplay "ID of Edge" (show $ dgl_id linklab) [HTk.size(30,10)]
++ "in the development graph") [HTk.size(30,10)]
[HTk.size(100,40)]
++ "in the development graph") [HTk.size(30,10)]
(showDoc (dgl_origin linklab) "") [HTk.size(30,10)]
++ "in the development graph") [HTk.size(30,10)]
createTextSaveDisplay "Proof Status" "proofstatus.txt"
Res.Result _ (Just th1) -> th1
sign2 <- coerceSign lid1 lid "checkconservativityOfEdge.coerceSign" sign1
let Res.Result ds res =
(showRes ++ "\n" ++ myDiags) [HTk.size(50,50)]
++ "in the development graph") [HTk.size(30,10)]
AGV.Result newDescr _ <- addnode descr
{ dgAndabstrNode = InjMap.insert (libname, node) newDescr
do let srcnode = InjMap.lookupWithA (libname,src) (dgAndabstrNode convMaps)
tarnode = InjMap.lookupWithA (libname,tar) (dgAndabstrNode convMaps)
AGV.Result newDescr msg <- addlink descr (getDGLinkType edgelab)
{ dgAndabstrEdge = InjMap.insert (libname,
case InjMap.lookupWithB descr (dgAndabstrNode convMaps) of
case Map.lookup libname libname2dgMap of
case Map.lookup refLibname libname2dgMap of
case InjMap.lookupWithB descr (dgAndabstrNode convMaps) of
case Map.lookup libname libname2dgMap of
AGV.Result eventDescr errorMsg <- hidenodes abstractGraph
case InjMap.lookupWithA (libname, node) (dgAndabstrNode convMaps) of
case InjMap.lookupWithA dgNode (dgAndabstrNode convMaps) of
AGV.Result descr err <-
{ dgAndabstrNode = InjMap.updateBWithA dgNode
AGV.Result descr err <-
{ dgAndabstrNode = InjMap.insert dgNode descr
case InjMap.lookupWithA dgnode (dgAndabstrNode convMaps) of
AGV.Result descr err <- delnode gid abstrNode grInfo
{ dgAndabstrNode = InjMap.delete dgnode abstrNode
case (InjMap.lookupWithA (libname, src) dgAndabstrNodeMap,
InjMap.lookupWithA (libname, tgt) dgAndabstrNodeMap) of
AGV.Result descr err <-
{ dgAndabstrEdge = InjMap.insert dgEdge descr
case (InjMap.lookupWithA dgEdge dgAndabstrEdgeMap) of
do AGV.Result descr err <- dellink gid abstrEdge grInfo
{ dgAndabstrEdge = InjMap.delete dgEdge
-> Res.Result G_sublogics -> ConvFunc -> LibFunc -> IO ()
openTranslateGraph libEnv ln opts (Res.Result diagsSl mSublogic) convGraph
-- (see GUI.DGTranslation.getDGLogic), the process need not to go on.
Res.Result diagsR i <- runResultT ( do
Res.Result diagsTrans (Just newLibEnv) -> do
Res.Result diagsTrans Nothing ->