module SimpRegExp
where
import RegExp

simp Lambda = Lambda
simp Empty = Empty
simp r@(One _) = r
simp (Union r1 r2) = case (simp r1, simp r2) of 
                       (Empty, r2') -> r2'
                       (r1', Empty) -> r1'
                       (r1',r2') -> Union r1' r2'
simp (Cat r1 r2) = case (simp r1, simp r2) of 
                     (Empty, r2') -> Empty
                     (r1',Empty) -> Empty
                     (Lambda,r2') -> r2'
                     (r1',Lambda) -> r1'
                     (r1',r2') -> Cat r1' r2'
simp (Star r1) = case simp r1 of 
                   Empty -> Lambda
                   Lambda -> Lambda
                   r1' -> Star r1'
