This literate Haskell script has been automatically generated by
Keith Wansbrough's undecgen.lhs script.  Use Hugs 1.3c to run.

> class TM     q    lss    s    rss where
>   tmfinal :: q -> lss -> s -> rss -> String

> data Q0 = Q0
> data Q1 = Q1
> data Q2 = Q2
> data Q3 = Q3
> data Q4 = Q4
> data Q5 = Q5
> data Q6 = Q6
> data Q7 = Q7
> data Q8 = Q8
> data Q9 = Q9
> data Q10 = Q10

> data S0 = S0 deriving Show
> data S1 = S1 deriving Show


==> (Q0,S0)->(L,Q1):

> instance TM Q1  lss     ls (S0,rss) =>     TM Q0 (lss,ls) S0     rss  where
>   tmfinal   Q0 (lss,ls) S0     rss  = tmfinal Q1  lss     ls (S0,rss)

> instance TM Q1  ()      S0 (S0,rss) =>     TM Q0  ()      S0     rss  where
>   tmfinal   Q0  ()      S0     rss  = tmfinal Q1  ()      S0 (S0,rss)


==> (Q0,S1)->(L,Q1):

> instance TM Q1  lss     ls (S1,rss) =>     TM Q0 (lss,ls) S1     rss  where
>   tmfinal   Q0 (lss,ls) S1     rss  = tmfinal Q1  lss     ls (S1,rss)

> instance TM Q1  ()      S0 (S1,rss) =>     TM Q0  ()      S1     rss  where
>   tmfinal   Q0  ()      S1     rss  = tmfinal Q1  ()      S0 (S1,rss)


==> (Q1,S0)->(R,Q2):

> instance TM Q2 (lss,S0) rs     rss  =>     TM Q1  lss     S0 (rs,rss) where
>   tmfinal   Q1  lss     S0 (rs,rss) = tmfinal Q2 (lss,S0) rs     rss

> instance TM Q2 (lss,S0) S0     ()   =>     TM Q1  lss     S0     ()   where
>   tmfinal   Q1  lss     S0     ()   = tmfinal Q2 (lss,S0) S0     ()


==> (Q1,S1)->(L,Q1):

> instance TM Q1  lss     ls (S1,rss) =>     TM Q1 (lss,ls) S1     rss  where
>   tmfinal   Q1 (lss,ls) S1     rss  = tmfinal Q1  lss     ls (S1,rss)

> instance TM Q1  ()      S0 (S1,rss) =>     TM Q1  ()      S1     rss  where
>   tmfinal   Q1  ()      S1     rss  = tmfinal Q1  ()      S0 (S1,rss)


==> (Q2,S0)->(R,Q10):

> instance TM Q10 (lss,S0) rs     rss  =>     TM Q2  lss     S0 (rs,rss) where
>   tmfinal   Q2  lss     S0 (rs,rss) = tmfinal Q10 (lss,S0) rs     rss

> instance TM Q10 (lss,S0) S0     ()   =>     TM Q2  lss     S0     ()   where
>   tmfinal   Q2  lss     S0     ()   = tmfinal Q10 (lss,S0) S0     ()


==> (Q2,S1)->(S0,Q3):

> instance TM Q3  lss     S0     rss  =>     TM Q2  lss     S1     rss  where
>   tmfinal   Q2  lss     S1     rss  = tmfinal Q3  lss     S0     rss


==> (Q3,S0)->(R,Q4):

> instance TM Q4 (lss,S0) rs     rss  =>     TM Q3  lss     S0 (rs,rss) where
>   tmfinal   Q3  lss     S0 (rs,rss) = tmfinal Q4 (lss,S0) rs     rss

> instance TM Q4 (lss,S0) S0     ()   =>     TM Q3  lss     S0     ()   where
>   tmfinal   Q3  lss     S0     ()   = tmfinal Q4 (lss,S0) S0     ()


==> (Q3,S1)->(R,Q4):

> instance TM Q4 (lss,S1) rs     rss  =>     TM Q3  lss     S1 (rs,rss) where
>   tmfinal   Q3  lss     S1 (rs,rss) = tmfinal Q4 (lss,S1) rs     rss

> instance TM Q4 (lss,S1) S0     ()   =>     TM Q3  lss     S1     ()   where
>   tmfinal   Q3  lss     S1     ()   = tmfinal Q4 (lss,S1) S0     ()


==> (Q4,S0)->(R,Q5):

> instance TM Q5 (lss,S0) rs     rss  =>     TM Q4  lss     S0 (rs,rss) where
>   tmfinal   Q4  lss     S0 (rs,rss) = tmfinal Q5 (lss,S0) rs     rss

> instance TM Q5 (lss,S0) S0     ()   =>     TM Q4  lss     S0     ()   where
>   tmfinal   Q4  lss     S0     ()   = tmfinal Q5 (lss,S0) S0     ()


==> (Q4,S1)->(R,Q4):

> instance TM Q4 (lss,S1) rs     rss  =>     TM Q4  lss     S1 (rs,rss) where
>   tmfinal   Q4  lss     S1 (rs,rss) = tmfinal Q4 (lss,S1) rs     rss

> instance TM Q4 (lss,S1) S0     ()   =>     TM Q4  lss     S1     ()   where
>   tmfinal   Q4  lss     S1     ()   = tmfinal Q4 (lss,S1) S0     ()


