`set_includes` (string subsequence-containment) in Python 2
AFNP. The loop condition j != hn is more idiomatically expressed as an exception:

try:
    for c in needle:
        while haystack[j] &lt; c:
            ....
except IndexError:
    return False

No naked loops. Factor the while haystack[j] &lt; c: into a function. Among other benefits, it'd allow

    j = search_character(haystack[j:], c)

The binary search for c seems more performant than linear. See bisect module.