use pnets::{PlaceId, TransitionId};
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct Agglomeration {
pub new_place: PlaceId,
pub factor: isize,
pub deleted_places: Vec<(PlaceId, isize)>,
pub constant: isize,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct Reduction {
pub equals_to: Vec<(PlaceId, isize)>,
pub constant: isize,
pub deleted_places: Vec<(PlaceId, isize)>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct TransitionElimination {
pub deleted_transitions: Vec<TransitionId>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct InequalityReduction {
pub kept_places: Vec<(PlaceId, isize)>,
pub constant: isize,
pub deleted_places: Vec<(PlaceId, isize)>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum Modification {
Agglomeration(Agglomeration),
Reduction(Reduction),
TransitionElimination(TransitionElimination),
InequalityReduction(InequalityReduction),
}