module Pione::PNML::IsolatedElementElimination

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

Public Class Methods

find_subjects(net, env) click to toggle source

Find subjects(an isolated element) by following criteria.

  • There is a place or transition.

  • It has no arcs.

# 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) click to toggle source

Rewrite the net by eliminating isolated node.

# 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