1 module FAminus
    2 
    3 ( minusTNFA
    4 )
    5 
    6 where
    7 
    8 
    9 import Set
   10 import FiniteMap
   11 
   12 import Stuff
   13 import Options
   14 
   15 import TA
   16 import FAtypes
   17 import Ids
   18 
   19 import FAintersect
   20 
   21 import FAneg
   22 
   23 ----------------------------------------------------------------------
   24 
   25 minusTNFA :: Opts -> TNFA Int -> TNFA Int -> TNFA Int
   26 minusTNFA opts
   27           x1 @ (TNFA cons1 all1 starts1 moves1)
   28           x2 @ (TNFA cons2 all2 starts2 moves2) =
   29     let cons = cons1 `unionSet` cons2
   30         y2 = TNFA cons all2 starts2 moves2
   31         z2 = negTNFA opts y2
   32         v  = intersectTNFA opts x1 z2
   33     in  
   34         trinfo opts "minus" v $
   35         v
   36