# File truthtable.rb, line 299
  def formula
    input_names = all_names
    input_names_ary = sort_names(input_names.keys)
    tbl = {}
    @table.each {|inputs, output|
      return output.to_s if inputs.empty?
      inputs2 = [:x] * input_names.length
      inputs.each {|name, input|
        inputs2[input_names[name]] = input ? 1 : 0
      }
      tbl[inputs2] = output ? 1 : 0
    }
    qm = QM.qm(tbl)
    r = []
    qm.each {|term|
      t = []
      num_dontcare = 0
      term.each_with_index {|v, i|
        if v == false
          t << ("!" + input_names_ary[i])
        elsif v == true
          t << input_names_ary[i]
        else # :x
          num_dontcare += 1
        end
      }
      if num_dontcare == term.length
        r << 'true'
      else
        r << t.join('&')
      end
    }
    return "false" if r.empty?
    r.join(' | ')
  end