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
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 """ # DFTRES only supports Markovian models with purely spurious nondeterminism if not (benchmark.is_dtmc() or benchmark.is_ctmc() or benchmark.is_ma()): return False # User-defined functions (the "call" JANI operator) are not supported if "functions" in benchmark.get_jani_features(): return False # Only time-accumulating or time-instant reward queries supported_queries = [ "prob-reach", "prob-reach-time-bounded", "steady-state-prob" ] if not benchmark.get_property_type() in supported_queries: return False # No support for real variables yet real_vars = [ v for v in benchmark.load_jani_file()["variables"] \ if v["type"] == "real"] if 0 < len(real_vars): return False # Some MAs have not-obviously-spurious nondeterminism and can't be simulated unsupported_models = [ "bitcoin-attack", ] # The arithmetic operations of some models aren't supported unsupported_models += [ "majority", "philosophers", "speed-ind", "dpm", "readers-writers" ] if benchmark.get_model_short_name() in unsupported_models: return False # All other models are supported if ONLY_QCOMP_2020_BENCHMARKS: return benchmark.get_identifier() in QComp2020_benchmarks else: return True