Kuiper: Correct and Efficient GPU Programming with Dependent Types and Separation Logic | Synapse