LearnAdapt: a synthesis of our work on adaptive programming