コード例 #1
0
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);
}
コード例 #2
0
/*
 * 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);
}