diff options
author | Jed Barber <jjbarber@y7mail.com> | 2014-04-08 15:06:40 +1000 |
---|---|---|
committer | Jed Barber <jjbarber@y7mail.com> | 2014-04-08 15:06:40 +1000 |
commit | 03d38eb3190eb5e51fb18847fe0792013285bde5 (patch) | |
tree | 1060d26d3042b5c0c5b1c027fac45fe87f3d685a /src/ListThm.hs | |
parent | f2c4e4614613ede497f19ef79dc7dc157eaca834 (diff) |
Reorganising source code
Diffstat (limited to 'src/ListThm.hs')
-rw-r--r-- | src/ListThm.hs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/ListThm.hs b/src/ListThm.hs new file mode 100644 index 0000000..540486d --- /dev/null +++ b/src/ListThm.hs @@ -0,0 +1,43 @@ +import System.Environment( getArgs ) +import Text.Printf +import Library.Parse +import Library.ProofGraph +import Library.WriteProof +import Library.Semantic +import Library.Stack + +import Data.Maybe +import Data.Graph.Inductive.Graph( Node, LNode, Edge, LEdge ) +import qualified Data.Graph.Inductive.Graph as Graph + + + +fst4 :: (a,b,c,d) -> a +fst4 (a,_,_,_) = a + + + +toThms :: PGraph -> [Node] -> [String] +toThms graph nodeList = + let hyp = (\g n -> let edge = filter (\x -> (fst . thd3 $ x) == 2) (Graph.out g n) + node = snd3 . head $ edge + in write g node) + + con = (\g n -> let edge = filter (\x -> (fst . thd3 $ x) == 1) (Graph.out g n) + node = snd3 . head $ edge + in write g node) + + f = (\x -> (show . fst $ x) ++ ". " ++ (show . fromJust $ ((fst4 . fromJust $ (eval (hyp graph (snd x)))) `at` 0)) ++ + " |- " ++ (show . fromJust $ ((fst4 . fromJust $ (eval (con graph (snd x)))) `at` 0))) + + in map f (zip [1..] nodeList) + + + +main = do + args <- getArgs + list <- getLines (head args) + let graph = doGraphGen (map (stripReturn) list) + initList = filter (\x -> Graph.indeg graph x == 0) (Graph.nodes graph) + theorems = toThms graph initList + output theorems |