use crate::{semantics::semantics::Semantics, techniques::livelock::IsPartOfLivelock};
use ebi_objects::{
anyhow::Result, ebi_arithmetic::Fraction, ebi_objects::labelled_petri_net::TransitionIndex,
};
pub trait StochasticSemantics:
Semantics<SemState = <Self as StochasticSemantics>::StoSemState>
+ IsPartOfLivelock<LivState = <Self as StochasticSemantics>::StoSemState>
{
type StoSemState;
fn get_transition_weight(
&self,
state: &<Self as StochasticSemantics>::StoSemState,
transition: TransitionIndex,
) -> Result<&Fraction>;
fn get_total_weight_of_enabled_transitions(
&self,
state: &<Self as StochasticSemantics>::StoSemState,
) -> Result<Fraction>;
}