def toYicesTermIncrementally(self, level): assert level in range(1, 4) retval = [] if level >= 1: yterm = self.toYicesTermDistinct(height=None) retval.append(yterm) if level >= 2: yterm = self.toYicesTermAscending(height=None) retval.append(yterm) return Terms.yand(retval)
def model2term(model): termlist = [] for i in range(9): for j in range(9): if self.game.puzzle.get_cell(i, j) is None: val = model.get_value(self.variables[i][j]) var = self.variables[i][j] value = self.numerals[val] termlist.append(Terms.arith_eq_atom(var, value)) return Terms.yand(termlist)
def constrainVariable(maxValue): if maxValue is not None: ymax = None if maxValue == SymbolTable.MAXTIME: ymax = Terms.get_by_name(SymbolTable.MAXTIME) else: ymax = YicesSignature.integer(maxValue) yterms = [ Terms.arith_leq_atom(YicesSignature.integer(0), self.yices_term), Terms.arith_leq_atom(self.yices_term, ymax) ] return Terms.yand(yterms) return Terms.arith_leq_atom(YicesSignature.integer(0), self.yices_term)
def toYicesTermNondecreasing(self, height): retval = [] args = [] varlist = self.varlist[0:height] for v in varlist: yv = v.toYicesTerm() args.append(yv) for i, yarg in enumerate(args): if i > 0: yterm = Terms.arith_leq_atom(args[i - 1], yarg) assert yterm is not None retval.append(yterm) return Terms.yand(retval)
def _toYicesTermQF(self, maxTimeStamp): variables = [ v.yices_term for v in self.bv ] antecedent = self.event.yices_term consequent = self.constraint.yices_term conjuncts = [] body = Terms.ite(antecedent, consequent, Terms.TRUE) #Terms.print_to_fd(1, body, 120, 40, 0) self.init_space(maxTimeStamp) while not self.space.finished(): point = self.space.nextElement() values = [] for index, elem in enumerate(point): values.append(SymbolTable.get_type_element_as_yices_term(elem, self.var_types[index])) conjunct = Terms.subst(variables, values, body) #Terms.print_to_fd(1, conjunct, 120, 40, 0) conjuncts.append(conjunct) return Terms.yand(conjuncts)
def model2term(model): termlist = [] #do the times for tvar in YicesSignature.get_vars(SymbolTable.TIME): ytvar = tvar.yices_term ytval = model.get_value_as_term(ytvar) termlist.append(Terms.arith_eq_atom(ytvar, ytval)) #do the points for ptvar in YicesSignature.get_vars(SymbolTable.PT2): ytvar = ptvar.yices_term ytval = model.get_value(ytvar) termlist.append(Terms.eq(ytvar, ytval)) #do the stages # FIXME: more stuff needed here return Terms.yand(termlist)