def _remap_model_bwd(self, vars, model, k): retmodel = dict() for var in vars: for t in range(k+1): if TS.get_ptimed(var, k-t) in model: retmodel[TS.get_timed(var, t)] = model[TS.get_ptimed(var, k-t)] return retmodel
def _get_param_assignments(self, model, time, parameters, monotonic=True): p_ass = [] fwd = False for p in parameters: p_time = model[TS.get_ptimed(p, 0)] if p.symbol_type() == BOOL: if monotonic: if p_time == TRUE(): p_ass.append(p) else: p_ass.append(p if p_time == TRUE() else Not(p)) else: p_ass.append(EqualsOrIff(p, p_time)) p_ass = And(p_ass) self.region = simplify(Or(self.region, p_ass)) if self.models is None: self.models = [] self.models.append((model, time)) Logger.msg("+", 0, not (Logger.level(1))) self.cs_count += 1 Logger.log( "Found assignment \"%s\"" % (p_ass.serialize(threshold=100)), 1) return (p_ass, False)
def _get_param_assignments(self, model, time, parameters, monotonic=True): p_ass = [] fwd = False for p in parameters: # search the trace for any enabled faults ever_true = False for t in range(time + 1): p_time = model[TS.get_ptimed(p, 0)] if p.symbol_type() == BOOL: if p_time == TRUE(): ever_true = True break if ever_true: p_ass.append(p) elif not monotonic: p_ass.append(EqualsOrIff(p, FALSE())) p_ass = And(p_ass) self.region = simplify(Or(self.region, p_ass)) if self.models is None: self.models = [] self.models.append((model, time)) Logger.msg("+", 0, not (Logger.level(1))) self.cs_count += 1 Logger.log( "Found assignment \"%s\"" % (p_ass.serialize(threshold=100)), 1) return (p_ass, False)
def _remap_model_zz(self, vars, model, k): retmodel = dict([el for el in dict(model).items() if not TS.is_ptimed(el[0])]) for var in vars: for t in range(int(k/2)+1, k+1, 1): retmodel[TS.get_timed(var, t)] = model[TS.get_ptimed(var, k-t)] return retmodel
def _remap_model_zz(self, vars, model, k): retmodel = dict(model) for var in vars: for t in range(int(k / 2) + 1, k + 1, 1): retmodel[TS.get_timed(var, t)] = model[TS.get_ptimed(var, k - t)] return retmodel