static void check_propagation(test_bench_t *bench) { equality_queue_t *queue; ivector_t expl; uint32_t i, n; int32_t x, y; init_ivector(&expl, 10); queue = &bench->equeue; n = queue->top; for (i=0; i<n; i++) { x = queue->data[i].lhs; y = queue->data[i].rhs; if (x >= 0) { assert(y >= 0); offset_manager_explain_equality(&bench->manager, x, y, &expl); check_equality(bench, x, y, &expl); if (bench->show_details) { printf("Explanation for x%"PRId32" == x%"PRId32":\n", x, y); print_poly_def(bench->ptable, x); print_poly_def(bench->ptable, y); print_explanation(bench, &expl); } ivector_reset(&expl); } } delete_ivector(&expl); }
/* * Get explanation for t1 == t2 */ static void test_eq_explanation(eterm_t t1, eterm_t t2) { ivector_t v; uint32_t i, n; int32_t x1, x2; init_ivector(&v, 10); x1 = var_of_term(t1); x2 = var_of_term(t2); offset_manager_explain_equality(&mngr, x1, x2, &v); printf("---> Explanation:"); n = v.size; for (i=0; i<n; i++) { printf(" eq[%"PRId32"]", v.data[i]); } printf("\n\n"); delete_ivector(&v); }