SWI-Prolog 7.4.2 Reference Manual: Section 4.44

## 4.44 Miscellaneous

dwim_match(+Atom1, +Atom2)
  True if Atom1 matches Atom2 in the `Do What I Mean' sense. Both Atom1 and Atom2 may also be integers or floats. The two atoms match if:
  - They are identical
  - They differ by one character (spy == spu)
  - One character is inserted/deleted (debug == deug)
  - Two characters are transposed (trace == tarce)
  - `Sub-words' are glued differently (existsfile == existsFile == exists_file)
  - Two adjacent sub-words are transposed (existsFile == fileExists)
dwim_match(+Atom1, +Atom2, -Difference)
  Equivalent to dwim_match/2, but unifies Difference with an atom identifying the difference between Atom1 and Atom2. The return values are (in the same order as above): `equal`, `mismatched_char`, `inserted_char`, `transposed_char`, `separated` and `transposed_word`.
wildcard_match(+Pattern, +String)
  True if String matches the wildcard pattern Pattern. Pattern is very similar to the Unix `csh` pattern matcher. The patterns are given below:

  ``?`` | Matches one arbitrary character.
  ``*`` | Matches any number of arbitrary characters.
  `[ ... ]` | Matches one of the characters specified between the brackets.
  | `<char1>-<char2>` indicates a range.
  `{...}` | Matches any of the patterns of the comma-separated list between the braces.

  Example:

      ?- wildcard_match('[a-z]*.{pro,pl}[%~]', 'a_hello.pl%').
      true.

sleep(+Time)
  Suspend execution Time seconds. Time is either a floating point number or an integer. Granularity is dependent on the system's timer granularity. A negative time causes the timer to return immediately. On most non-realtime operating systems we can only ensure execution is suspended for at least Time seconds.

  On Unix systems the sleep/1 predicate is realised ---in order of preference--- by nanosleep(), usleep(), select() if the time is below 1 minute, or sleep(). On Windows systems Sleep() is used.