Exemplo n.º 1
0
void
gen_ccls_cnf(tak_mak& gg, canon_cnf& the_cnf, long max_ccl_sz,
		long max_num_ccls_cnf, long max_num_vars_cnf)
{
	//bj_ostream& os = bj_out;

	row<canon_clause*>& all_ccl = the_cnf.cf_clauses;
	BRAIN_CK(all_ccl.is_empty());

	long cnf_sz = gg.gen_rand_int32_ie(1, max_num_ccls_cnf);
	long num_vars = gg.gen_rand_int32_ie(2, max_num_vars_cnf);

	//os << "cnf_sz=" << cnf_sz << bj_eol;
	//os << "num_vars=" << num_vars << bj_eol;

	long tot_lits = 0;
	long tot_twolits = 0;
	long ii = 0;
	for(ii = 0; ii < cnf_sz; ii++){
		canon_clause& ccl_1 = the_cnf.add_clause(GSKE);
		row<long>& rr_1 = *((row<long>*)(&ccl_1));

		gen_clause(gg, rr_1, max_ccl_sz, num_vars);
		tot_lits += ccl_1.cc_size();
		if(ccl_1.cc_size() == 2){ tot_twolits++; }
	}

	all_ccl.mix_sort(cmp_clauses);

	finish_cnf(the_cnf, num_vars, tot_lits, tot_twolits);
}
Exemplo n.º 2
0
gen_pred (struct pred_list *pred, struct put_fnct *put)
{
int i;
struct clause_list *clause;

	sprintf (buf, "pl_%s_%d (struct coroutine *k",
			pred->name, pred->n_args);
	sput (put, buf);
	for (i=0; i<pred->n_args; i++)
	{
		sprintf (buf, ", expr a%d", i);
		sput (put, buf);
	}
	sput (put, ")\n{\nexpr nx[MAX_NEW_CONS];\n");
	sput (put, "int pnx, i;\nstruct process_list *alt_process;\n");
	sput (put, "\tpnx = 0;\n\tbegin_decl ();\n");
	for (i=0; i<pred->n_args; i++)
	{
		sprintf (buf, "\tdecl_expr (&a%d);\n", i);
		sput (put, buf);
	}
	/*
	sput (put, "\tfor (i=0; i<MAX_NEW_CONS; i++)\n\t{\n");
	sput (put, "\t\tnx[i] = 0;\n");
	sput (put, "\t\tdle (nx[i]);\n\t}\n");
	*/
	sput (put, "\tfor (i=0; i<MAX_NEW_CONS; i++)\n");
	sput (put, "\t\tdle (nx[i]);\n");

	sput (put, "#ifdef TRACE\n");
	for (i=0; i<pred->n_args; i++)
	{
		sprintf (buf, "\tprintf (\"\\n%s: a%d = \"); print_expr (a%d);\n",
				pred->name, i, i);
		sput (put, buf);
	}
	sput (put, "#endif\n");

	for (clause = pred->clauses;
		clause != NULL;
		clause = clause->next)
	{
		sput (put, "\tif (alt (k, 1, 0))\n\t{\n");
		/* sput (put, "\talt_process = getpl() -> alt;\n\t{"); */
		gen_clause (clause, pred->n_args, put);
		/* sput (put, "\t}\n\t} else\n"); */
		sput (put, "\t} else\n");
	}
	sput (put, "\tend (k);\n\tfree_expr ();\n}\n");

}
Exemplo n.º 3
0
void	test_sorted_ops2(){
	bj_ostream& os = bj_out;
	os << "test_sorted_ops2" << bj_eol;

	unsigned long init_val = 10;
	tak_mak gg(init_val);

	row_long_t orig_rr;
	row_long_t tmp_rr;
	row_long_t to_red;
	row_long_t diff_rr;
	row_long_t shrd_rr;

	orig_rr.set_cap((SOR_MAX_VARS_TEST * 2) + 4);
	tmp_rr.set_cap((SOR_MAX_VARS_TEST * 2) + 4);
	to_red.set_cap((SOR_MAX_VARS_TEST * 2) + 4);
	diff_rr.set_cap((SOR_MAX_VARS_TEST * 2) + 4);
	shrd_rr.set_cap((SOR_MAX_VARS_TEST * 2) + 4);

	for(long aa = 0; aa < SOR_NUM_ASSIGS; aa++){
		orig_rr.clear();
		tmp_rr.clear();
		to_red.clear();
		diff_rr.clear();
		shrd_rr.clear();

		long num_vars = gg.gen_rand_int32_ie(2, SOR_MAX_VARS_TEST);

		gen_clause(gg, orig_rr, SOR_MAX_VARS_ROW, num_vars);

		orig_rr.copy_to(tmp_rr);
		long cc = 0;
		long num_red = gg.gen_rand_int32_ie(0, tmp_rr.size());
		for(cc = 0; cc < num_red; cc++){
			long idx_red = gg.gen_rand_int32_ie(0, tmp_rr.size());
			long alp = tmp_rr.swap_pop(idx_red);
			to_red.push(alp);
		}
		to_red.mix_sort(cmp_canon_ids);
		tmp_rr.mix_sort(cmp_canon_ids);

		orig_rr.copy_to(diff_rr);

		//os << "BEFORE" << bj_eol;
		//os << "rr1=" << rr1 << bj_eol;
		//os << "rr2=" << rr2 << bj_eol;
		//os << "to_adh=" << to_adh << bj_eol;
		//os << "to_red=" << to_red << bj_eol;

		diff_rr.sorted_set_reduce(to_red, cmp_canon_ids);

		bool eq_sh = diff_rr.equal_to(tmp_rr);
		if(! eq_sh){
			os << "FAILED=" << bj_eol;
			os << "orig_rr=" << orig_rr << bj_eol;
			os << "to_red=" << to_red << bj_eol;
			os << "diff_rr=" << diff_rr << bj_eol;
			os << "tmp_rr=" << tmp_rr << bj_eol;
		}
		TEST_CK(eq_sh);

		DBG(
			bool r_eq = false;
			cmp_is_sub cmp_val;

			cmp_val = cmp_sorted_rows<long>(to_red, orig_rr, cmp_canon_ids, r_eq);
			TEST_CK(cmp_val == k_lft_is_sub);

			cmp_val = cmp_sorted_rows<long>(diff_rr, orig_rr, cmp_canon_ids, r_eq);
			TEST_CK(cmp_val == k_lft_is_sub);
		);

		diff_rr.sorted_set_shared(shrd_rr, to_red, cmp_canon_ids);
		TEST_CK(shrd_rr.is_empty());
		
		//os << "AFTER" << bj_eol;
		//os << "rr1=" << rr1 << bj_eol;
		//os << "rr2=" << rr2 << bj_eol;
		//getchar();
		

		os << CARRIAGE_RETURN << aa;
		os.flush();
		//os << "ALL_OK" << bj_eol;
	}