Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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