Esempio n. 1
0
 def test_generate_invar_problem(self):
     # PROBLEM = BASE STEP & INDUCTION
     for prop in prop_database():
         expr    = utils.make_nnf_boolean_wff(prop.expr)
         problem = invarspec.generate_invar_problem(self.fsm, expr)
     
         manual  = (invarspec.generate_base_step(self.fsm, expr) & 
                    invarspec.generate_inductive_step(self.fsm, expr))
        
         self.assertEqual(problem.to_cnf().vars_list, manual.to_cnf().vars_list)
Esempio n. 2
0
    def test_generate_invar_problem(self):
        # PROBLEM = BASE STEP & INDUCTION
        for prop in prop_database():
            expr = utils.make_nnf_boolean_wff(prop.expr)
            problem = invarspec.generate_invar_problem(self.fsm, expr)

            manual = (invarspec.generate_base_step(self.fsm, expr)
                      & invarspec.generate_inductive_step(self.fsm, expr))

            self.assertEqual(problem.to_cnf().vars_list,
                             manual.to_cnf().vars_list)
Esempio n. 3
0
 def test_generate_inductive_step(self):
     # INDUCT = (P0 and R01) -> P1
     for prop in prop_database():
         expr  = utils.make_nnf_boolean_wff(prop.expr)
         gen   = invarspec.generate_inductive_step(self.fsm, expr)
     
         # 
         model = BmcModel()
         r01   = model.unrolling(0, 1)
         # recall: the prop has to be shifted to time 0
         p     = expr.to_be(self.fsm.encoding)
         p0    = self.fsm.encoding.shift_to_time(p, 0)
         p1    = self.fsm.encoding.shift_to_time(p, 1)
         manual= (p0 & r01).imply(p1)
         self.assertEqual(gen.to_cnf().vars_list, manual.to_cnf().vars_list)
Esempio n. 4
0
    def test_generate_inductive_step(self):
        # INDUCT = (P0 and R01) -> P1
        for prop in prop_database():
            expr = utils.make_nnf_boolean_wff(prop.expr)
            gen = invarspec.generate_inductive_step(self.fsm, expr)

            #
            model = BmcModel()
            r01 = model.unrolling(0, 1)
            # recall: the prop has to be shifted to time 0
            p = expr.to_be(self.fsm.encoding)
            p0 = self.fsm.encoding.shift_to_time(p, 0)
            p1 = self.fsm.encoding.shift_to_time(p, 1)
            manual = (p0 & r01).imply(p1)
            self.assertEqual(gen.to_cnf().vars_list, manual.to_cnf().vars_list)