module Pione::PNML::InvalidArcElimination
‘InvalidArcElimination` is a net rewriting rule. This rule removes invalid arcs from nets.
Public Class Methods
find_subjects(net, env)
click to toggle source
Find subjects(an invalid arc) by following criteria.
-
There is a arc.
-
It should connect source place and target transition, or source transition and target place.
# File lib/pione/pnml/invalid-arc-elimination.rb, line 11 def self.find_subjects(net, env) net.arcs.each do |arc| source_transition = net.find_transition(arc.source_id) source_place = net.find_place(arc.source_id) target_transition = net.find_transition(arc.target_id) target_place = net.find_place(arc.target_id) # arc from transition to place cond1 = not(source_transition.nil?) && not(target_place.nil?) # arc from place to transition cond2 = not(source_place.nil?) && not(target_transition.nil?) unless cond1 or cond2 return [arc] end end return nil end
rewrite(net, subjects, env)
click to toggle source
Rewrite the net by eliminating isolated node.
# File lib/pione/pnml/invalid-arc-elimination.rb, line 33 def self.rewrite(net, subjects, env) arc = subjects.first # eliminate net.arcs.delete(arc) end