[Initial change for new module Initialiser
martin.hofmann@uni-bamberg.de**20081117123114] hunk ./src/Data/HypoSpace.hs 174
+
hunk ./src/Data/HypoSpace.hs 176
---               
---rule1 = rule 1 "a"
---rule2 = rule 2 "b"
---rule3 = rule 3 "c"
---rule4 = rule 4 "d"
---rule5 = rule 5 "e"
---rule6 = rule 6 "f"
---rule7 = rule 7 "g"
---rule8 = rule 8 "h"
---rule9 = rule 9 "i"
---rule10 = rule 10 "j"
---
---rule1' = rule 1 "aaaaaaaaa"
---rule2' = rule 2 "bbbbbbbbbbbbbbbbbbbb"
---rule3' = rule 3 "ccc"
---rule4' = rule 4 "ddd"
---rule5' = rule 5 "eeeeeeeeeeeeeeee"
---rule6' = rule 6 "fff"
---rule7' = rule 7 "ggg"
---rule8' = rule 8 "hhh"
---rule9' = rule 9 "iii"
---rule10' = rule 10 "jjj"
---
---rules1o = rules [rule1,rule2,rule3]
---rules1c = rules [rule4,rule5]
---rules1ao = rules [rule1]
---rules1ac = rules [rule4,rule5]
---rules1bo = rules [rule1,rule2,rule3]
---rules1bc = rules [rule4,rule5]
---rules1co = rules [rule6]
---rules1cc = rules [rule4,rule5]
---rules2o = rules [rule6,rule7,rule8]
---rules2c = rules [rule9,rule10]
---rules3o = rules [rule1,rule6,rule8]
---rules3c = rules [rule4,rule10]
---rules4o = rules [rule9,rule2,rule3]
---rules4c = rules [rule9,rule5]
---
---
---hypo1 = hypo (R.map (asFrag (mkName "")) rules1o) -- rules1c
---hypo1a = hypo rules1ao rules1ac
---hypo1b = hypo rules1bo rules1bc
---hypo1c = hypo rules1co rules1cc
---hypo2 = hypo rules2o rules2c
---hypo3 = hypo rules3o rules3c
---hypo4 = hypo rules4o rules4c
---
---hsp = initHSpace
---hsp1 = insert hypo1 hsp
---hsp1a = insert hypo1c hsp1
---hsp2 = insert hypo2 hsp1
---
---hsp3 = insert hypo3 hsp2
---hsp4 = insert hypo4 hsp3
---hsp5 = insert hypo1b hsp4
---hsp6 = insert hypo1c hsp5
---               
addfile ./src/Data/Initialiser.hs
hunk ./src/Data/Initialiser.hs 1
-
+{-# OPTIONS_GHC -fglasgow-exts -fth #-}
+module Data.Initialiser where
+
+import Language.Haskell.TH 
+import Language.Haskell.TH.Syntax
+import Control.Monad
+import Data.Rules
+import Data.Hypotheses
+--import Data.Fragments
+--import Data.IOData
+--import Data.HypoSpace
+
+printQ q = (runQ q) >>= putStrLn . pprint 
+showQ q = (runQ q) >>= putStrLn . show
+mkVP s = VarP (mkName s)
+mkVE s = VarE (mkName s)
+ 
+rev = liftM head [d| rev [] = []
+                     rev [x] = [x]
+                     rev [x,y] = [y,x]
+                     rev [x,y,z] = [z,x,y]
+                     rev [w,x,y,z] = [z,y,x,w] 
+                 |]
+rev0 = rule [ConP '[] []] (ConE '[])
+rev1 = rule [ListP [mkVP "a_6"]] (ListE [mkVE "a_6"])
+rev2 = rule [ListP [mkVP "a_7",mkVP "b_8"]] (ListE [mkVE "b_8",mkVE "a_7"])
+rev3 = rule [ListP [mkVP "a_9",mkVP "b_10",mkVP "c_11"]] (ListE [mkVE "c_11",mkVE "b_10",mkVE "a_9"])
+rev4 = rule [ListP [mkVP "a_12",mkVP "b_13",mkVP "c_14", mkVP "d_15"]] (ListE [mkVE "d_15", mkVE "c_14",mkVE "b_12",mkVE "a_11"])
+
+snoc = liftM head [d| snoc [] w = [w]
+                      snoc [w] x = [w,x]
+                      snoc [w,x] y = [w,x,y]
+                      snoc [w,x,y] z = [w,x,y,z] 
+                  |]
+
+snoc0 = rule [ConP '[] [], mkVP "w_0"](ListE [mkVE "w_0"])
+snoc1 = rule [ListP [mkVP "w_1"],mkVP "x_2"] (ListE [mkVE "w_1",mkVE "x_2"])
+snoc2 = rule [ListP [mkVP "w_3",mkVP "x_4"],mkVP "y_5"] (ListE [mkVE "w_3",mkVE "x_4",mkVE "y_5"])
+snoc3 = rule [ListP [mkVP "w_6",mkVP "x_7",mkVP "y_8"],mkVP "z_9"] (ListE [mkVE "w_6",mkVE "x_7",mkVE "y_8",mkVE "z_9"])
+
+
+--
+--
+-- 
+--rev1 = rule 1 "a"
+--rule2 = rule 2 "b"
+--rule3 = rule 3 "c"
+--rule4 = rule 4 "d"
+--rule5 = rule 5 "e"
+--rule6 = rule 6 "f"
+--rule7 = rule 7 "g"
+--rule8 = rule 8 "h"
+--rule9 = rule 9 "i"
+--rule10 = rule 10 "j"
+--
+--rule1' = rule 1 "aaaaaaaaa"
+--rule2' = rule 2 "bbbbbbbbbbbbbbbbbbbb"
+--rule3' = rule 3 "ccc"
+--rule4' = rule 4 "ddd"
+--rule5' = rule 5 "eeeeeeeeeeeeeeee"
+--rule6' = rule 6 "fff"
+--rule7' = rule 7 "ggg"
+--rule8' = rule 8 "hhh"
+--rule9' = rule 9 "iii"
+--rule10' = rule 10 "jjj"
+--
+--rules1o = rules [rule1,rule2,rule3]
+--rules1c = rules [rule4,rule5]
+--rules1ao = rules [rule1]
+--rules1ac = rules [rule4,rule5]
+--rules1bo = rules [rule1,rule2,rule3]
+--rules1bc = rules [rule4,rule5]
+--rules1co = rules [rule6]
+--rules1cc = rules [rule4,rule5]
+--rules2o = rules [rule6,rule7,rule8]
+--rules2c = rules [rule9,rule10]
+--rules3o = rules [rule1,rule6,rule8]
+--rules3c = rules [rule4,rule10]
+--rules4o = rules [rule9,rule2,rule3]
+--rules4c = rules [rule9,rule5]
+--
+----
+----hypo1 = hypo (R.map (asFrag (mkName "")) rules1o) -- rules1c
+----hypo1a = hypo rules1ao rules1ac
+----hypo1b = hypo rules1bo rules1bc
+----hypo1c = hypo rules1co rules1cc
+----hypo2 = hypo rules2o rules2c
+----hypo3 = hypo rules3o rules3c
+----hypo4 = hypo rules4o rules4c
+----
+----hsp = initHSpace
+----hsp1 = insert hypo1 hsp
+----hsp1a = insert hypo1c hsp1
+----hsp2 = insert hypo2 hsp1
+----
+----hsp3 = insert hypo3 hsp2
+----hsp4 = insert hypo4 hsp3
+----hsp5 = insert hypo1b hsp4
+----hsp6 = insert hypo1c hsp5
+----               