adp-multi-monadiccp-0.2.0: tests/ADP/Tests/RGExampleExplicit.hs
module ADP.Tests.RGExampleExplicit where
import ADP.Multi.All
import ADP.Multi.Rewriting.All
import ADP.Tests.RGExample
rgknot :: RG_Algebra Char answer -> String -> [answer]
rgknot algebra inp =
let
(nil,left,pair,knot,knot1,knot2,basepair,base,h) = algebra
rewritePair, rewriteKnot :: Dim1
rewritePair [p1,p2,s1,s2] = [p1,s1,p2,s2]
rewriteKnot [k11,k12,k21,k22,s1,s2,s3,s4] = [k11,s1,k21,s2,k12,s3,k22,s4]
s = tabulated1 $
yieldSize1 (0,Nothing) $
nil <<< EPS >>> id1 |||
left <<< b ~~~ s >>> id1 |||
pair <<< p ~~~ s ~~~ s >>> rewritePair |||
knot <<< k ~~~ k ~~~ s ~~~ s ~~~ s ~~~ s >>> rewriteKnot
... h
b = tabulated1 $
base <<< 'a' >>> id1 |||
base <<< 'u' >>> id1 |||
base <<< 'c' >>> id1 |||
base <<< 'g' >>> id1
... h
p = tabulated2 $
basepair <<< ('a', 'u') >>> id2 |||
basepair <<< ('u', 'a') >>> id2 |||
basepair <<< ('c', 'g') >>> id2 |||
basepair <<< ('g', 'c') >>> id2 |||
basepair <<< ('g', 'u') >>> id2 |||
basepair <<< ('u', 'g') >>> id2
... h
rewriteKnot1 :: Dim2
rewriteKnot1 [p1,p2,k1,k2] = ([k1,p1],[p2,k2])
k = tabulated2 $
yieldSize2 (1,Nothing) (1,Nothing) $
knot1 <<< p ~~~ k >>> rewriteKnot1 |||
knot2 <<< p >>> id2
... h
z = mk inp
tabulated1 = table1 z
tabulated2 = table2 z
in axiom z s