Command line interface
======================
Some of ``python-nnf``'s functionality is exposed through a command line tool. It can be invoked as ``pynnf`` or ``python3 -m nnf``.
SAT solving
-----------
``pynnf sat`` tests whether a sentence is satisfiable, while ``pynnf sharpsat`` counts how many solutions it has.
Add ``-v`` to get extra information about the sentence and the running time.
Example::
$ pynnf sat uf20-01.cnf
SATISFIABLE
Beware that it's much slower than dedicated solvers like `MiniSat `_.
Sentence summary
----------------
``pynnf info`` shows basic information about a sentence.
Examples::
$ pynnf info uf20-01.cnf
Sentence is in CNF.
Variables: 20
Size: 360
Clauses: 90
Clause size: 3
$ pynnf info uf100-016.cnf.nnf
Sentence is decomposable.
Variables: 97
Size: 109
Visualizing sentences
---------------------
``pynnf draw`` converts sentences to a `DOT `_ representation, and either outputs that or feeds it to ``dot`` to immediately output an image.
Immediately outputting an image requires having ``dot`` installed. It's done when the output file has an image extension, or when a format is passed with the ``-f`` flag.
Examples::
$ pynnf draw uf20-01.nnf out.png # Create a PNG image
$ pynnf draw uf20-01.nnf out.gv # Create a DOT representation
$ pynnf draw uf20-01.nnf out.pdf # Create a PDF vector image
$ pynnf draw -f png uf20-01.nnf - | convert -flip - out.png # Output a PNG image to be processed by imagemagick
See ``pynnf draw --help`` for more information.