packages feed

graph-rewriting-trs 0.1.1 → 0.1.2

raw patch · 4 files changed

+24/−17 lines, 4 files

Files

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