Thirdly, appropriate dynamic reasoning algorithms are determined by the requirements of a specific application including, but not limited to, issues such as mode, application technology domains, user preferences, software availability, cost and performance.