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