code: def apply(self, chart, grammar, edge1):
      fr = self._fundamental_rule
      if edge1.is_incomplete():
          # edge1 = left_edge; edge2 = right_edge
          for edge2 in chart.select(
              start=edge1.end(), is_complete=True, lhs=edge1.nextsym()
          ):
              yield from fr.apply(chart, grammar, edge1, edge2)
      else:
          # edge2 = left_edge; edge1 = right_edge
          for edge2 in chart.select(
              end=edge1.start(), is_complete=False, nextsym=edge1.lhs()
          ):
              yield from fr.apply(chart, grammar, edge2, edge1)
  
imports: import random
  from functools import reduce
  from nltk.grammar import PCFG, Nonterminal
  from nltk.parse.api import ParserI
  from nltk.parse.chart import AbstractChartRule, Chart, LeafEdge, TreeEdge
  from nltk.tree import ProbabilisticTree, Tree
label_desc: Use image node_id 1 for calling the SingleEdgeProbabilisticFundamentalRule obj's underlying member method code with example usage: obj.apply(chart, grammar, edge1) without return types