Module: Pione::PNML::InvalidArcElimination
- Defined in:
- lib/pione/pnml/invalid-arc-elimination.rb
Overview
InvalidArcElimination
is a net rewriting rule. This rule removes invalid
arcs from nets.
Class Method Summary collapse
-
.find_subjects(net, env) ⇒ Object
Find subjects(an invalid arc) by following criteria.
-
.rewrite(net, subjects, env) ⇒ Object
Rewrite the net by eliminating isolated node.
Class Method Details
.find_subjects(net, env) ⇒ Object
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.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# 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) ⇒ Object
Rewrite the net by eliminating isolated node.
33 34 35 36 37 38 |
# 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 |