Module: Pione::PNML::IsolatedElementElimination

Defined in:
lib/pione/pnml/isolated-element-elimination.rb

Overview

IsolatedElementElimination is a net rewriting rule. This rule removes isolated elememts from nets.

Class Method Summary collapse

Class Method Details

.find_subjects(net, env) ⇒ Object

Find subjects(an isolated element) by following criteria.

  • There is a place or transition.
  • It has no arcs.


10
11
12
13
14
15
16
17
18
19
20
# File 'lib/pione/pnml/isolated-element-elimination.rb', line 10

def self.find_subjects(net, env)
  (net.places + net.transitions).each do |node|
    input_arcs = net.find_all_arcs_by_source_id(node.id)
    output_arcs = net.find_all_arcs_by_target_id(node.id)
    if input_arcs.empty? and output_arcs.empty?
      return [node]
    end
  end

  return nil
end

.rewrite(net, subjects, env) ⇒ Object

Rewrite the net by eliminating isolated node.



23
24
25
26
27
28
29
# File 'lib/pione/pnml/isolated-element-elimination.rb', line 23

def self.rewrite(net, subjects, env)
  subjects.each do |node|
    # eliminate the node
    net.transitions.delete(node)
    net.places.delete(node)
  end
end