Class TruthTable
In: truthtable.rb
Parent: Object

truth table and formula generator from Ruby block

Author

Tanaka Akira <akr@fsij.org>

Feature

  • generate a truth table from a given block which contains logical formula written in Ruby.
  • generate a formula from the table:
    • minimal one (obtained by Quine-McCluskey algorithm)
    • disjunctive normal form
    • conjunctive normal form

Usage

  • feature name for require
     require 'truthtable'
    
  • simple operators
     p TruthTable.new {|v| !v[0] }.formula        #=> "!v[0]"
     p TruthTable.new {|v| v[0] & v[1] }.formula  #=> "v[0]&v[1]"
     p TruthTable.new {|v| v[0] | v[1] }.formula  #=> "v[0] | v[1]"
     p TruthTable.new {|v| v[0] ^ v[1] }.formula  #=> "!v[0]&v[1] | v[0]&!v[1]"
     p TruthTable.new {|v| v[0] == v[1] }.formula #=> "!v[0]&!v[1] | v[0]&v[1]"
    
  • shortcuts, && and ||, are also usable but converted to & and |
     p TruthTable.new {|v| v[0] && v[1] }.formula #=> "v[0]&v[1]"
     p TruthTable.new {|v| v[0] || v[1] }.formula #=> "v[0] | v[1]"
    
  • actually any expression (without side effect)
     p TruthTable.new {|v| v[0] ? !v[1] : v[1] }.formula #=> "!v[0]&v[1] | v[0]&!v[1]"
    
  • any number of inputs
     p TruthTable.new {|v| [v[0], v[1], v[2], v[3]].grep(true).length <= 3 }.formula
     #=> "!v[0] | !v[1] | !v[2] | !v[3]"
    

Methods

cnf   dnf   formula   new   test  

Public Class methods

Public Instance methods

obtains a formula in conjunctive normal form.

obtains a formula in disjunctive normal form.

obtains a minimal formula using Quine-McCluskey algorithm.

[Validate]