module DP.Tree.Align.Global.Affine2 where
import ADP.Fusion.Core
import FormalLanguage.CFG
[formalLanguage|
Verbose
Grammar: Global
N: T
N: F
N: Z
N: Y
N: P
N: G
T: n
S: [F,F]
[F,F] -> iter <<< [T,T] [F,F]
[F,F] -> iter <<< [T,Z] [F,G]
[F,F] -> iter <<< [Z,T] [G,F]
[F,F] -> done <<< [e,e]
[P,F] -> pfalign <<< [T,T] [P,F]
[P,F] -> pfdelin <<< [T,Z] [P,G]
[P,F] -> pfindel <<< [Y,T] [P,F]
[P,F] -> done <<< [e,e]
[F,P] -> done <<< [e,e]
[F,P] -> fpalign <<< [T,T] [F,P]
[F,P] -> fpdelin <<< [T,Y] [F,P]
[F,P] -> fpindel <<< [Z,T] [G,P]
[G,F] -> gfalign <<< [T,T] [G,F]
[G,F] -> gfdelin <<< [T,Z] [P,G]
[G,F] -> gfindel <<< [Y,T] [G,F]
[G,F] -> done <<< [e,e]
[F,G] -> done <<< [e,e]
[F,G] -> fgalign <<< [T,T] [F,F]
[F,G] -> fgdelin <<< [T,Y] [F,G]
[F,G] -> fgindel <<< [Z,T] [G,P]
[G,P] -> gpalign <<< [T,T] [F,P]
[G,P] -> gpdelin <<< [T,Y] [F,P]
[G,P] -> gpindel <<< [Y,T] [G,P]
[P,G] -> pgalign <<< [T,T] [P,F]
[P,G] -> pgdelin <<< [T,Y] [P,G]
[P,G] -> pgindel <<< [Y,T] [P,F]
[T,T] -> align <<< [n,n] [F,F]
[Z,T] -> indel <<< [,n] [P,F]
[T,Z] -> delin <<< [n,] [F,P]
[Y,T] -> afindel <<< [,n] [P,F]
[T,Y] -> afdelin <<< [n,] [F,P]
//
Emit: Global
|]
makeAlgebraProduct ''SigGlobal