Learning by abstraction