The way you wrote, the model is not making use of the model variable x anywhere. In the logp function, x is the value the sampler suggests for s1 at each iteration and it has nothing to do with the x variable in the model. You could have called it anything else (the standard is value). I am not sure how you wanted to incorporate x in your model, so I cannot give you a solution.
Can you show how you are generating your data and how the 2 unobserved variables x, s1 are used?
I have the feeling you don’t really want/ need x (s1 follows a power law distribution with your given alpha already, except it also accepts negative values as mentioned above) but I need you to clarify it.