knowledge-based-reasoning