Example #1
0
literalt smt1_propt::land(literalt a, literalt b)
{
  if(a==const_literal(true))
    return b;
  if(b==const_literal(true))
    return a;
  if(a==const_literal(false))
    return const_literal(false);
  if(b==const_literal(false))
    return const_literal(false);
  if(a==b)
    return a;

  out << "\n";

  literalt l=new_variable();

  out << ":assumption ; land" << "\n";
  out << " (iff " << smt1_literal(l) << " (and";
  out << " " << smt1_literal(a);
  out << " " << smt1_literal(b);
  out << "))" << "\n";

  return l;
}
Example #2
0
literalt smt1_propt::lselect(literalt a, literalt b, literalt c)
{
  if(a==const_literal(true))
    return b;
  if(a==const_literal(false))
    return c;
  if(b==c)
    return b;

  if(a==const_literal(false))
    return b;
  if(b==const_literal(false))
    return a;
  if(a==const_literal(true))
    return !b;
  if(b==const_literal(true))
    return !a;

  out << "\n";

  literalt l=new_variable();

  out << ":assumption ; lselect" << "\n";
  out << " (iff " << smt1_literal(l) << "(if_then_else "
      << smt1_literal(a) << " " << smt1_literal(b) << " "
      << smt1_literal(c) << ")" << "\n";

  return l;
}
Example #3
0
static variable_t*
parse_listitem(char *line, group_t *head) {
    int found_comma = false;
    variable_t *listitem;
    variable_t *subitem;
    char *p;

    listitem = new_variable(NULL, VT_LISTITEM);
    if (listitem == NULL)
        return NULL;

    p = line +1; /* skip past { */

    do {
        /* Skip whitespace before identifier */
        skip_whitespace(&p);
        subitem = parse_keyvalue(&p,head);
        add_to_listitem(listitem, subitem);
        skip_whitespace(&p);
        if (*p == ',') {
           p++;
           found_comma = true;
       }
       if (*p == '}') {
           p++;
           break;
        }
    } while( found_comma );

    return listitem;
}
Example #4
0
void Environment::add_variable(Type *t, std::string ident)
{
    MapPtr tip = this->env_v_tip();
    VarInfoPtr new_variable(new Environment::var_info);
    new_variable->type = t;
    (*tip)[ident] = new_variable;
}
Example #5
0
void Environment::add_field_to_cls(std::string & class_name, Type *type, std::string & ident)
{
    Environment::ClsInfoPtr this_class = this->get_class(class_name);
    Environment::VarInfoPtr new_variable(new Environment::var_info);
    new_variable->type = type;
    this_class->fields[ident] = new_variable;
}
Example #6
0
literalt cnft::land(const bvt &bv)
{
  if(bv.size()==0) return const_literal(true);
  if(bv.size()==1) return bv[0];
  if(bv.size()==2) return land(bv[0], bv[1]);

  forall_literals(it, bv)
    if(it->is_false())
      return *it;

  if(is_all(bv, const_literal(true)))
    return const_literal(true);

  bvt new_bv;

  eliminate_duplicates(bv, new_bv);

  bvt lits(2);
  literalt literal=new_variable();
  lits[1]=neg(literal);

  forall_literals(it, new_bv)
  {
    lits[0]=pos(*it);
    lcnf(lits);
  }
Example #7
0
static variable_t*
parse_keyvalue(char **ptr, group_t *head) {
    char *p = *ptr;
    char name[MAXIDLEN];
    variable_t* var;

    parse_identifier(&p, name, sizeof(name));

    skip_whitespace(&p);
    if (*p != '=') {
        fprintf(stderr, "%s:%d: No assignment detected!\n", __func__, lineno);
        return NULL;
    } else {
        p++;
    }
    skip_whitespace(&p);

    /* create variable, assume string */
    var = new_variable(name, VT_STRING);
    /* parse value of variable */
    parse_expr(&p, var, head);

    *ptr = p;
    return var;
}
Example #8
0
GSList *math_string_to_infix(gchar *string)
{
    GSList *infix = NULL;
    gchar *expr = string;

    for (; *expr; expr++) {
	if (strchr("+-/*^()", *expr)) {
	    infix = g_slist_append(infix, new_operator(*expr));
	} else if (strchr("@", *expr)) {
	    infix = g_slist_append(infix, new_variable(*expr));
	} else if (strchr("-.1234567890", *expr)) {
	    gfloat value;

	    sscanf(expr, "%f", &value);

	    while (*expr && strchr(".1234567890", *expr))
		expr++;
	    expr--;

	    infix = g_slist_append(infix, new_value(value));
	} else if (!isspace(*expr)) {
	    g_print("Invalid token: [%c][%d]\n", *expr, *expr);
	    math_infix_free(infix, TRUE);
	    return NULL;
	}
    }

    return infix;
}
Example #9
0
svariable_t *add_game_fixed(char *name, fixed_t *fixed)
{
  svariable_t *newvar;
  newvar = new_variable(&global_script, name, svt_pFixed);
  newvar->value.pFixed = fixed;

  return newvar;
}
Example #10
0
svariable_t *add_game_mobj(char *name, mobj_t **mo)
{
  svariable_t* newvar;
  newvar = new_variable(&global_script, name, svt_pMobj);
  newvar->value.pMobj = mo;

  return newvar;
}
Example #11
0
File: prop.cpp Project: Dthird/CBMC
bvt propt::new_variables(std::size_t width)
{
  bvt result;
  result.resize(width);
  for(std::size_t i=0; i<width; i++)
    result[i]=new_variable();
  return result;
}
Example #12
0
svariable_t *add_game_string(char *name, char **var)
{
  svariable_t* newvar;
  newvar = new_variable(&global_script, name, svt_pString);
  newvar->value.pS = var;

  return newvar;
}
Example #13
0
svariable_t *add_game_int(char *name, int *var)
{
  svariable_t* newvar;
  newvar = new_variable(&global_script, name, svt_pInt);
  newvar->value.pI = var;

  return newvar;
}
Example #14
0
string symbol_table::new_temporary(const string& type)
{
    char c_name[15];
    snprintf(c_name, 15, "T%d", temp_seed_++);
    
    symbol_entry ent;
    new_variable(string(c_name), type, ent);
    return string(c_name);
}
Example #15
0
int gettempvar()
{
    variable_t*v = find_variable(state, TEMPVARNAME);
    int i;
    if(v) 
        i = v->index;
    else
        i = new_variable(state->method, TEMPVARNAME, 0, 0, 0);
    as3_assert(i);
    return i;
}
Example #16
0
literalt z3_propt::lxor(literalt a, literalt b)
{
  if(a==const_literal(false)) return b;
  if(b==const_literal(false)) return a;
  if(a==const_literal(true)) return lnot(b);
  if(b==const_literal(true)) return lnot(a);

  literalt o=new_variable();
  lxor(a, b, o);
  return o;
}
Example #17
0
void varlist(int level) {
	if(token == ID) {
		debug(level,"VARLIST");
		new_variable(id_string, 0);
		debug_lex();

		while(token == TK_COMMA){
			debug_lex();

			if(token == ID) {
				new_variable(id_string, 0);
				debug_lex();

			} else {
				/* syntax error id expected */
				syntax_error("ID expected");
			}
		}

	}
}
Example #18
0
/* Libera el registro AL y lo retorna */
Element *get_free_AL() {	
	Element *ret = (Element *)malloc(sizeof(Element));
	
	if (state[0] != 0) {
		Element *aux = (Element *)malloc(sizeof(Element));
		aux = new_variable();
		free_AL(aux);
		state[1] = 0;
	}
	ret = load_register(0);
	return ret;
}
Example #19
0
literalt z3_propt::land(literalt a, literalt b)
{
  if(a==const_literal(true)) return b;
  if(b==const_literal(true)) return a;
  if(a==const_literal(false)) return const_literal(false);
  if(b==const_literal(false)) return const_literal(false);
  if(a==b) return a;

  literalt o=new_variable();
  land(a, b, o);
  return o;
}
Example #20
0
void symbol_table::new_func_params(const vector<func_arg>& args)
{
    // add parameter as variable
    int offset = 0;
    for (auto arg : args)
    {
        symbol_entry arg_ent;
        new_variable(arg.name, arg.type, arg_ent);
        arg_ent->second.place("ebp");
        arg_ent->second.offset(offset);
        arg_ent->second.is_parameter(true);
        offset += size_of(arg.type);
    }
}
Example #21
0
svariable_t *new_function(char *name, void (*handler)() )
{
  svariable_t *newvar;

  // create the new variable for the function
  // add to the global script
  
  newvar = new_variable(&global_script, name, svt_function);
  
  // add neccesary info
  
  newvar->value.handler = handler;

  return newvar;
}
Example #22
0
literalt boolector_propt::lxor(literalt a, literalt b)
{
  if(a==const_literal(false)) return b;
  if(b==const_literal(false)) return a;
  if(a==const_literal(true)) return lnot(b);
  if(b==const_literal(true)) return lnot(a);

  literalt l=new_variable();
  BtorExp *result;

  result = boolector_xor(boolector_ctx, boolector_literal(a), boolector_literal(b));
  boolector_assert(boolector_ctx, boolector_iff(boolector_ctx, boolector_literal(l), result));


  return l;
}
Example #23
0
literalt smt1_propt::lor(const bvt &bv)
{
  out << "\n";

  literalt l=new_variable();

  out << ":assumption ; lor" << "\n";
  out << " (iff " << smt1_literal(l) << " (or";

  forall_literals(it, bv)
    out << " " << smt1_literal(*it);

  out << "))" << "\n";

  return l;
}
Example #24
0
literalt smt1_propt::land(const bvt &bv)
{
  out << std::endl;

  literalt l=new_variable();

  out << ":assumption ; land" << std::endl;
  out << " (iff " << smt1_literal(l) << " (and";
  
  forall_literals(it, bv)
    out << " " << smt1_literal(*it);

  out << "))" << std::endl;

  return l;
}
Example #25
0
/* Libera un registro que no sea AH o AL y lo retorna	*
 * Siempre se retorna un registro, haya o no uno libre 	*
 * El registro quedara marcado como libre 				*/
Element *get_free_notA() {
	int i = N - 1;
	Element *ret = (Element *)malloc(sizeof(Element));
	
	while (i > 1 && state[i] == 1) i--;
	if (i > 1) {
		/* Hay un registro libre, se lo retorna */
		ret = load_register(i);
	} else {
		/* No hay registros libres, dar de alta una nueva variable en la tabla de simbolos
		 * y liberar un registro. */
		ret = free_any_notA(new_variable());
		state[ret->value] = 0;
	}
	return ret;
}
literalt qbf_bdd_coret::lor(literalt a, literalt b)
{
  literalt nl = new_variable();
  
  std::cout << "LOR2" << std::endl;
  
  BDD abdd(*bdd_variable_map[a.var_no()]);
  BDD bbdd(*bdd_variable_map[b.var_no()]);
  
  if(a.sign()) abdd = ~abdd;
  if(b.sign()) bbdd = ~bbdd;
  
  *bdd_variable_map[nl.var_no()] |= abdd | bbdd;
  
  return nl;
}
Example #27
0
        // create a new label. pass the location inside the script
svariable_t *new_label(char *labelptr)
{
  svariable_t *newlabel;   // labels are stored as variables
  char labelname[128];
  char *temp, *temp2;
  
  // copy the label name from the script up to ':'
  for(temp=labelptr, temp2 = labelname; *temp!=':'; temp++, temp2++)
    *temp2 = *temp;
  *temp2 = '\0';  // end string
  
  newlabel = new_variable(current_script, labelname, svt_label);
  
  // put neccesary data in the label
  
  newlabel->value.labelptr = labelptr;
  
  return newlabel;
}
Example #28
0
literalt smt1_propt::lxor(literalt a, literalt b)
{
  if(a==const_literal(false)) return b;
  if(b==const_literal(false)) return a;
  if(a==const_literal(true)) return lnot(b);
  if(b==const_literal(true)) return lnot(a);

  out << std::endl;

  literalt l=new_variable();

  out << ":assumption ; lxor" << std::endl;
  out << " (iff " << smt1_literal(l) << " (xor";
  out << " " << smt1_literal(a);
  out << " " << smt1_literal(b);
  out << "))" << std::endl;

  return l;
}
Example #29
0
literalt smt1_propt::lxor(const bvt &bv)
{
  if(bv.size()==0) return const_literal(false);
  if(bv.size()==1) return bv[0];

  out << std::endl;

  literalt l=new_variable();

  out << ":assumption ; lxor" << std::endl;
  out << " (iff " << smt1_literal(l) << " (xor";

  forall_literals(it, bv)
    out << " " << smt1_literal(*it);

  out << "))" << std::endl;

  return l;
}
Example #30
0
literalt boolector_propt::lor(const bvt &bv)
{
  literalt l=new_variable();
  u_int size=bv.size()+1;
  BtorExp *args[size], *result;

  for(unsigned int i=0; i<bv.size(); i++)
  {
	args[i] = boolector_literal(bv[i]);

    if (i==1)
      result = boolector_or(boolector_ctx, args[0], args[1]);
    else if (i>1)
      result = boolector_or(boolector_ctx, result, args[i]);
  }

  boolector_assert(boolector_ctx, boolector_iff(boolector_ctx, boolector_literal(l), result));

  return l;
}