type NFA<'s, 'a> when 's : comparison =
's * /// current state
('s -> Option<'a> -> Set<'s>) * /// transition function
's * /// initial state
Set<'s> /// a set final states
dHlwZSBORkE8J3MsICdhPiB3aGVuICdzIDogY29tcGFyaXNvbiA9CiAgJ3MgKiAvLy8gY3VycmVudCBzdGF0ZQogICgncyAtPiBPcHRpb248J2E+IC0+IFNldDwncz4pICogLy8vIHRyYW5zaXRpb24gZnVuY3Rpb24KICAncyAqIC8vLyBpbml0aWFsIHN0YXRlCiAgU2V0PCdzPiAvLy8gYSBzZXQgZmluYWwgc3RhdGVzIA==