class_docstr: ai - prover of logic rules
  
  given a set of initial rules, Prover tries to prove all possible rules
  which follow from given premises.
  
  As a result proved_rules are always either in one of two forms: alpha or
  beta:
  
  Alpha rules
  -----------
  
  This are rules of the form::
  
    a -> b & c & d & ...
  
  
  Beta rules
  ----------
  
  This are rules of the form::
  
    &(a,b,...) -> c & d & ...
  
  
  i.e. beta rules are join conditions that say that something follows when
  *several* facts are true at the same time.
docstr: split proved rules into alpha and beta chains
docstr_tok: ["split","proved","rules","into","alpha","and","beta","chains"]
code: def split_alpha_beta(self):
      """split proved rules into alpha and beta chains"""
      rules_alpha = []  # a      -> b
      rules_beta = []  # &(...) -> b
      for a, b in self.proved_rules:
          if isinstance(a, And):
              rules_beta.append((a, b))
          else:
              rules_alpha.append((a, b))
      return rules_alpha, rules_beta
  
imports: from collections import defaultdict
  from typing import Iterator
  from .logic import Logic, And, Or, Not
label_desc: Use image node_id 2 for calling the Prover obj's underlying member method code with example usage: obj.split_alpha_beta() and returns: rules_alpha,  rules_beta