X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fp5-Acme-Test-LogicalEquivalence;a=blobdiff_plain;f=README.md;h=6fac4f5efa58bc54816e880d2a5fab66ff4666c6;hp=1333ed77b7e1ed056329cae96075dc558158ee69;hb=HEAD;hpb=479b8c4e7945e3e3a3f9c52158dc2a70279cba6d diff --git a/README.md b/README.md index 1333ed7..6fac4f5 100644 --- a/README.md +++ b/README.md @@ -1 +1,60 @@ -TODO +# NAME + +Acme::Test::LogicalEquivalence - Test if expressions are logically equivalent + +# VERSION + +version 0.001 + +# SYNOPSIS + + use Test::More; + use Acme::Test::LogicalEquivalence qw(is_logically_equivalent); + + # test two expressions with 2 variables using the special vars $a and $b + is_logically_equivalent(2, sub { $a && $b }, sub { $b && $a }); + + # same as above + is_logically_equivalent(2, sub { $_[0] && $_[1] }, sub { $_[1] && $_[0] }); + + # you can do as many vars as you like + is_logically_equivalent(3, sub { $_[0] || ($_[1] && $_[2]) }, + sub { ($_[0] || $_[1]) && ($_[0] || $_[2]) }); + + done_testing; + +# DESCRIPTION + +Some expressions are "logically equivalent" to other expressions, but it may not be easy to tell if +one or both of the expressions are reasonably complicated. Or maybe you're like many other people +and are too lazy to go through the effort... Either way, why not let your computer prove logical +equivalence for you? + +# FUNCTIONS + +## is\_logically\_equivalent + +Test logical equivalence of two subroutines. + + my $is_equivalent = is_logically_equivalent($numvars, &sub1, &sub2); + +This will execute both of the subroutines one or more times (depending on how many variables you +specify) with different inputs. The subroutines shall be considered logically equivalent if, for all +combinations of inputs, they both return the same thing. + +Returns true if the subroutines are logically equivalent, false otherwise. + +# SEE ALSO + +- What is logical equivalence? Start here: [https://en.wikipedia.org/wiki/Logical\_equivalence](https://en.wikipedia.org/wiki/Logical_equivalence) + +# AUTHOR + +Charles McGarvey + +# COPYRIGHT AND LICENSE + +This software is copyright (c) 2016 by Charles McGarvey. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself.