  Even though the core of the Prolog programming language has been standardized
by ISO since 1995, it remains difficult to write complex Prolog programs that
can run unmodified on multiple Prolog implementations. Indeed, implementations
sometimes deviate from the ISO standard and the standard itself fails to cover
many features that are essential in practice.
  Most Prolog applications thus have to rely on non-standard features, often
making them dependent on one particular Prolog implementation and incompatible
with others. We examine one such Prolog application: ProB, which has been
developed for over 20 years in SICStus Prolog.
  The article describes how we managed to refactor the codebase of ProB to also
support SWI-Prolog, with the goal of verifying ProB's results using two
independent toolchains. This required a multitude of adjustments, ranging from
extending the SICStus emulation in SWI-Prolog on to better modularizing the
monolithic ProB codebase. We also describe notable compatibility issues and
other differences that we encountered in the process, and how we were able to
deal with them with few major code changes.
  Under consideration for acceptance in TPLP.
