An analysis of techniques for verification of logical correctness in rule-based systems