graph-rewriting-trs 0.1.1 → 0.1.2
raw patch · 4 files changed
+24/−17 lines, 4 files
Files
- Term.hs +2/−2
- TermRewriting.hs +15/−14
- examples/quot_min.trs +6/−0
- graph-rewriting-trs.cabal +1/−1
Term.hs view
@@ -42,10 +42,10 @@ -- primitive parsers newlines ∷ Parser ()-newlines = const () <$> pMunch (`elem` "\n\r")+newlines = pMunch (`elem` "\n\r") *> pure () ε ∷ Parser () -- spaces-ε = const () <$> pMunch (`elem` "\t ")+ε = pMunch (`elem` "\t ") *> pure () arrow ∷ Parser String arrow = pToken "->" <|> pToken "→" <?> "arrow"
TermRewriting.hs view
@@ -26,20 +26,21 @@ e ← edge varMap ← build term e return (e, varMap)- where build term inc = do- c ← liftReader (edgeCardinality inc)- require (c ≡ 2)- case term of- Var v | isLower v → return $ Map.singleton v inc- Var v | otherwise → do- Variable {name = n} ← nodeAt inc- require (n ≡ v)- return Map.empty- App f x → do- Applicator {inp = i, out1 = o1, out2 = o2} ← nodeAt inc- require (i ≡ inc)- liftM2 (Map.unionWithKey nonLinear) (build f o1) (build x o2)- where nonLinear v = error $ "Left-hand side is not linear as " ⧺ [v] ⧺ " occurs twice"+ where build term inc = case term of+ Var v | isLower v → return $ Map.singleton v inc+ Var v | otherwise → do+ c ← liftReader (edgeCardinality inc)+ require (c ≡ 2)+ Variable {name = n} ← nodeAt inc+ require (n ≡ v)+ return Map.empty+ App f x → do+ c ← liftReader (edgeCardinality inc)+ require (c ≡ 2)+ Applicator {inp = i, out1 = o1, out2 = o2} ← nodeAt inc+ require (i ≡ inc)+ liftM2 (Map.unionWithKey nonLinear) (build f o1) (build x o2)+ where nonLinear v = error $ "Left-hand side is not linear as " ⧺ [v] ⧺ " occurs twice" buildRHS ∷ (View Vertex n, View [Port] n) ⇒ VarMap → Term → Edge → Rule n buildRHS bindings term inc = replace (reqEdges term) (build term inc) where
+ examples/quot_min.trs view
@@ -0,0 +1,6 @@+import peano.trs++Mx0 → x+M(Sx)(Sy) → Mxy+Q0(Sy) → 0+Q(Sx)(Sy) → S(Q(Mxy)(Sy))
graph-rewriting-trs.cabal view
@@ -1,5 +1,5 @@ Name: graph-rewriting-trs-Version: 0.1.1+Version: 0.1.2 Copyright: (c) 2011, Jan Rochel License: BSD3 License-File: LICENSE