Advertisement
apexsquirt

[PHP-CLI] Basic first-order logic on finite sets checker

Sep 28th, 2019
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 0.71 KB | None | 0 0
  1. <?php
  2.  
  3. function forall($x="@",$set=[],$statement) {
  4.     $str = "true";
  5.     for ($i = 0; $i < count($set); $i++) {
  6.         $str .= " & (".str_replace($x,$set[$i],$statement).")";
  7.     }
  8.     return "($str)";
  9. }
  10. function exists($x="@",$set=[],$statement) {
  11.     $str = "false";
  12.     for ($i = 0; $i < count($set); $i++) {
  13.         $str .= " || (".str_replace($x,$set[$i],$statement).")";
  14.     }
  15.     return "($str)";
  16. }
  17. function implies($statement1,$statement2) {
  18.     $str = "(($statement1) || !($statement2))";
  19.     return $str;
  20. }
  21. function verify($statement) {
  22.     eval("\$st = ($statement);");
  23.     return $st;
  24. }
  25.  
  26. //Example
  27. print verify(forall("x",[1,2,4,8,16],implies("(x+1)%2==0","x==1"))); //Checks that ∀ x ∈ {1,2,4,8,16} (x+1 ≡ 0 (mod 2) => x=1)
  28.  
  29. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement