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

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