Beispiel #1
0
	// Replace (t1 - t2) by (t1 + (-1) * t2)
	const FOBDDTerm* rewriteBinaryMinus(const FOBDDFuncTerm *& functerm) {
		auto plus = get(STDFUNC::ADDITION);
		plus = plus->disambiguate(functerm->func()->sorts(), NULL);
		Assert(plus!=NULL);
		auto rhs = functerm->args(1);
		auto minusoneterm = _manager->getDomainTerm(rhs->sort(), createDomElem(-1));
		auto times = get(STDFUNC::PRODUCT);
		times = times->disambiguate(std::vector<Sort*>(3, rhs->sort()), NULL);
		auto newprodterm = _manager->getFuncTerm(times, { minusoneterm, rhs });
		auto newterm = _manager->getFuncTerm(plus, { functerm->args(0), newprodterm });
		return newterm->acceptchange(this);
	}
Beispiel #2
0
vector<DisambiguatedData> Disambiguator::Disambiguate(
    const vector<Token>& tokens)
{
    vector<PredisambiguatedData> predisambiguated
        = featureCalculator->CalculateFeatures(tokens);
    return disambiguate(predisambiguated);
}
Beispiel #3
0
	// Replace -t by (-1)*t
	const FOBDDTerm* rewriteUnaryMinus(const FOBDDFuncTerm *& functerm) {
		auto minusoneterm = _manager->getDomainTerm(functerm->args(0)->sort(), createDomElem(-1));
		auto times = get(STDFUNC::PRODUCT);
		times = times->disambiguate(std::vector<Sort*>(3, functerm->args(0)->sort()), NULL);
		auto newterm = _manager->getFuncTerm(times, { minusoneterm, functerm->args(0) });
		return newterm->acceptchange(this);
	}
Beispiel #4
0
void do_write( string file, string buf ) {
	string fname = DIR + file + ".hlp";
	string skill = file;
	int dot;
	rm(fname);
	write_file( fname, buf );
	// check for aliases that need making
	while( (dot = member(file,'.')) != -1 )
		file = file[dot+1..];
	if( file != skill ) {
		string tmp, alias = "!"+DIR+skill;
		fname = DIR + file + ".hlp";
		if( !sizeof(get_dir(fname)) )
			write_file( fname, alias );
		else {
			tmp = read_file(fname);
		    if( tmp && tmp != alias ) {
				rm(fname);
				write_file( fname, disambiguate(file) );
			}
		}
	}
}