==> (Q5,S0)->(S1,Q6):

> instance TM Q6  lss     S1     rss  =>     TM Q5  lss     S0     rss  where
>   tmfinal   Q5  lss     S0     rss  = tmfinal Q6  lss     S1     rss


==> (Q5,S1)->(R,Q5):

> instance TM Q5 (lss,S1) rs     rss  =>     TM Q5  lss     S1 (rs,rss) where
>   tmfinal   Q5  lss     S1 (rs,rss) = tmfinal Q5 (lss,S1) rs     rss

> instance TM Q5 (lss,S1) S0     ()   =>     TM Q5  lss     S1     ()   where
>   tmfinal   Q5  lss     S1     ()   = tmfinal Q5 (lss,S1) S0     ()


==> (Q6,S0)->(L,Q7):

> instance TM Q7  lss     ls (S0,rss) =>     TM Q6 (lss,ls) S0     rss  where
>   tmfinal   Q6 (lss,ls) S0     rss  = tmfinal Q7  lss     ls (S0,rss)

> instance TM Q7  ()      S0 (S0,rss) =>     TM Q6  ()      S0     rss  where
>   tmfinal   Q6  ()      S0     rss  = tmfinal Q7  ()      S0 (S0,rss)


==> (Q6,S1)->(L,Q7):

> instance TM Q7  lss     ls (S1,rss) =>     TM Q6 (lss,ls) S1     rss  where
>   tmfinal   Q6 (lss,ls) S1     rss  = tmfinal Q7  lss     ls (S1,rss)

> instance TM Q7  ()      S0 (S1,rss) =>     TM Q6  ()      S1     rss  where
>   tmfinal   Q6  ()      S1     rss  = tmfinal Q7  ()      S0 (S1,rss)


==> (Q7,S0)->(L,Q8):

> instance TM Q8  lss     ls (S0,rss) =>     TM Q7 (lss,ls) S0     rss  where
>   tmfinal   Q7 (lss,ls) S0     rss  = tmfinal Q8  lss     ls (S0,rss)

> instance TM Q8  ()      S0 (S0,rss) =>     TM Q7  ()      S0     rss  where
>   tmfinal   Q7  ()      S0     rss  = tmfinal Q8  ()      S0 (S0,rss)


==> (Q7,S1)->(L,Q7):

> instance TM Q7  lss     ls (S1,rss) =>     TM Q7 (lss,ls) S1     rss  where
>   tmfinal   Q7 (lss,ls) S1     rss  = tmfinal Q7  lss     ls (S1,rss)

> instance TM Q7  ()      S0 (S1,rss) =>     TM Q7  ()      S1     rss  where
>   tmfinal   Q7  ()      S1     rss  = tmfinal Q7  ()      S0 (S1,rss)


==> (Q8,S0)->(S1,Q9):

> instance TM Q9  lss     S1     rss  =>     TM Q8  lss     S0     rss  where
>   tmfinal   Q8  lss     S0     rss  = tmfinal Q9  lss     S1     rss


==> (Q8,S1)->(L,Q8):

> instance TM Q8  lss     ls (S1,rss) =>     TM Q8 (lss,ls) S1     rss  where
>   tmfinal   Q8 (lss,ls) S1     rss  = tmfinal Q8  lss     ls (S1,rss)

> instance TM Q8  ()      S0 (S1,rss) =>     TM Q8  ()      S1     rss  where
>   tmfinal   Q8  ()      S1     rss  = tmfinal Q8  ()      S0 (S1,rss)


==> (Q9,S0)->(R,Q2):

> instance TM Q2 (lss,S0) rs     rss  =>     TM Q9  lss     S0 (rs,rss) where
>   tmfinal   Q9  lss     S0 (rs,rss) = tmfinal Q2 (lss,S0) rs     rss

> instance TM Q2 (lss,S0) S0     ()   =>     TM Q9  lss     S0     ()   where
>   tmfinal   Q9  lss     S0     ()   = tmfinal Q2 (lss,S0) S0     ()


==> (Q9,S1)->(R,Q2):

> instance TM Q2 (lss,S1) rs     rss  =>     TM Q9  lss     S1 (rs,rss) where
>   tmfinal   Q9  lss     S1 (rs,rss) = tmfinal Q2 (lss,S1) rs     rss

> instance TM Q2 (lss,S1) S0     ()   =>     TM Q9  lss     S1     ()   where
>   tmfinal   Q9  lss     S1     ()   = tmfinal Q2 (lss,S1) S0     ()


==> (Q10,S0)->(S0,Q0):

> instance TM Q0  lss     S0     rss  =>     TM Q10  lss     S0     rss  where
>   tmfinal   Q10  lss     S0     rss  = tmfinal Q0  lss     S0     rss


==> (Q10,S1)->(R,Q10):

> instance TM Q10 (lss,S1) rs     rss  =>     TM Q10  lss     S1 (rs,rss) where
>   tmfinal   Q10  lss     S1 (rs,rss) = tmfinal Q10 (lss,S1) rs     rss

> instance TM Q10 (lss,S1) S0     ()   =>     TM Q10  lss     S1     ()   where
>   tmfinal   Q10  lss     S1     ()   = tmfinal Q10 (lss,S1) S0     ()



> main :: IO ()

> main = putStr (tmfinal Q0 ((((),S1),S1),S1) S0 ())


