I don't believe Adobe has published their algorithm for soft proofing, hopefully the expertise in this group can fill in the blanks. Following is my best shot:
1. Convert image pixel array of RGB values with embedded profile and white point to XYZ array.
2. Convert XYZ array to XYZ array, using Bradford transform, from image white point to D50 white point.
3. Convert XYZ array to standard (D50) Lab array.
4. Convert Lab array to RGB array, using printer profile and selected rendering intent (B to A table).
5. Convert RGB array to Lab array, using printer profile back path and absolute rendering intent (A to B table).
6. Convert standard (D50) Lab array to XYZ array.
7. Convert XYZ array to XYZ array, using Bradford transform, from D50 white point to display white point.
8. Convert XYZ array to RGB array with display profile and white point, relative rendering.
9. Compare print to display with lighting matching display white point.
Please jump in and comment/correct.
Richard Southworth