Solution: Safe

The code...

declare
proc {Safe Root}
   C1 C2 C3 C4 C5 C6 C7 C8 C9
in
   Root=sol(c1:C1 c2:C2 c3:C3 c4:C4 c5:C5 c6:C6 c7:C7 c8:C8 c9:C9)
   Root ::: 1#9
   {FD.distinct Root}
   C1 \=: 1
   C2 \=: 2
   C3 \=: 3
   C4 \=: 4
   C5 \=: 5
   C6 \=: 6
   C7 \=: 7
   C8 \=: 8
   C9 \=: 9
   C4 - C6 =: C7
   C1 * C2 * C3 =: C8 + C9
   C2 + C3 + C6 <: C8
   C9 <: C8
   {FD.distribute ff Root}
end

{ExploreAll Safe}

...and the search tree (all solutions, to see if indeed there is only one):

After clicking on the solution node, the Browser shows

1#sol(c1: 4 c2: 3 c3: 1 C4: 8 c5: 9 c6: 2 c7: 6 c8: 7 c9: 5)

Markus Löckelt