Using Program Synthesis and Inductive Logic Programming to solve Bongard Problems