Beispiel #1
0
 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)
Beispiel #2
0
 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)
Beispiel #3
0
        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)
Beispiel #4
0
 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)
Beispiel #5
0
 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)