Viper: An Infrastructure for Automated Verification in Separation LogicÂ