GtkDisprove.hs revision 369771f5d48a40eda134026b1f45f63b2c00bdb8
69c7cb9eeb0d965849dbc65e06a4a734f17fd7eftrawickModule : $Header$
fcc3093f7b872846234fe62496fad4feddf8dd27trawickDescription : Gtk Module to enable disproving Theorems
c76b9f9f0feb93458a61875e0c4f7aa36fac8cf5jimCopyright : (c) Simon Ulbricht, Uni Bremen 2010
fcc3093f7b872846234fe62496fad4feddf8dd27trawickLicense : GPLv2 or higher, see LICENSE.txt
69c7cb9eeb0d965849dbc65e06a4a734f17fd7eftrawickMaintainer : tekknix@informatik.uni-bremen.de
125681776870ca1c5f5db07ae7b32540ee44e2f9trawickStability : provisional
69c7cb9eeb0d965849dbc65e06a4a734f17fd7eftrawickPortability : portable
69c7cb9eeb0d965849dbc65e06a4a734f17fd7eftrawickThis module provides a disproving module that checks consistency of inverted
125681776870ca1c5f5db07ae7b32540ee44e2f9trawickmodule GUI.GtkDisprove (showDisproveGUI) where
69c7cb9eeb0d965849dbc65e06a4a734f17fd7eftrawickimport GUI.GtkUtils as GtkUtils
125681776870ca1c5f5db07ae7b32540ee44e2f9trawickimport qualified GUI.Glade.NodeChecker as ConsistencyChecker
69c7cb9eeb0d965849dbc65e06a4a734f17fd7eftrawickimport Interfaces.GenericATPState (guiDefaultTimeLimit)
176e4ecfb3dba2ce74bf21c657738755efe3899etrawickimport Comorphisms.LogicGraph (logicGraph)
176e4ecfb3dba2ce74bf21c657738755efe3899etrawickimport qualified Common.OrderedMap as OMap
176e4ecfb3dba2ce74bf21c657738755efe3899etrawickimport Common.LibName (LibName)
176e4ecfb3dba2ce74bf21c657738755efe3899etrawickimport Control.Concurrent (forkIO, killThread)
8f234296a4f049d42dfc15e1e3544b4c788242b8trawickimport Control.Monad (foldM_, join, when)
176e4ecfb3dba2ce74bf21c657738755efe3899etrawickimport qualified Data.Map as Map
176e4ecfb3dba2ce74bf21c657738755efe3899etrawickdata Finder = Finder { fName :: String
176e4ecfb3dba2ce74bf21c657738755efe3899etrawick , finder :: G_cons_checker
125681776870ca1c5f5db07ae7b32540ee44e2f9trawick , comorphism :: [AnyComorphism]
69c7cb9eeb0d965849dbc65e06a4a734f17fd7eftrawick , selected :: Int }
125681776870ca1c5f5db07ae7b32540ee44e2f9trawickdata FGoal = FGoal { name :: String
125681776870ca1c5f5db07ae7b32540ee44e2f9trawick , neg_th :: G_theory }
125681776870ca1c5f5db07ae7b32540ee44e2f9trawick -- checkers :: [(G_Cons_Checker, [AnyComorphism])] }
125681776870ca1c5f5db07ae7b32540ee44e2f9trawickshowDisproveGUI :: LNode DGNodeLab -> ProofState lid sentence
125681776870ca1c5f5db07ae7b32540ee44e2f9trawick -> IO (ProofState lid sentence)
69c7cb9eeb0d965849dbc65e06a4a734f17fd7eftrawickshowDisproveGUI (_,lbl) pstate = case globalTheory lbl of
fcc3093f7b872846234fe62496fad4feddf8dd27trawick Nothing -> error "GtkDisprove.showDisproveGUI"
fcc3093f7b872846234fe62496fad4feddf8dd27trawick Just gt@(G_theory lid1 (ExtSign sign symb) _ sens _) -> let
fcc3093f7b872846234fe62496fad4feddf8dd27trawick goals = OMap.keys $ OMap.filter (not . isAxiom) sens
fcc3093f7b872846234fe62496fad4feddf8dd27trawick neg_theories = map (negate_th gt) goals
fcc3093f7b872846234fe62496fad4feddf8dd27trawick consCheckers = concatMap (\th -> getConsCheckers $
fcc3093f7b872846234fe62496fad4feddf8dd27trawick findComorphismPaths logicGraph $
fcc3093f7b872846234fe62496fad4feddf8dd27trawick sublogicOfTh th) neg_theories
69c7cb9eeb0d965849dbc65e06a4a734f17fd7eftrawick fgoals = zipWith (\ a b -> FGoal {name = a, neg_th = b}) goals neg_theories
125681776870ca1c5f5db07ae7b32540ee44e2f9trawick wait <- newEmptyMVar
69c7cb9eeb0d965849dbc65e06a4a734f17fd7eftrawick showDisproveWindow gt pstate fgoals consCheckers wait
69c7cb9eeb0d965849dbc65e06a4a734f17fd7eftrawick st' <- takeMVar wait
69c7cb9eeb0d965849dbc65e06a4a734f17fd7eftrawicknegate_th :: G_theory -> String -> G_theory
69c7cb9eeb0d965849dbc65e06a4a734f17fd7eftrawicknegate_th g_th goal = case g_th of
efda5b91e5449985bbee6c3e3aa5d8d87b496310trawick G_theory lid1 (ExtSign sign symb) i1 sens i2 ->
125681776870ca1c5f5db07ae7b32540ee44e2f9trawick let axs = OMap.filter isAxiom sens
69c7cb9eeb0d965849dbc65e06a4a734f17fd7eftrawick negSen = case OMap.lookup goal sens of
Nothing -> error "GtkDisprove.disproveThmSingle(1)"
Nothing -> error "GtkDisprove.disproveThmSingle(2)"
sens' = OMap.insert goal negSen axs
xml <- getGladeXML ConsistencyChecker.get
--putMVar res $ Map.insert ln (groupHistory dg (DGRule "Consistency") dg') le
case OMap.lookup selGoal sens of
Nothing -> error "GtkDisprove.disproveThmSingle(1)"
axs = OMap.filter isAxiom sens
sens' = OMap.insert selGoal negSen axs