+
+
+let get_trans ?(attributes=TagSet.empty) auto states tag =
+ StateSet.fold (fun q acc ->
+ List.fold_left (fun ((tr_acc, l_acc, r_acc) as acc) (ts, tr) ->
+(* let ts = if ts == TagSet.star then TagSet.diff ts attributes else ts
+ in *)
+ let b = TagSet.mem tag ts in
+ LOG(__ "transition" 3 "tag=<%s>, %s: %a"
+ (Tag.to_string tag)
+ (if b then " taking" else "not taking")
+ Transition.print tr);
+ if b then
+ let _, _, _, f = Transition.node tr in
+ let l, r = Formula.st f in
+ (Translist.cons tr tr_acc,
+ StateSet.union l l_acc,
+ StateSet.union r r_acc)
+ else acc) acc (Hashtbl.find auto.trans q))
+ states
+ (Translist.nil, StateSet.empty, StateSet.empty)