8 use Acme::Test::LogicalEquivalence qw(is_logically_equivalent);
10 note "Let's see if the universe still makes sense...";
13 is_logically_equivalent 1,
16 is_logically_equivalent 1,
20 note 'Domination laws';
21 is_logically_equivalent 1,
24 is_logically_equivalent 1,
28 note 'Idempotent laws';
29 is_logically_equivalent 1,
32 is_logically_equivalent 1,
36 note 'Double negation law';
37 is_logically_equivalent 1,
41 note 'Commutative laws';
42 is_logically_equivalent 2,
45 is_logically_equivalent 2,
49 note 'Associative laws';
50 is_logically_equivalent 3,
51 sub { ($_[0] || $_[1]) || $_[2] },
52 sub { $_[0] || ($_[1] || $_[2]) };
53 is_logically_equivalent 3,
54 sub { ($_[0] && $_[1]) && $_[2] },
55 sub { $_[0] && ($_[1] && $_[2]) };
57 note 'Distributive laws';
58 is_logically_equivalent 3,
59 sub { $_[0] || ($_[1] && $_[2]) },
60 sub { ($_[0] || $_[1]) && ($_[0] || $_[2]) };
61 is_logically_equivalent 3,
62 sub { $_[0] && ($_[1] || $_[2]) },
63 sub { ($_[0] && $_[1]) || ($_[0] && $_[2]) };
65 note 'De Morgan\'s laws';
66 is_logically_equivalent 2,
69 is_logically_equivalent 2,
73 note 'Absorption laws';
74 is_logically_equivalent 2,
75 sub { $a || ($a && $b) },
77 is_logically_equivalent 2,
78 sub { $a && ($a || $b) },
82 is_logically_equivalent 1,
85 is_logically_equivalent 1,