1pub mod boolean;
16pub mod boolean_neg;
17pub mod conjunction;
18pub mod disjunction;
19pub mod ops;
20
21pub use logic::boolean::*;
22pub use logic::boolean_neg::*;
23pub use logic::conjunction::*;
24pub use logic::disjunction::*;
25pub use logic::ops::*;
26
27use gcollections::*;
28use concept::*;
29
30pub fn implication<VStore>(f: Formula<VStore>, g: Formula<VStore>) -> Formula<VStore> where
31 VStore: Collection + 'static
32{
33 Box::new(Disjunction::new(vec![f, g.not()]))
34}
35
36pub fn equivalence<VStore>(f: Formula<VStore>, g: Formula<VStore>) -> Formula<VStore> where
37 VStore: Collection + 'static
38{
39 Box::new(Conjunction::new(vec![
40 implication(f.bclone(), g.bclone()),
41 implication(g, f)
42 ]))
43}