How to update Workflow State in a Rule via Formula?

I can’t wrap my head around how to do this. I want something like:

If( MatchRegex([Step 1 Task].State.Name,"Waiting"),
[Step 1 Task].State.Filter(Name="Progress").Sort().First(), // Choose a new State
[Step 1 Task].State)   // Keep current State
)