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)
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)
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)
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)