An expert system is an intelligent computer program that uses knowledge and inference procedures to solve problems that require significant human expertise. It emulates the decision-making ability of a human expert in a narrow problem domain. The basic components of an expert system are a knowledge base containing the expert knowledge and an inference engine that draws conclusions from the knowledge base. Expert systems have advantages over human experts such as increased availability, reduced costs, reliability, and ability to provide detailed explanations. However, they are limited compared to human experts in areas such as causal knowledge, knowledge depth, and analogical reasoning.