PropLogic Haskell package
PropLogic is a Haskell package for propositional (i.e. sentential) logic.
PropLogic package is published as version
0.9 (for "almost the first version") and its stability is labeled "experimental", because some non-essential features in the source code and gaps in the documentation are awaiting a final touch and upload.
(These missing parts are identified with a red comment below.)
With a little bit of luck however, none of these gaps affects the use or functionality of the package.
PropLogic package is that of a propositional algebra, implemented as a Haskell type class, with various "default" and "fast" instances. This is an introduction to the basic design and functionality of the package, aiming at Haskell programmers.
(The last part currently still has some unfinished pieces.)
The package comprises a couple of modules, each one in a separate Haskell (
hs) file, and each one comes with its own document file (
html), generated from the source code (with Haddock).
In particular, the DefaultPropLogic.html document in the list below is written so that it can also be used as an interactive introduction into propositional logic itself.
|summary of the whole package and its modules
|PropLogicCore.html (needs a makeover)
|abstract definition of "propositional formula" and "propositional algebra"
|DefaultPropLogic.html (some little pieces are still under construction)
|reconstruction of propositional logic, constructive introduction of normalizations and canonizations, and default instances of propositional algebras
|FastPropLogic.html (not in a proper state, yet)
|more efficient instances of propositional algebras
|PropLogicTest.html (not in a proper state, yet)
|PropLogicTest.hs (the general test for propositional algebras is not fully implemented, yet)
|random generators, tests and some other functions
|ordered lists and set-like operations on them
|Costack.hs (Costacks are still implemented as Haskell lists.)
|Haskell data structure for "concatenable stacks", i.e. lists, where concatenation is a trivial operation
|auxiliary module for plain text in two dimensions
|for the generation of the stand-alone program
Needless to say that comments are very appreciated. Please use the blog entry as the place for all discussion.