boolean-normal-forms 0.0.0.1 → 0.0.0.2
raw patch · 12 files changed
+67/−40 lines, 12 filesdep ~QuickCheckdep ~basedep ~condPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: QuickCheck, base, cond, containers
API changes (from Hackage documentation)
- Data.Algebra.Boolean.CNF.List: instance CoBoolean a => CoBoolean (CNF a)
- Data.Algebra.Boolean.CNF.List: instance CoBoolean1 CNF
- Data.Algebra.Boolean.CNF.List: instance Eq a => Eq (CNF a)
- Data.Algebra.Boolean.CNF.List: instance Functor CNF
- Data.Algebra.Boolean.CNF.List: instance Negable a => Boolean (CNF a)
- Data.Algebra.Boolean.CNF.List: instance Negable a => Negable (CNF a)
- Data.Algebra.Boolean.CNF.List: instance NormalForm CNF
- Data.Algebra.Boolean.CNF.List: instance Ord a => Ord (CNF a)
- Data.Algebra.Boolean.CNF.List: instance Read a => Read (CNF a)
- Data.Algebra.Boolean.CNF.List: instance Show a => Show (CNF a)
- Data.Algebra.Boolean.CNF.List: instance Typeable1 CNF
- Data.Algebra.Boolean.CNF.List: unCNF :: CNF a -> [[a]]
- Data.Algebra.Boolean.CNF.Set: instance (Ord a, Negable a) => Boolean (CNF a)
- Data.Algebra.Boolean.CNF.Set: instance (Ord a, Negable a) => Negable (CNF a)
- Data.Algebra.Boolean.CNF.Set: instance (Ord a, Read a) => Read (CNF a)
- Data.Algebra.Boolean.CNF.Set: instance CoBoolean a => CoBoolean (CNF a)
- Data.Algebra.Boolean.CNF.Set: instance CoBoolean1 CNF
- Data.Algebra.Boolean.CNF.Set: instance Eq a => Eq (CNF a)
- Data.Algebra.Boolean.CNF.Set: instance NormalForm CNF
- Data.Algebra.Boolean.CNF.Set: instance Ord a => Ord (CNF a)
- Data.Algebra.Boolean.CNF.Set: instance Show a => Show (CNF a)
- Data.Algebra.Boolean.CNF.Set: instance Typeable1 CNF
- Data.Algebra.Boolean.CNF.Set: unCNF :: CNF a -> Set (Set a)
- Data.Algebra.Boolean.CoBoolean: instance (CoBoolean f, CoBoolean g) => CoBoolean (Either f g)
- Data.Algebra.Boolean.CoBoolean: instance CoBoolean (Maybe a)
- Data.Algebra.Boolean.CoBoolean: instance CoBoolean Bool
- Data.Algebra.Boolean.CoBoolean: instance CoBoolean1 Maybe
- Data.Algebra.Boolean.DNF.List: instance CoBoolean a => CoBoolean (DNF a)
- Data.Algebra.Boolean.DNF.List: instance CoBoolean1 DNF
- Data.Algebra.Boolean.DNF.List: instance Eq a => Eq (DNF a)
- Data.Algebra.Boolean.DNF.List: instance Functor DNF
- Data.Algebra.Boolean.DNF.List: instance Negable a => Boolean (DNF a)
- Data.Algebra.Boolean.DNF.List: instance Negable a => Negable (DNF a)
- Data.Algebra.Boolean.DNF.List: instance NormalForm DNF
- Data.Algebra.Boolean.DNF.List: instance Ord a => Ord (DNF a)
- Data.Algebra.Boolean.DNF.List: instance Read a => Read (DNF a)
- Data.Algebra.Boolean.DNF.List: instance Show a => Show (DNF a)
- Data.Algebra.Boolean.DNF.List: instance Typeable1 DNF
- Data.Algebra.Boolean.DNF.List: unDNF :: DNF a -> [[a]]
- Data.Algebra.Boolean.DNF.Set: instance (Ord a, Negable a) => Boolean (DNF a)
- Data.Algebra.Boolean.DNF.Set: instance (Ord a, Negable a) => Negable (DNF a)
- Data.Algebra.Boolean.DNF.Set: instance (Ord a, Read a) => Read (DNF a)
- Data.Algebra.Boolean.DNF.Set: instance CoBoolean a => CoBoolean (DNF a)
- Data.Algebra.Boolean.DNF.Set: instance CoBoolean1 DNF
- Data.Algebra.Boolean.DNF.Set: instance Eq a => Eq (DNF a)
- Data.Algebra.Boolean.DNF.Set: instance NormalForm DNF
- Data.Algebra.Boolean.DNF.Set: instance Ord a => Ord (DNF a)
- Data.Algebra.Boolean.DNF.Set: instance Show a => Show (DNF a)
- Data.Algebra.Boolean.DNF.Set: instance Typeable1 DNF
- Data.Algebra.Boolean.DNF.Set: unDNF :: DNF a -> Set (Set a)
- Data.Algebra.Boolean.FreeBoolean: instance Boolean (FreeBoolean a)
- Data.Algebra.Boolean.FreeBoolean: instance CoBoolean a => CoBoolean (FreeBoolean a)
- Data.Algebra.Boolean.FreeBoolean: instance CoBoolean1 FreeBoolean
- Data.Algebra.Boolean.FreeBoolean: instance Eq a => Eq (FreeBoolean a)
- Data.Algebra.Boolean.FreeBoolean: instance Functor FreeBoolean
- Data.Algebra.Boolean.FreeBoolean: instance Negable (FreeBoolean a)
- Data.Algebra.Boolean.FreeBoolean: instance Ord a => Ord (FreeBoolean a)
- Data.Algebra.Boolean.FreeBoolean: instance Read a => Read (FreeBoolean a)
- Data.Algebra.Boolean.FreeBoolean: instance Show a => Show (FreeBoolean a)
- Data.Algebra.Boolean.FreeBoolean: instance Typeable1 FreeBoolean
- Data.Algebra.Boolean.NNF.Set: instance (Ord a, Negable a) => Boolean (NNF a)
- Data.Algebra.Boolean.NNF.Set: instance (Ord a, Negable a) => Negable (NNF a)
- Data.Algebra.Boolean.NNF.Set: instance (Ord a, Read a) => Read (NNF a)
- Data.Algebra.Boolean.NNF.Set: instance CoBoolean a => CoBoolean (NNF a)
- Data.Algebra.Boolean.NNF.Set: instance CoBoolean1 NNF
- Data.Algebra.Boolean.NNF.Set: instance Eq a => Eq (NNF a)
- Data.Algebra.Boolean.NNF.Set: instance NormalForm NNF
- Data.Algebra.Boolean.NNF.Set: instance Ord a => Ord (NNF a)
- Data.Algebra.Boolean.NNF.Set: instance Show a => Show (NNF a)
- Data.Algebra.Boolean.NNF.Set: instance Typeable1 NNF
- Data.Algebra.Boolean.NNF.Tree: instance CoBoolean a => CoBoolean (NNF a)
- Data.Algebra.Boolean.NNF.Tree: instance CoBoolean1 NNF
- Data.Algebra.Boolean.NNF.Tree: instance Eq a => Eq (NNF a)
- Data.Algebra.Boolean.NNF.Tree: instance Functor NNF
- Data.Algebra.Boolean.NNF.Tree: instance Negable a => Boolean (NNF a)
- Data.Algebra.Boolean.NNF.Tree: instance Negable a => Negable (NNF a)
- Data.Algebra.Boolean.NNF.Tree: instance NormalForm NNF
- Data.Algebra.Boolean.NNF.Tree: instance Ord a => Ord (NNF a)
- Data.Algebra.Boolean.NNF.Tree: instance Read a => Read (NNF a)
- Data.Algebra.Boolean.NNF.Tree: instance Show a => Show (NNF a)
- Data.Algebra.Boolean.NNF.Tree: instance Typeable1 NNF
- Data.Algebra.Boolean.Negable: instance (Negable a, Negable b) => Negable (Either a b)
- Data.Algebra.Boolean.Negable: instance (Negable a, Negable b) => Negable (a, b)
- Data.Algebra.Boolean.Negable: instance CoBoolean (Neg a)
- Data.Algebra.Boolean.Negable: instance CoBoolean1 Neg
- Data.Algebra.Boolean.Negable: instance Eq a => Eq (Neg a)
- Data.Algebra.Boolean.Negable: instance Functor Neg
- Data.Algebra.Boolean.Negable: instance Monoid m => Negable (Maybe m)
- Data.Algebra.Boolean.Negable: instance Negable (Neg a)
- Data.Algebra.Boolean.Negable: instance Negable Bool
- Data.Algebra.Boolean.Negable: instance Ord a => Ord (Neg a)
- Data.Algebra.Boolean.Negable: instance Read a => Read (Neg a)
- Data.Algebra.Boolean.Negable: instance Show a => Show (Neg a)
- Data.Algebra.Boolean.Negable: instance Typeable1 Neg
- Data.Algebra.Boolean.NormalForm: instance NormalForm FreeBoolean
+ Data.Algebra.Boolean.CNF.List: [unCNF] :: CNF a -> [[a]]
+ Data.Algebra.Boolean.CNF.List: instance Data.Algebra.Boolean.CoBoolean.CoBoolean a => Data.Algebra.Boolean.CoBoolean.CoBoolean (Data.Algebra.Boolean.CNF.List.CNF a)
+ Data.Algebra.Boolean.CNF.List: instance Data.Algebra.Boolean.CoBoolean.CoBoolean1 Data.Algebra.Boolean.CNF.List.CNF
+ Data.Algebra.Boolean.CNF.List: instance Data.Algebra.Boolean.Negable.Negable a => Data.Algebra.Boolean.Boolean (Data.Algebra.Boolean.CNF.List.CNF a)
+ Data.Algebra.Boolean.CNF.List: instance Data.Algebra.Boolean.Negable.Negable a => Data.Algebra.Boolean.Negable.Negable (Data.Algebra.Boolean.CNF.List.CNF a)
+ Data.Algebra.Boolean.CNF.List: instance Data.Algebra.Boolean.NormalForm.NormalForm Data.Algebra.Boolean.CNF.List.CNF
+ Data.Algebra.Boolean.CNF.List: instance Data.Foldable.Foldable Data.Algebra.Boolean.CNF.List.CNF
+ Data.Algebra.Boolean.CNF.List: instance GHC.Base.Functor Data.Algebra.Boolean.CNF.List.CNF
+ Data.Algebra.Boolean.CNF.List: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Algebra.Boolean.CNF.List.CNF a)
+ Data.Algebra.Boolean.CNF.List: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Algebra.Boolean.CNF.List.CNF a)
+ Data.Algebra.Boolean.CNF.List: instance GHC.Read.Read a => GHC.Read.Read (Data.Algebra.Boolean.CNF.List.CNF a)
+ Data.Algebra.Boolean.CNF.List: instance GHC.Show.Show a => GHC.Show.Show (Data.Algebra.Boolean.CNF.List.CNF a)
+ Data.Algebra.Boolean.CNF.Set: [unCNF] :: CNF a -> Set (Set a)
+ Data.Algebra.Boolean.CNF.Set: instance (GHC.Classes.Ord a, Data.Algebra.Boolean.Negable.Negable a) => Data.Algebra.Boolean.Boolean (Data.Algebra.Boolean.CNF.Set.CNF a)
+ Data.Algebra.Boolean.CNF.Set: instance (GHC.Classes.Ord a, Data.Algebra.Boolean.Negable.Negable a) => Data.Algebra.Boolean.Negable.Negable (Data.Algebra.Boolean.CNF.Set.CNF a)
+ Data.Algebra.Boolean.CNF.Set: instance (GHC.Classes.Ord a, GHC.Read.Read a) => GHC.Read.Read (Data.Algebra.Boolean.CNF.Set.CNF a)
+ Data.Algebra.Boolean.CNF.Set: instance Data.Algebra.Boolean.CoBoolean.CoBoolean a => Data.Algebra.Boolean.CoBoolean.CoBoolean (Data.Algebra.Boolean.CNF.Set.CNF a)
+ Data.Algebra.Boolean.CNF.Set: instance Data.Algebra.Boolean.CoBoolean.CoBoolean1 Data.Algebra.Boolean.CNF.Set.CNF
+ Data.Algebra.Boolean.CNF.Set: instance Data.Algebra.Boolean.NormalForm.NormalForm Data.Algebra.Boolean.CNF.Set.CNF
+ Data.Algebra.Boolean.CNF.Set: instance Data.Foldable.Foldable Data.Algebra.Boolean.CNF.Set.CNF
+ Data.Algebra.Boolean.CNF.Set: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Algebra.Boolean.CNF.Set.CNF a)
+ Data.Algebra.Boolean.CNF.Set: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Algebra.Boolean.CNF.Set.CNF a)
+ Data.Algebra.Boolean.CNF.Set: instance GHC.Show.Show a => GHC.Show.Show (Data.Algebra.Boolean.CNF.Set.CNF a)
+ Data.Algebra.Boolean.CoBoolean: instance (Data.Algebra.Boolean.CoBoolean.CoBoolean f, Data.Algebra.Boolean.CoBoolean.CoBoolean g) => Data.Algebra.Boolean.CoBoolean.CoBoolean (Data.Either.Either f g)
+ Data.Algebra.Boolean.CoBoolean: instance Data.Algebra.Boolean.CoBoolean.CoBoolean (GHC.Base.Maybe a)
+ Data.Algebra.Boolean.CoBoolean: instance Data.Algebra.Boolean.CoBoolean.CoBoolean GHC.Types.Bool
+ Data.Algebra.Boolean.CoBoolean: instance Data.Algebra.Boolean.CoBoolean.CoBoolean1 GHC.Base.Maybe
+ Data.Algebra.Boolean.DNF.List: [unDNF] :: DNF a -> [[a]]
+ Data.Algebra.Boolean.DNF.List: instance Data.Algebra.Boolean.CoBoolean.CoBoolean a => Data.Algebra.Boolean.CoBoolean.CoBoolean (Data.Algebra.Boolean.DNF.List.DNF a)
+ Data.Algebra.Boolean.DNF.List: instance Data.Algebra.Boolean.CoBoolean.CoBoolean1 Data.Algebra.Boolean.DNF.List.DNF
+ Data.Algebra.Boolean.DNF.List: instance Data.Algebra.Boolean.Negable.Negable a => Data.Algebra.Boolean.Boolean (Data.Algebra.Boolean.DNF.List.DNF a)
+ Data.Algebra.Boolean.DNF.List: instance Data.Algebra.Boolean.Negable.Negable a => Data.Algebra.Boolean.Negable.Negable (Data.Algebra.Boolean.DNF.List.DNF a)
+ Data.Algebra.Boolean.DNF.List: instance Data.Algebra.Boolean.NormalForm.NormalForm Data.Algebra.Boolean.DNF.List.DNF
+ Data.Algebra.Boolean.DNF.List: instance Data.Foldable.Foldable Data.Algebra.Boolean.DNF.List.DNF
+ Data.Algebra.Boolean.DNF.List: instance GHC.Base.Functor Data.Algebra.Boolean.DNF.List.DNF
+ Data.Algebra.Boolean.DNF.List: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Algebra.Boolean.DNF.List.DNF a)
+ Data.Algebra.Boolean.DNF.List: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Algebra.Boolean.DNF.List.DNF a)
+ Data.Algebra.Boolean.DNF.List: instance GHC.Read.Read a => GHC.Read.Read (Data.Algebra.Boolean.DNF.List.DNF a)
+ Data.Algebra.Boolean.DNF.List: instance GHC.Show.Show a => GHC.Show.Show (Data.Algebra.Boolean.DNF.List.DNF a)
+ Data.Algebra.Boolean.DNF.Set: [unDNF] :: DNF a -> Set (Set a)
+ Data.Algebra.Boolean.DNF.Set: instance (GHC.Classes.Ord a, Data.Algebra.Boolean.Negable.Negable a) => Data.Algebra.Boolean.Boolean (Data.Algebra.Boolean.DNF.Set.DNF a)
+ Data.Algebra.Boolean.DNF.Set: instance (GHC.Classes.Ord a, Data.Algebra.Boolean.Negable.Negable a) => Data.Algebra.Boolean.Negable.Negable (Data.Algebra.Boolean.DNF.Set.DNF a)
+ Data.Algebra.Boolean.DNF.Set: instance (GHC.Classes.Ord a, GHC.Read.Read a) => GHC.Read.Read (Data.Algebra.Boolean.DNF.Set.DNF a)
+ Data.Algebra.Boolean.DNF.Set: instance Data.Algebra.Boolean.CoBoolean.CoBoolean a => Data.Algebra.Boolean.CoBoolean.CoBoolean (Data.Algebra.Boolean.DNF.Set.DNF a)
+ Data.Algebra.Boolean.DNF.Set: instance Data.Algebra.Boolean.CoBoolean.CoBoolean1 Data.Algebra.Boolean.DNF.Set.DNF
+ Data.Algebra.Boolean.DNF.Set: instance Data.Algebra.Boolean.NormalForm.NormalForm Data.Algebra.Boolean.DNF.Set.DNF
+ Data.Algebra.Boolean.DNF.Set: instance Data.Foldable.Foldable Data.Algebra.Boolean.DNF.Set.DNF
+ Data.Algebra.Boolean.DNF.Set: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Algebra.Boolean.DNF.Set.DNF a)
+ Data.Algebra.Boolean.DNF.Set: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Algebra.Boolean.DNF.Set.DNF a)
+ Data.Algebra.Boolean.DNF.Set: instance GHC.Show.Show a => GHC.Show.Show (Data.Algebra.Boolean.DNF.Set.DNF a)
+ Data.Algebra.Boolean.FreeBoolean: instance Data.Algebra.Boolean.Boolean (Data.Algebra.Boolean.FreeBoolean.FreeBoolean a)
+ Data.Algebra.Boolean.FreeBoolean: instance Data.Algebra.Boolean.CoBoolean.CoBoolean a => Data.Algebra.Boolean.CoBoolean.CoBoolean (Data.Algebra.Boolean.FreeBoolean.FreeBoolean a)
+ Data.Algebra.Boolean.FreeBoolean: instance Data.Algebra.Boolean.CoBoolean.CoBoolean1 Data.Algebra.Boolean.FreeBoolean.FreeBoolean
+ Data.Algebra.Boolean.FreeBoolean: instance Data.Algebra.Boolean.Negable.Negable (Data.Algebra.Boolean.FreeBoolean.FreeBoolean a)
+ Data.Algebra.Boolean.FreeBoolean: instance Data.Foldable.Foldable Data.Algebra.Boolean.FreeBoolean.FreeBoolean
+ Data.Algebra.Boolean.FreeBoolean: instance GHC.Base.Functor Data.Algebra.Boolean.FreeBoolean.FreeBoolean
+ Data.Algebra.Boolean.FreeBoolean: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Algebra.Boolean.FreeBoolean.FreeBoolean a)
+ Data.Algebra.Boolean.FreeBoolean: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Algebra.Boolean.FreeBoolean.FreeBoolean a)
+ Data.Algebra.Boolean.FreeBoolean: instance GHC.Read.Read a => GHC.Read.Read (Data.Algebra.Boolean.FreeBoolean.FreeBoolean a)
+ Data.Algebra.Boolean.FreeBoolean: instance GHC.Show.Show a => GHC.Show.Show (Data.Algebra.Boolean.FreeBoolean.FreeBoolean a)
+ Data.Algebra.Boolean.NNF.Set: instance (GHC.Classes.Ord a, Data.Algebra.Boolean.Negable.Negable a) => Data.Algebra.Boolean.Boolean (Data.Algebra.Boolean.NNF.Set.NNF a)
+ Data.Algebra.Boolean.NNF.Set: instance (GHC.Classes.Ord a, Data.Algebra.Boolean.Negable.Negable a) => Data.Algebra.Boolean.Negable.Negable (Data.Algebra.Boolean.NNF.Set.NNF a)
+ Data.Algebra.Boolean.NNF.Set: instance (GHC.Classes.Ord a, GHC.Read.Read a) => GHC.Read.Read (Data.Algebra.Boolean.NNF.Set.NNF a)
+ Data.Algebra.Boolean.NNF.Set: instance Data.Algebra.Boolean.CoBoolean.CoBoolean a => Data.Algebra.Boolean.CoBoolean.CoBoolean (Data.Algebra.Boolean.NNF.Set.NNF a)
+ Data.Algebra.Boolean.NNF.Set: instance Data.Algebra.Boolean.CoBoolean.CoBoolean1 Data.Algebra.Boolean.NNF.Set.NNF
+ Data.Algebra.Boolean.NNF.Set: instance Data.Algebra.Boolean.NormalForm.NormalForm Data.Algebra.Boolean.NNF.Set.NNF
+ Data.Algebra.Boolean.NNF.Set: instance Data.Foldable.Foldable Data.Algebra.Boolean.NNF.Set.NNF
+ Data.Algebra.Boolean.NNF.Set: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Algebra.Boolean.NNF.Set.NNF a)
+ Data.Algebra.Boolean.NNF.Set: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Algebra.Boolean.NNF.Set.NNF a)
+ Data.Algebra.Boolean.NNF.Set: instance GHC.Show.Show a => GHC.Show.Show (Data.Algebra.Boolean.NNF.Set.NNF a)
+ Data.Algebra.Boolean.NNF.Tree: instance Data.Algebra.Boolean.CoBoolean.CoBoolean a => Data.Algebra.Boolean.CoBoolean.CoBoolean (Data.Algebra.Boolean.NNF.Tree.NNF a)
+ Data.Algebra.Boolean.NNF.Tree: instance Data.Algebra.Boolean.CoBoolean.CoBoolean1 Data.Algebra.Boolean.NNF.Tree.NNF
+ Data.Algebra.Boolean.NNF.Tree: instance Data.Algebra.Boolean.Negable.Negable a => Data.Algebra.Boolean.Boolean (Data.Algebra.Boolean.NNF.Tree.NNF a)
+ Data.Algebra.Boolean.NNF.Tree: instance Data.Algebra.Boolean.Negable.Negable a => Data.Algebra.Boolean.Negable.Negable (Data.Algebra.Boolean.NNF.Tree.NNF a)
+ Data.Algebra.Boolean.NNF.Tree: instance Data.Algebra.Boolean.NormalForm.NormalForm Data.Algebra.Boolean.NNF.Tree.NNF
+ Data.Algebra.Boolean.NNF.Tree: instance Data.Foldable.Foldable Data.Algebra.Boolean.NNF.Tree.NNF
+ Data.Algebra.Boolean.NNF.Tree: instance GHC.Base.Functor Data.Algebra.Boolean.NNF.Tree.NNF
+ Data.Algebra.Boolean.NNF.Tree: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Algebra.Boolean.NNF.Tree.NNF a)
+ Data.Algebra.Boolean.NNF.Tree: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Algebra.Boolean.NNF.Tree.NNF a)
+ Data.Algebra.Boolean.NNF.Tree: instance GHC.Read.Read a => GHC.Read.Read (Data.Algebra.Boolean.NNF.Tree.NNF a)
+ Data.Algebra.Boolean.NNF.Tree: instance GHC.Show.Show a => GHC.Show.Show (Data.Algebra.Boolean.NNF.Tree.NNF a)
+ Data.Algebra.Boolean.Negable: instance (Data.Algebra.Boolean.Negable.Negable a, Data.Algebra.Boolean.Negable.Negable b) => Data.Algebra.Boolean.Negable.Negable (Data.Either.Either a b)
+ Data.Algebra.Boolean.Negable: instance (Data.Algebra.Boolean.Negable.Negable a, Data.Algebra.Boolean.Negable.Negable b) => Data.Algebra.Boolean.Negable.Negable (a, b)
+ Data.Algebra.Boolean.Negable: instance Data.Algebra.Boolean.CoBoolean.CoBoolean (Data.Algebra.Boolean.Negable.Neg a)
+ Data.Algebra.Boolean.Negable: instance Data.Algebra.Boolean.CoBoolean.CoBoolean1 Data.Algebra.Boolean.Negable.Neg
+ Data.Algebra.Boolean.Negable: instance Data.Algebra.Boolean.Negable.Negable (Data.Algebra.Boolean.Negable.Neg a)
+ Data.Algebra.Boolean.Negable: instance Data.Algebra.Boolean.Negable.Negable GHC.Types.Bool
+ Data.Algebra.Boolean.Negable: instance GHC.Base.Functor Data.Algebra.Boolean.Negable.Neg
+ Data.Algebra.Boolean.Negable: instance GHC.Base.Monoid m => Data.Algebra.Boolean.Negable.Negable (GHC.Base.Maybe m)
+ Data.Algebra.Boolean.Negable: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Algebra.Boolean.Negable.Neg a)
+ Data.Algebra.Boolean.Negable: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Algebra.Boolean.Negable.Neg a)
+ Data.Algebra.Boolean.Negable: instance GHC.Read.Read a => GHC.Read.Read (Data.Algebra.Boolean.Negable.Neg a)
+ Data.Algebra.Boolean.Negable: instance GHC.Show.Show a => GHC.Show.Show (Data.Algebra.Boolean.Negable.Neg a)
+ Data.Algebra.Boolean.NormalForm: instance Data.Algebra.Boolean.NormalForm.NormalForm Data.Algebra.Boolean.FreeBoolean.FreeBoolean
+ Data.Algebra.Boolean.NormalForm: type NFConstraint nf a = ();
+ Data.Algebra.Boolean.NormalForm: type family NFConstraint nf a :: Constraint;
+ Data.Algebra.Boolean.NormalForm: }
- Data.Algebra.Boolean.CNF.Set: fromDoubleList :: Ord a => [[a]] -> CNF a
+ Data.Algebra.Boolean.CNF.Set: fromDoubleList :: (Ord a) => [[a]] -> CNF a
- Data.Algebra.Boolean.DNF.Set: fromDoubleList :: Ord a => [[a]] -> DNF a
+ Data.Algebra.Boolean.DNF.Set: fromDoubleList :: (Ord a) => [[a]] -> DNF a
- Data.Algebra.Boolean.NormalForm: class CoBoolean1 nf => NormalForm nf where type family NFConstraint nf a :: Constraint type instance NFConstraint nf a = ()
+ Data.Algebra.Boolean.NormalForm: class CoBoolean1 nf => NormalForm nf where type NFConstraint nf a :: Constraint type NFConstraint nf a = () where {
Files
- boolean-normal-forms.cabal +23/−17
- src/Data/Algebra/Boolean/CNF/List.hs +4/−2
- src/Data/Algebra/Boolean/CNF/Set.hs +4/−2
- src/Data/Algebra/Boolean/DNF/List.hs +4/−2
- src/Data/Algebra/Boolean/DNF/Set.hs +4/−2
- src/Data/Algebra/Boolean/FreeBoolean.hs +4/−2
- src/Data/Algebra/Boolean/NNF/Set.hs +4/−2
- src/Data/Algebra/Boolean/NNF/Tree.hs +4/−2
- tests/BooleanModelLaws.hs +16/−0
- tests/CNFSet.hs +0/−3
- tests/DNFSet.hs +0/−3
- tests/NNFSet.hs +0/−3
boolean-normal-forms.cabal view
@@ -1,5 +1,5 @@ name: boolean-normal-forms-version: 0.0.0.1+version: 0.0.0.2 synopsis: Boolean normal form: NNF, DNF & CNF description: The provided types that might be useful in symbolic manipulation of propositional logic expressions. license: MIT@@ -9,10 +9,20 @@ copyright: © Oleg Grenrus 2014 category: Data build-type: Simple-cabal-version: >=1.10+cabal-version: >=1.18 extra-source-files: README.md extra-doc-files: doc-formulae/*.svg+tested-with:+ GHC==7.6.3,+ GHC==7.8.4,+ GHC==7.10.3,+ GHC==8.0.2,+ GHC==8.2.2 +source-repository head+ type: git+ location: https://github.com/phadej/boolean-normal-forms.git+ library hs-source-dirs: src exposed-modules: Data.Algebra.Boolean.NormalForm,@@ -33,16 +43,11 @@ ConstraintKinds, TypeFamilies, ScopedTypeVariables- build-depends: base >=4.6 && <4.8,- containers >=0.5 && <0.6,- cond >=0.4.1 && <0.5+ build-depends: base >=4.6 && <4.11,+ containers >=0.5 && <0.6,+ cond >=0.4.1 && <0.5 default-language: Haskell2010 ghc-options: -Wall- -O2- -fwarn-tabs- -fspec-constr-count=6- -fmax-simplifier-iterations=10- -fdicts-cheap test-suite test default-language: Haskell2010@@ -50,6 +55,7 @@ hs-source-dirs: tests main-is: Main.hs other-modules: BooleanLaws,+ BooleanModelLaws, CNFList, CNFSet, DNFList,@@ -60,11 +66,11 @@ NNFSet, NNFTree, SimplifyLaws- ghc-options: -Wall -O2 -fno-warn-orphans- build-depends: base >=4.6 && <4.8,- containers >= 0.5 && <0.6,- cond >=0.4.1 && <0.5,- tasty >=0.8,- tasty-quickcheck >=0.8.0.3,- QuickCheck >=2.7 && <=2.8,+ ghc-options: -Wall -fno-warn-orphans+ build-depends: base,+ containers,+ cond,+ tasty >=0.8,+ tasty-quickcheck >=0.8.0.3,+ QuickCheck >=2.10 && <2.11, boolean-normal-forms
src/Data/Algebra/Boolean/CNF/List.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE TypeFamilies #-} --------------------------------------------------------------------@@ -21,7 +22,8 @@ import Prelude hiding ((||),(&&),not,any,all,and,or) import Data.Monoid import Data.Either (partitionEithers)-import Data.Typeable+import Data.Typeable (Typeable)+import Data.Foldable (Foldable) import Data.Algebra.Boolean.NormalForm import Data.Algebra.Boolean.Negable hiding (not)@@ -35,7 +37,7 @@ -- -- <<doc-formulae/cnf.svg>> newtype CNF a = CNF { unCNF :: [[a]] }- deriving (Eq, Ord, Show, Read, Functor, Typeable)+ deriving (Eq, Ord, Show, Read, Functor, Foldable, Typeable) instance CoBoolean1 CNF where toBooleanWith f = all (any f) . unCNF
src/Data/Algebra/Boolean/CNF/Set.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE TypeFamilies #-} --------------------------------------------------------------------@@ -19,7 +20,8 @@ import Prelude hiding ((||),(&&),not,and,or,any,all) import Data.Monoid-import Data.Typeable+import Data.Typeable (Typeable)+import Data.Foldable (Foldable) import Data.Set (Set) import qualified Data.Set as Set@@ -39,7 +41,7 @@ -- -- <<doc-formulae/cnf.svg>> newtype CNF a = CNF { unCNF :: Set (Set a) }- deriving (Eq, Ord, Show, Read, Typeable)+ deriving (Eq, Ord, Show, Read, Foldable, Typeable) instance CoBoolean1 CNF where toBooleanWith f = all (any f) . unCNF
src/Data/Algebra/Boolean/DNF/List.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE TypeFamilies #-} --------------------------------------------------------------------@@ -21,7 +22,8 @@ import Prelude hiding ((||),(&&),not,any,all,and,or) import Data.Monoid import Data.Either (partitionEithers)-import Data.Typeable+import Data.Typeable (Typeable)+import Data.Foldable (Foldable) import Data.Algebra.Boolean.NormalForm import Data.Algebra.Boolean.Negable hiding (not)@@ -35,7 +37,7 @@ -- -- <<doc-formulae/dnf.svg>> newtype DNF a = DNF { unDNF :: [[a]] }- deriving (Eq, Ord, Show, Read, Functor, Typeable)+ deriving (Eq, Ord, Show, Read, Functor, Foldable, Typeable) instance CoBoolean1 DNF where toBooleanWith f = any (all f) . unDNF
src/Data/Algebra/Boolean/DNF/Set.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE TypeFamilies #-} --------------------------------------------------------------------@@ -19,7 +20,8 @@ import Prelude hiding ((||),(&&),not,and,or,any,all) import Data.Monoid-import Data.Typeable+import Data.Typeable (Typeable)+import Data.Foldable (Foldable) import Data.Set (Set) import qualified Data.Set as Set@@ -39,7 +41,7 @@ -- -- <<doc-formulae/dnf.svg>> newtype DNF a = DNF { unDNF :: Set (Set a) }- deriving (Eq, Ord, Show, Read, Typeable)+ deriving (Eq, Ord, Show, Read, Foldable, Typeable) instance CoBoolean1 DNF where toBooleanWith f = any (all f) . unDNF
src/Data/Algebra/Boolean/FreeBoolean.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveDataTypeable #-} -------------------------------------------------------------------- -- |@@ -14,7 +15,8 @@ module Data.Algebra.Boolean.CoBoolean ) where -import Data.Typeable+import Data.Typeable (Typeable)+import Data.Foldable (Foldable) import Data.Algebra.Boolean.CoBoolean import Data.Algebra.Boolean.Negable hiding (not)@@ -32,7 +34,7 @@ | FBNot (FreeBoolean a) | FBAnd (FreeBoolean a) (FreeBoolean a) | FBOr (FreeBoolean a) (FreeBoolean a)- deriving (Eq, Ord, Show, Read, Functor, Typeable)+ deriving (Eq, Ord, Show, Read, Functor, Foldable, Typeable) instance CoBoolean1 FreeBoolean where toBooleanWith f (FBValue x) = f x
src/Data/Algebra/Boolean/NNF/Set.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE TypeFamilies #-} --------------------------------------------------------------------@@ -24,7 +25,8 @@ import Prelude hiding ((||),(&&),not,any,all) import Data.Algebra.Boolean -import Data.Typeable+import Data.Typeable (Typeable)+import Data.Foldable (Foldable) -- | Boolean formula in Negation Normal Form --@@ -36,7 +38,7 @@ | NNFValue a | NNFOr (Set (NNF a)) | NNFAnd (Set (NNF a))- deriving (Eq, Ord, Show, Read, Typeable)+ deriving (Eq, Ord, Show, Read, Foldable, Typeable) instance CoBoolean a => CoBoolean (NNF a) where toBoolean = toBooleanWith toBoolean
src/Data/Algebra/Boolean/NNF/Tree.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE TypeFamilies #-} --------------------------------------------------------------------@@ -23,7 +24,8 @@ import Data.Algebra.Boolean -import Data.Typeable+import Data.Typeable (Typeable)+import Data.Foldable (Foldable) -- | Boolean formula in Negation Normal Form --@@ -35,7 +37,7 @@ | NNFValue a | NNFOr (NNF a) (NNF a) | NNFAnd (NNF a) (NNF a)- deriving (Eq, Ord, Show, Read, Functor, Typeable)+ deriving (Eq, Ord, Show, Read, Functor, Foldable, Typeable) instance CoBoolean a => CoBoolean (NNF a) where toBoolean = toBooleanWith toBoolean
+ tests/BooleanModelLaws.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE ConstraintKinds #-}+module BooleanModelLaws (booleanModelLaws) where++import Test.Tasty+import Test.Tasty.QuickCheck as QC++import FreeBoolean++import Data.Algebra.Boolean.NormalForm++modelProperty :: (CoBoolean a, NormalForm nf, NFConstraint nf a) => nf a -> FreeBoolean a-> Property+modelProperty t b = collect (freeBooleanHeight b) $+ toBoolWith toBool b == toBoolWith toBool (fromFreeBoolean b `asTypeOf` t)++booleanModelLaws :: (Arbitrary a, Show a, CoBoolean a, NormalForm nf, NFConstraint nf a) => nf a -> TestTree+booleanModelLaws t = QC.testProperty "Boolean model" $ modelProperty t
tests/CNFSet.hs view
@@ -18,9 +18,6 @@ import Data.Algebra.Boolean.Negable (Negable) import Data.Algebra.Boolean.CNF.Set -instance Arbitrary a => Arbitrary (Sum a) where- arbitrary = Sum <$> arbitrary- instance (Ord a, Negable a, Arbitrary a) => Arbitrary (CNF a) where arbitrary = fromFreeBoolean <$> arbitrary
tests/DNFSet.hs view
@@ -18,9 +18,6 @@ import Data.Algebra.Boolean.Negable (Negable) import Data.Algebra.Boolean.DNF.Set -instance Arbitrary a => Arbitrary (Sum a) where- arbitrary = Sum <$> arbitrary- instance (Ord a, Negable a, Arbitrary a) => Arbitrary (DNF a) where arbitrary = fromFreeBoolean <$> arbitrary
tests/NNFSet.hs view
@@ -18,9 +18,6 @@ import Data.Algebra.Boolean.Negable (Negable) import Data.Algebra.Boolean.NNF.Set -instance Arbitrary a => Arbitrary (Sum a) where- arbitrary = Sum <$> arbitrary- instance (Ord a, Negable a, Arbitrary a) => Arbitrary (NNF a) where arbitrary = fromFreeBoolean <$> arbitrary