Atom mapping with constraint programming