Skip to content

A set of tools for processing logic expressions.

License

Notifications You must be signed in to change notification settings

civol/logic_tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LogicTools

LogicTools is a set of command-line tools for processing logic expressions. The tools include:

  • simplify_qm: for simplifying a logic expression.
  • simplify_es: for simplifying a logic expression (much more efficient than simplify_qm).
  • std_conj: for computing the conjunctive normal form of a logic expression.
  • std_dij: for computing the disjunctive normal form a of logic expression.
  • truth_tbl: for generating the truth table of a logic expression.
  • is_tautology: for checking if a logic expression is a tautology or not.
  • complement: for computing the complement of a logic expression.

Installation

Add this line to your application's Gemfile:

gem 'logic_tools'

And then execute:

$ bundle

Or install it yourself as:

$ gem install logic_tools

Usage

LogicTools is a command line-based set of tool. Each tool is used as follows for processing a single expression:

$ tool_name "single logical expression"

Multiple expressions stored into a file can also be processed as follows:

$ tool_name -f <filename>

The logical expression is an expression where:

  • a logical variable is represented by a single alphabetical character (hence there is in total 56 possible variables), or a string of alphabetical characters enclosed by curly brackets.
  • a logical OR is represented by a '+' character;
  • a logical AND is represented by a '.' character (but it can be omitted);
  • a logical NOT is represented by a '~' or a '!' character;
  • opening and closing parenthesis are represented by, respectively, '(' and ')' characters.

Important notice:

  • the priority among logical operators is as follows: NOT > AND > OR
  • logical expressions must be put between quotes (the '"' character).

For instance the followings are valid logical expression using the a,b and c variables:

"ab+ac"
"a.b.c"
"a+b+!c"
"a~(b+~c)"
"{foo}+{bar}"

Finally, here are a few examples of LogicTool usage:

  • simplifying the expression a+ab:

      $ simplify_qm "a+ab"
      -> a
    
  • compute the conjunctive normal form of the expression a+ab:

      $ std_conj "a+ab"
      -> ab+a~b
    
  • compute the disjunctive normal form of the expression a+ab:

      $ std_dij "a+ab"
      -> (a+b)(a+~b)
    
  • compute the truth table of the expression a+ab:

      $ truth_tbl "a+ab"
      -> a b
         0 0 0
         0 1 0
         1 0 1
         1 1 1
    

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/civol/logic\_tools.

License

The gem is available as open source under the terms of the MIT License.

To do

  • Update the code of simplify_qm so that it uses the optimized LogicTool::Cover class.

About

A set of tools for processing logic expressions.

Resources

License

Stars

Watchers

Forks

Packages

No packages published