def is_benchmark_supported(benchmark: Benchmark): """returns True if the provided benchmark is supported by the tool and if the given benchmark should appear on the generated benchmark list""" # list of input models ePMC does not support if benchmark.is_pta(): # PTAs are not supported by ePMC return False if benchmark.is_ma(): # MAs are not supported by ePMC return False # if benchmark.get_short_property_type() == "S": # # Steady state properties are not supported by ePMC # return False if benchmark.is_prism_inf(): # CTMCs with infinite state-spaces are not supported by ePMC return False # list of properties ePMC supports : unbounded and time-bounded probabilistic reachability; steady-state probability if (not benchmark.is_unbounded_probabilistic_reachability()) and ( not benchmark.is_time_bounded_probabilistic_reachability()) and ( not benchmark.is_steady_state_probability()) and ( not benchmark.is_steady_state_reward()) and ( not benchmark.is_unbounded_expected_reward()): return False return True
def is_benchmark_supported(benchmark : Benchmark): """returns True if the provided benchmark is supported by the tool and if the given benchmark should appear on the generated benchmark list""" if benchmark.is_pta() and benchmark.is_prism(): # The PTAs from Prism are not supported because either # modest can't apply digital clocks semantic due to open constraints, or # modest puts branch-rewards on the models (these are not supported by Storm) return False if benchmark.is_prism_inf() and benchmark.is_ctmc(): # Storm does not support the CTMCs with infinite state-spaces return False # do not include models with state space largern than 50 Mio if benchmark.get_num_states_tweak() is not None and benchmark.get_num_states_tweak() > 50000000: return False # do not select dfts with a file parameter "R" that is set to true if benchmark.is_galileo(): for p in benchmark.get_file_parameters(): if p["name"] == "R" and p["value"] == True: return False if benchmark.is_ctmc(): return True return False
def is_benchmark_supported(benchmark: Benchmark): """returns True if the provided benchmark is supported by the tool and if the given benchmark should appear on the generated benchmark list""" if not benchmark.is_prism() or benchmark.is_prism_inf(): return False if benchmark.get_model_type() not in {"ctmc", "dtmc", "mdp"}: return False if benchmark.get_property_type() not in { "prob-reach", "prob-reach-step-bounded" }: return False if (benchmark.is_ctmc() and benchmark.get_property_type() == "prob-reach-step-bounded"): return False return True
def is_benchmark_supported(benchmark: Benchmark, trackId): """returns True if the provided benchmark is supported by the tool and if the given benchmark should appear on the generated benchmark list""" if benchmark.is_pta() and benchmark.is_prism(): # Some PTAs from Prism are not supported because either # modest can't apply digital clocks semantic due to open constraints, or # modest puts the time as branch-rewards on the models, which are not supported for time-bounded properties if benchmark.get_model_short_name() in [ "firewire-pta", "zeroconf-pta" ]: return "time-bounded" not in benchmark.get_property_type() else: return False if benchmark.is_prism_inf() and benchmark.is_ctmc(): # Storm does not support the CTMCs with infinite state-spaces return False # Time bounded queries on continuous time models can not be solved exactly if trackId in ["correct", "floating-point-correct"]: if "time-bounded" in benchmark.get_property_type() and ( benchmark.is_ma() or benchmark.is_ctmc()): return False return True