automatic reasoning