RenatoGeh / CNF.jl

A conjunctive normal form (CNF) manipulation library.

Repository from Github https://github.comRenatoGeh/CNF.jlRepository from Github https://github.comRenatoGeh/CNF.jl

CNF.jl

A library for manipulating Conjunctive Normal Form (CNF) formulae.

We implement:

  1. Basic logic operations
    • Conjunction ()
    • Disjunction ()
    • Negation (¬)
  2. Formula reduction (trim!)
  3. Formula restriction/partial evaluation (|)
  4. Formula evaluation (ϕ(), where ϕ is a CNF)
  5. Shannon's Decomposition (shannon, shannon!)
  6. Extracting formula scope (get_vars)
  7. Counting variables (count_vars)
  8. Formula equality (==, !=, is_⊤, is_⊥)
  9. Clause membership (, )
  10. Unique hash for equivalent CNFs (hash)
  11. String representation for CNFs (string)
  12. CNF copies (copy)
  13. Iterating over all valuations (valuations)
  14. String representation for instantiations and literals (inst_str, lit_str)
  15. Composing disjunctions or conjunctions out of a set of literals (and, or)
  16. Removing duplicate literals (rmdups!, rmdups)

About

A conjunctive normal form (CNF) manipulation library.

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Julia 100.0%