packages feed

twee 2.1.5 → 2.2

raw patch · 16 files changed

+645/−51 lines, 16 filesdep ~jukeboxdep ~twee-lib

Dependency ranges changed: jukebox, twee-lib

Files

executable/Main.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP, RecordWildCards, FlexibleInstances, PatternGuards #-}+{-# OPTIONS_GHC -flate-specialise #-} import Control.Monad import Data.Char import Data.Either@@ -19,9 +20,9 @@ import Data.Maybe import Jukebox.Options import Jukebox.Toolbox-import Jukebox.Name hiding (lhs, rhs)+import Jukebox.Name hiding (lhs, rhs, label) import qualified Jukebox.Form as Jukebox-import Jukebox.Form hiding ((:=:), Var, Symbolic(..), Term, Axiom, size, Lemma)+import Jukebox.Form hiding ((:=:), Var, Symbolic(..), Term, Axiom, size, matchList) import Jukebox.Tools.EncodeTypes import Jukebox.TPTP.Print import Jukebox.Tools.HornToUnit@@ -34,11 +35,13 @@ data MainFlags =   MainFlags {     flags_proof :: Bool,-    flags_trace :: Maybe (String, String) }+    flags_trace :: Maybe (String, String),+    flags_casc  :: Bool,+    flags_explain_encoding :: Bool }  parseMainFlags :: OptionParser MainFlags parseMainFlags =-  MainFlags <$> proof <*> trace+  MainFlags <$> proof <*> trace <*> casc <*> explain   where     proof =       inGroup "Output options" $@@ -50,6 +53,15 @@       flag "trace"         ["Write a Prolog-format execution trace to this file (off by default)."]         Nothing ((\x y -> Just (x, y)) <$> argFile <*> argModule)+    casc =+      expert $+      inGroup "Output options" $+      bool "casc" ["Print output in CASC format (off by default)."] False+    explain =+      expert $+      inGroup "Output options" $+      bool "explain-encoding" ["In CASC mode, explain the conditional encoding (off by default)."] False+             argModule = arg "<module>" "expected a Prolog module name" Just  parseConfig :: OptionParser (Config (Extended Constant))@@ -178,7 +190,7 @@  instance PrettyTerm Constant where   termStyle Constant{..}-    | "$to_" `isPrefixOf` (base con_id) = invisible+    | hasLabel "type_tag" con_id = invisible     | any isAlphaNum (base con_id) = uncurried     | otherwise =       case con_arity of@@ -217,19 +229,24 @@       Main.isEquals fun  isType :: Jukebox.Function -> Bool-isType fun = "$to_" `isPrefixOf` base (name fun) && Jukebox.arity fun == 1+isType fun =+  hasLabel "type_tag" (name fun) && Jukebox.arity fun == 1  isIfeq :: Jukebox.Function -> Bool-isIfeq fun = "$ifeq" `isPrefixOf` base (name fun)+isIfeq fun =+  hasLabel "ifeq" (name fun)  isEquals :: Jukebox.Function -> Bool-isEquals fun = "$equals" `isPrefixOf` base (name fun)+isEquals fun =+  hasLabel "equals" (name fun) && Jukebox.arity fun == 2  isTrue :: Jukebox.Function -> Bool-isTrue fun = "$true" `isPrefixOf` base (name fun)+isTrue fun =+  hasLabel "true" (name fun) && Jukebox.arity fun == 0  isFalse :: Jukebox.Function -> Bool-isFalse fun = "$false" `isPrefixOf` base (name fun)+isFalse fun =+  hasLabel "false" (name fun) && Jukebox.arity fun == 0  jukeboxFunction :: TweeContext -> Extended Constant -> Jukebox.Function jukeboxFunction _ (Function Constant{..}) = con_id@@ -247,7 +264,7 @@  jukeboxTerm :: TweeContext -> Term (Extended Constant) -> Jukebox.Term jukeboxTerm TweeContext{..} (Var (V x)) =-  Jukebox.Var (Unique (fromIntegral x) "X" defaultRenamer ::: ctx_type)+  Jukebox.Var (Unique (fromIntegral x) "X" Nothing defaultRenamer ::: ctx_type) jukeboxTerm ctx@TweeContext{..} (App f t) =   jukeboxFunction ctx (fun_value f) :@: map (jukeboxTerm ctx) ts   where@@ -262,10 +279,10 @@         [ty] -> ty    var     <- newSymbol "X" ty-  minimal <- newFunction "$constant" [] ty-  true    <- newFunction "$true" [] ty-  false   <- newFunction "$false" [] ty-  equals  <- newFunction "$equals" [ty, ty] ty+  minimal <- newFunction (withLabel "minimal" (name "constant")) [] ty+  true    <- newFunction (withLabel "true" (name "true")) [] ty+  false   <- newFunction (withLabel "false" (name "false")) [] ty+  equals  <- newFunction (withLabel "equals" (name "equals")) [ty, ty] ty    return TweeContext {     ctx_var = var,@@ -360,7 +377,7 @@   let     -- Encode whatever needs encoding in the problem     ctx = makeContext obligs-    prob = addNarrowing ctx obligs+    prob = prettyNames (addNarrowing ctx obligs)    (axioms0, goals0) <-     case identifyProblem ctx prob of@@ -458,11 +475,54 @@       pres = present (cfg_proof_presentation config) (solutions state)      sayTrace ""-    forM_ (pres_lemmas pres) $ \Lemma{..} ->+    forM_ (pres_lemmas pres) $ \p ->       sayTrace $ show $-        traceApp "lemma" [traceEqn (equation lemma_proof)] <#> text "."+        traceApp "lemma" [traceEqn (equation p)] <#> text "." -    when tstp $ do+    when (flags_casc main) $ do+      putStrLn "% SZS output start Proof"+      let+        axiomForms =+          Map.fromList+            (zip (map axiom_number axioms) (map pre_form axioms0))+        goalForms =+          Map.fromList+            (zip (map goal_number goals) (map pre_form goals0))++        findSource forms n =+          case Map.lookup n forms of+            Nothing -> []+            Just inp -> go inp+           where+            go Input{source = Unknown} = []+            go Input{source = Inference _ _ inps} = concatMap go inps+            go inp@Input{source = FromFile _ _} = [inp]++      when (flags_explain_encoding main) $ do+        putStrLn "Take the following subset of the input axioms:"+        mapM_ putStrLn $ map ("  " ++) $ lines $ showProblem $+          usortBy (comparing show) $+            (pres_axioms pres >>= findSource axiomForms . axiom_number) +++            (pres_goals pres >>= findSource goalForms . pg_number)++        putStrLn ""+        putStrLn "Now clausify the problem and encode Horn clauses using encoding 3 of"+        putStrLn "http://www.cse.chalmers.se/~nicsma/papers/horn.pdf."+        putStrLn "We repeatedly replace C & s=t => u=v by the two clauses:"+        putStrLn "  fresh(y, y, x1...xn) = u"+        putStrLn "  C => fresh(s, t, x1...xn) = v"+        putStrLn "where fresh is a fresh function symbol and x1..xn are the free"+        putStrLn "variables of u and v."+        putStrLn "A predicate p(X) is encoded as p(X)=true (this is sound, because the"+        putStrLn "input problem has no model of domain size 1)."+        putStrLn ""+        putStrLn "The encoding turns the above axioms into the following unit equations and goals:"+        putStrLn ""+      print $ pPrintPresentation (cfg_proof_presentation config) pres+      putStrLn "% SZS output end Proof"+      putStrLn ""+  +    when (tstp && not (flags_casc main)) $ do       putStrLn "% SZS output start CNFRefutation"       print $ pPrintProof $         presentToJukebox ctx (curry toEquation)@@ -472,10 +532,11 @@       putStrLn "% SZS output end CNFRefutation"       putStrLn "" -    putStrLn "The conjecture is true! Here is a proof."-    putStrLn ""-    print $ pPrintPresentation (cfg_proof_presentation config) pres-    putStrLn ""+    when (not (flags_casc main)) $ do+      putStrLn "The conjecture is true! Here is a proof."+      putStrLn ""+      print $ pPrintPresentation (cfg_proof_presentation config) pres+      putStrLn ""    when (not (quiet globals) && not (solved state)) $ later $ do     let@@ -510,7 +571,7 @@    return $     if solved state then Unsat Unsatisfiable Nothing-    else if configIsComplete config then Sat Satisfiable Nothing+    else if configIsComplete config && not (dropNonHorn horn) then Sat Satisfiable Nothing     else NoAnswer GaveUp  -- Transform a proof presentation into a Jukebox proof.@@ -543,7 +604,7 @@         | Axiom{..} <- pres_axioms ]      lemma_proofs =-      Map.fromList [(lemma_id, tstp lemma_proof) | Lemma{..} <- pres_lemmas]+      Map.fromList [(p, tstp p) | p <- pres_lemmas]      goal_proofs =       Map.fromList [(pg_number, tstp pg_proof) | ProvedGoal{..} <- pres_goals]@@ -570,8 +631,8 @@      sources :: Derivation (Extended Constant) -> [Input Form]     sources p =-      [ fromJust (Map.lookup lemma_id lemma_proofs)-      | Lemma{..} <- usortBy (comparing lemma_id) (usedLemmas p) ] +++      [ fromJust (Map.lookup lemma lemma_proofs)+      | lemma <- usort (usedLemmas p) ] ++       [ fromJust (Map.lookup axiom_number axiom_proofs)       | Axiom{..} <- usort (usedAxioms p) ] 
+ tests/PUZ037-3-2.p view
@@ -0,0 +1,106 @@+%--------------------------------------------------------------------------+% File     : PUZ037-3 : TPTP v7.2.0. Released v2.3.0.+% Domain   : Puzzles+% Problem  : Rubik's Cube+% Version  : [HM98] axioms : Especial.+%            Theorem formulation : Rotation in all three planes.+% English  : Rubik's Cube is a 3x3x3 cube consisting of 27 subcubes with+%            colored faces. The three layers perpendicular to any axis may+%            be rotated independently. The object is to take a scrambled+%            cube and unscramble it so that each side consists entirely+%            of one color(Blue, White, Green, Yellow, Orange, Red).++% Refs     : [HM98]  Huang & Myers (1998), Subgoal Strategies for Solving B+% Source   : [HM98]+% Names    : Rubik's Cube [HM98]++% Status   : Unsatisfiable+% Rating   : 0.20 v7.2.0, 0.22 v7.1.0, 0.14 v6.4.0, 0.17 v6.3.0, 0.25 v6.2.0, 0.12 v6.1.0, 0.00 v5.5.0, 0.20 v5.4.0, 0.33 v5.0.0, 0.50 v4.1.0, 0.60 v3.7.0, 0.50 v3.5.0, 0.33 v3.1.0, 0.44 v2.7.0, 0.50 v2.6.0, 0.44 v2.5.0, 0.75 v2.4.0, 0.67 v2.3.0+% Syntax   : Number of clauses     :   20 (   0 non-Horn;   2 unit;  20 RR)+%            Number of atoms       :   38 (   0 equality)+%            Maximal clause size   :    2 (   2 average)+%            Number of predicates  :    1 (   0 propositional; 54-54 arity)+%            Number of functors    :    6 (   6 constant; 0-0 arity)+%            Number of variables   :  972 (   0 singleton)+%            Maximal term depth    :    1 (   1 average)+% SPC      : CNF_UNS_EPR++% Comments : mzy, mzy, bzy, byx, lzx rotations to solve.+%--------------------------------------------------------------------------+cnf(a, axiom,+    state(b,b,b,b,b,b,b,b,b,r,r,r,g,g,g,o,o,o,y,y,y,r,r,r,g,g,g,o,o,o,y,y,y,r,r,r,g,g,g,o,o,o,y,y,y,w,w,w,w,w,w,w,w,w) !=+    state(b,r,r,w,w,w,y,b,b,g,y,r,b,g,g,o,g,y,w,w,r,g,o,r,b,g,g,o,r,b,y,y,r,g,o,g,o,o,o,y,r,b,y,y,r,w,w,w,b,b,y,w,o,o)).++cnf(txy,axiom,+    (  state(W7,W6,W5,W8,A1,W4,W1,W2,W3,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7)+    = state(W1,W8,W7,W2,A1,W6,W3,W4,W5,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7) )).++cnf(mxy,axiom,+    (  state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7,D8,D9,E1,E2,E3,E4,E5,E6)+    = state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7,D8,D9,E1,E2,E3,E4,E5,E6) )).++cnf(bxy,axiom,+    (  state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,W7,W8,W1,W6,D7,W2,W5,W4,W3)+    = state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,W1,W2,W3,W8,D7,W4,W7,W6,W5) )).++cnf(fzy,axiom,+    (  state(A1,A2,A3,A4,A5,A6,V1,U1,Y1,A7,A8,W1,V2,U2,Y2,X1,A9,B1,B2,B3,B4,B5,B6,W2,V3,U3,Y3,X2,B7,B8,B9,C1,C2,C3,C4,W3,V4,U4,Y4,X3,C5,C6,C7,C8,C9,V5,U5,Y5,D1,D2,D3,D4,D5,D6)+    = state(A1,A2,A3,A4,A5,A6,X1,X2,X3,A7,A8,Y1,Y2,Y3,Y4,Y5,A9,B1,B2,B3,B4,B5,B6,U1,U2,U3,U4,U5,B7,B8,B9,C1,C2,C3,C4,V1,V2,V3,V4,V5,C5,C6,C7,C8,C9,W1,W2,W3,D1,D2,D3,D4,D5,D6) )).++cnf(mzy,axiom,+    (  state(A1,A2,A3,Y1,Y2,Y3,A4,A5,A6,A7,X9,A8,A9,B1,B2,B3,X1,B4,B5,B6,B7,B8,X8,B9,C1,C2,C3,C4,X2,C5,C6,C7,C8,C9,X7,D1,D2,D3,D4,D5,X3,D6,D7,D8,D9,E1,E2,E3,X6,X5,X4,E4,E5,E6)+    = state(A1,A2,A3,X1,X2,X3,A4,A5,A6,A7,Y3,A8,A9,B1,B2,B3,X4,B4,B5,B6,B7,B8,Y2,B9,C1,C2,C3,C4,X5,C5,C6,C7,C8,C9,Y1,D1,D2,D3,D4,D5,X6,D6,D7,D8,D9,E1,E2,E3,X9,X8,X7,E4,E5,E6) )).++cnf(bzy,axiom,+    (  state(Y1,Y2,Y3,A1,A2,A3,A4,A5,A6,X9,A7,A8,A9,B1,B2,B3,B4,X1,W1,W8,W7,X8,B5,B6,B7,B8,B9,C1,C2,X2,W2,C3,W6,X7,C4,C5,C6,C7,C8,C9,D1,X3,W3,W4,W5,D2,D3,D4,D5,D6,D7,X6,X5,X4)+    = state(X1,X2,X3,A1,A2,A3,A4,A5,A6,Y3,A7,A8,A9,B1,B2,B3,B4,X4,W3,W2,W1,Y2,B5,B6,B7,B8,B9,C1,C2,X5,W4,C3,W8,Y1,C4,C5,C6,C7,C8,C9,D1,X6,W5,W6,W7,D2,D3,D4,D5,D6,D7,X9,X8,X7) )).++cnf(lzx,axiom,+    (  state(Y1,A1,A2,Y2,A3,A4,Y3,A5,A6,W7,W8,W1,X1,A7,A8,A9,B1,B2,B3,B4,X9,W6,B5,W2,X2,B6,B7,B8,B9,C1,C2,C3,X8,W5,W4,W3,X3,C4,C5,C6,C7,C8,C9,D1,X7,X4,D2,D3,X5,D4,D5,X6,D6,D7)+    = state(X1,A1,A2,X2,A3,A4,X3,A5,A6,W1,W2,W3,X4,A7,A8,A9,B1,B2,B3,B4,Y3,W8,B5,W4,X5,B6,B7,B8,B9,C1,C2,C3,Y2,W7,W6,W5,X6,C4,C5,C6,C7,C8,C9,D1,Y1,X7,D2,D3,X8,D4,D5,X9,D6,D7) )).++cnf(mzx,axiom,+    (  state(A1,Y1,A2,A3,Y2,A4,A5,Y3,A6,A7,A8,A9,B1,X1,B2,B3,B4,B5,B6,X9,B7,B8,B9,C1,C2,X2,C3,C4,C5,C6,C7,X8,C8,C9,D1,D2,D3,X3,D4,D5,D6,D7,D8,X7,D9,E1,X4,E2,E3,X5,E4,E5,X6,E6)+    = state(A1,X1,A2,A3,X2,A4,A5,X3,A6,A7,A8,A9,B1,X4,B2,B3,B4,B5,B6,Y3,B7,B8,B9,C1,C2,X5,C3,C4,C5,C6,C7,Y2,C8,C9,D1,D2,D3,X6,D4,D5,D6,D7,D8,Y1,D9,E1,X7,E2,E3,X8,E4,E5,X9,E6) )).++cnf(rzx,axiom,+    (  state(A1,A2,Y1,A3,A4,Y2,A5,A6,Y3,A7,A8,A9,B1,B2,X1,W1,W8,W7,X9,B3,B4,B5,B6,B7,B8,B9,X2,W2,C1,W6,X8,C2,C3,C4,C5,C6,C7,C8,X3,W3,W4,W5,X7,C9,D1,D2,D3,X4,D4,D5,X5,D6,D7,X6)+    = state(A1,A2,X1,A3,A4,X2,A5,A6,X3,A7,A8,A9,B1,B2,X4,W3,W2,W1,Y3,B3,B4,B5,B6,B7,B8,B9,X5,W4,C1,W8,Y2,C2,C3,C4,C5,C6,C7,C8,X6,W5,W6,W7,Y1,C9,D1,D2,D3,X7,D4,D5,X8,D6,D7,X9) )).++cnf(tyx,axiom,+    (  state(W1,W8,W7,W2,A1,W6,W3,W4,W5,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7)+    = state(W7,W6,W5,W8,A1,W4,W1,W2,W3,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7) )).++cnf(myx,axiom,+    (  state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7,D8,D9,E1,E2,E3,E4,E5,E6)+    = state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7,D8,D9,E1,E2,E3,E4,E5,E6) )).++cnf(byx,axiom,+    (  state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,W1,W2,W3,W8,D7,W4,W7,W6,W5)+    = state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,W7,W8,W1,W6,D7,W2,W5,W4,W3) )).++cnf(fyz,axiom,+    (  state(A1,A2,A3,A4,A5,A6,X1,X2,X3,A7,A8,Y1,Y2,Y3,Y4,Y5,A9,B1,B2,B3,B4,B5,B6,U1,U2,U3,U4,U5,B7,B8,B9,C1,C2,C3,C4,V1,V2,V3,V4,V5,C5,C6,C7,C8,C9,W1,W2,W3,D1,D2,D3,D4,D5,D6)+    = state(A1,A2,A3,A4,A5,A6,V1,U1,Y1,A7,A8,W1,V2,U2,Y2,X1,A9,B1,B2,B3,B4,B5,B6,W2,V3,U3,Y3,X2,B7,B8,B9,C1,C2,C3,C4,W3,V4,U4,Y4,X3,C5,C6,C7,C8,C9,V5,U5,Y5,D1,D2,D3,D4,D5,D6) )).++cnf(myz,axiom,+    (  state(A1,A2,A3,X1,X2,X3,A4,A5,A6,A7,Y3,A8,A9,B1,B2,B3,X4,B4,B5,B6,B7,B8,Y2,B9,C1,C2,C3,C4,X5,C5,C6,C7,C8,C9,Y1,D1,D2,D3,D4,D5,X6,D6,D7,D8,D9,E1,E2,E3,X9,X8,X7,E4,E5,E6)+    = state(A1,A2,A3,Y1,Y2,Y3,A4,A5,A6,A7,X9,A8,A9,B1,B2,B3,X1,B4,B5,B6,B7,B8,X8,B9,C1,C2,C3,C4,X2,C5,C6,C7,C8,C9,X7,D1,D2,D3,D4,D5,X3,D6,D7,D8,D9,E1,E2,E3,X6,X5,X4,E4,E5,E6) )).++cnf(byz,axiom,+    (  state(X1,X2,X3,A1,A2,A3,A4,A5,A6,Y3,A7,A8,A9,B1,B2,B3,B4,X4,W3,W2,W1,Y2,B5,B6,B7,B8,B9,C1,C2,X5,W4,C3,W8,Y1,C4,C5,C6,C7,C8,C9,D1,X6,W5,W6,W7,D2,D3,D4,D5,D6,D7,X9,X8,X7)+    = state(Y1,Y2,Y3,A1,A2,A3,A4,A5,A6,X9,A7,A8,A9,B1,B2,B3,B4,X1,W1,W8,W7,X8,B5,B6,B7,B8,B9,C1,C2,X2,W2,C3,W6,X7,C4,C5,C6,C7,C8,C9,D1,X3,W3,W4,W5,D2,D3,D4,D5,D6,D7,X6,X5,X4) )).++cnf(lxz,axiom,+    (  state(X1,A1,A2,X2,A3,A4,X3,A5,A6,W1,W2,W3,X4,A7,A8,A9,B1,B2,B3,B4,Y3,W8,B5,W4,X5,B6,B7,B8,B9,C1,C2,C3,Y2,W7,W6,W5,X6,C4,C5,C6,C7,C8,C9,D1,Y1,X7,D2,D3,X8,D4,D5,X9,D6,D7)+    = state(Y1,A1,A2,Y2,A3,A4,Y3,A5,A6,W7,W8,W1,X1,A7,A8,A9,B1,B2,B3,B4,X9,W6,B5,W2,X2,B6,B7,B8,B9,C1,C2,C3,X8,W5,W4,W3,X3,C4,C5,C6,C7,C8,C9,D1,X7,X4,D2,D3,X5,D4,D5,X6,D6,D7) )).++cnf(mxz,axiom,+    (  state(A1,X1,A2,A3,X2,A4,A5,X3,A6,A7,A8,A9,B1,X4,B2,B3,B4,B5,B6,Y3,B7,B8,B9,C1,C2,X5,C3,C4,C5,C6,C7,Y2,C8,C9,D1,D2,D3,X6,D4,D5,D6,D7,D8,Y1,D9,E1,X7,E2,E3,X8,E4,E5,X9,E6)+    = state(A1,Y1,A2,A3,Y2,A4,A5,Y3,A6,A7,A8,A9,B1,X1,B2,B3,B4,B5,B6,X9,B7,B8,B9,C1,C2,X2,C3,C4,C5,C6,C7,X8,C8,C9,D1,D2,D3,X3,D4,D5,D6,D7,D8,X7,D9,E1,X4,E2,E3,X5,E4,E5,X6,E6) )).++cnf(rxz,axiom,+    (  state(A1,A2,X1,A3,A4,X2,A5,A6,X3,A7,A8,A9,B1,B2,X4,W3,W2,W1,Y3,B3,B4,B5,B6,B7,B8,B9,X5,W4,C1,W8,Y2,C2,C3,C4,C5,C6,C7,C8,X6,W5,W6,W7,Y1,C9,D1,D2,D3,X7,D4,D5,X8,D6,D7,X9)+    = state(A1,A2,Y1,A3,A4,Y2,A5,A6,Y3,A7,A8,A9,B1,B2,X1,W1,W8,W7,X9,B3,B4,B5,B6,B7,B8,B9,X2,W2,C1,W6,X8,C2,C3,C4,C5,C6,C7,C8,X3,W3,W4,W5,X7,C9,D1,D2,D3,X4,D4,D5,X5,D6,D7,X6) )).++%--------------------------------------------------------------------------
+ tests/PUZ037-3.p view
@@ -0,0 +1,110 @@+%--------------------------------------------------------------------------+% File     : PUZ037-3 : TPTP v7.2.0. Released v2.3.0.+% Domain   : Puzzles+% Problem  : Rubik's Cube+% Version  : [HM98] axioms : Especial.+%            Theorem formulation : Rotation in all three planes.+% English  : Rubik's Cube is a 3x3x3 cube consisting of 27 subcubes with+%            colored faces. The three layers perpendicular to any axis may+%            be rotated independently. The object is to take a scrambled+%            cube and unscramble it so that each side consists entirely+%            of one color(Blue, White, Green, Yellow, Orange, Red).++% Refs     : [HM98]  Huang & Myers (1998), Subgoal Strategies for Solving B+% Source   : [HM98]+% Names    : Rubik's Cube [HM98]++% Status   : Unsatisfiable+% Rating   : 0.20 v7.2.0, 0.22 v7.1.0, 0.14 v6.4.0, 0.17 v6.3.0, 0.25 v6.2.0, 0.12 v6.1.0, 0.00 v5.5.0, 0.20 v5.4.0, 0.33 v5.0.0, 0.50 v4.1.0, 0.60 v3.7.0, 0.50 v3.5.0, 0.33 v3.1.0, 0.44 v2.7.0, 0.50 v2.6.0, 0.44 v2.5.0, 0.75 v2.4.0, 0.67 v2.3.0+% Syntax   : Number of clauses     :   20 (   0 non-Horn;   2 unit;  20 RR)+%            Number of atoms       :   38 (   0 equality)+%            Maximal clause size   :    2 (   2 average)+%            Number of predicates  :    1 (   0 propositional; 54-54 arity)+%            Number of functors    :    6 (   6 constant; 0-0 arity)+%            Number of variables   :  972 (   0 singleton)+%            Maximal term depth    :    1 (   1 average)+% SPC      : CNF_UNS_EPR++% Comments : mzy, mzy, bzy, byx, lzx rotations to solve.+%--------------------------------------------------------------------------+cnf(make_like_this,negated_conjecture, lhs != rhs).++cnf(a, axiom, lhs =+    state(b,b,b,b,b,b,b,b,b,r,r,r,g,g,g,o,o,o,y,y,y,r,r,r,g,g,g,o,o,o,y,y,y,r,r,r,g,g,g,o,o,o,y,y,y,w,w,w,w,w,w,w,w,w)).++cnf(b, axiom, rhs =+    state(b,r,r,w,w,w,y,b,b,g,y,r,b,g,g,o,g,y,w,w,r,g,o,r,b,g,g,o,r,b,y,y,r,g,o,g,o,o,o,y,r,b,y,y,r,w,w,w,b,b,y,w,o,o)).++cnf(txy,axiom,+    (  state(W7,W6,W5,W8,A1,W4,W1,W2,W3,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7)+    = state(W1,W8,W7,W2,A1,W6,W3,W4,W5,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7) )).++cnf(mxy,axiom,+    (  state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7,D8,D9,E1,E2,E3,E4,E5,E6)+    = state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7,D8,D9,E1,E2,E3,E4,E5,E6) )).++cnf(bxy,axiom,+    (  state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,W7,W8,W1,W6,D7,W2,W5,W4,W3)+    = state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,W1,W2,W3,W8,D7,W4,W7,W6,W5) )).++cnf(fzy,axiom,+    (  state(A1,A2,A3,A4,A5,A6,V1,U1,Y1,A7,A8,W1,V2,U2,Y2,X1,A9,B1,B2,B3,B4,B5,B6,W2,V3,U3,Y3,X2,B7,B8,B9,C1,C2,C3,C4,W3,V4,U4,Y4,X3,C5,C6,C7,C8,C9,V5,U5,Y5,D1,D2,D3,D4,D5,D6)+    = state(A1,A2,A3,A4,A5,A6,X1,X2,X3,A7,A8,Y1,Y2,Y3,Y4,Y5,A9,B1,B2,B3,B4,B5,B6,U1,U2,U3,U4,U5,B7,B8,B9,C1,C2,C3,C4,V1,V2,V3,V4,V5,C5,C6,C7,C8,C9,W1,W2,W3,D1,D2,D3,D4,D5,D6) )).++cnf(mzy,axiom,+    (  state(A1,A2,A3,Y1,Y2,Y3,A4,A5,A6,A7,X9,A8,A9,B1,B2,B3,X1,B4,B5,B6,B7,B8,X8,B9,C1,C2,C3,C4,X2,C5,C6,C7,C8,C9,X7,D1,D2,D3,D4,D5,X3,D6,D7,D8,D9,E1,E2,E3,X6,X5,X4,E4,E5,E6)+    = state(A1,A2,A3,X1,X2,X3,A4,A5,A6,A7,Y3,A8,A9,B1,B2,B3,X4,B4,B5,B6,B7,B8,Y2,B9,C1,C2,C3,C4,X5,C5,C6,C7,C8,C9,Y1,D1,D2,D3,D4,D5,X6,D6,D7,D8,D9,E1,E2,E3,X9,X8,X7,E4,E5,E6) )).++cnf(bzy,axiom,+    (  state(Y1,Y2,Y3,A1,A2,A3,A4,A5,A6,X9,A7,A8,A9,B1,B2,B3,B4,X1,W1,W8,W7,X8,B5,B6,B7,B8,B9,C1,C2,X2,W2,C3,W6,X7,C4,C5,C6,C7,C8,C9,D1,X3,W3,W4,W5,D2,D3,D4,D5,D6,D7,X6,X5,X4)+    = state(X1,X2,X3,A1,A2,A3,A4,A5,A6,Y3,A7,A8,A9,B1,B2,B3,B4,X4,W3,W2,W1,Y2,B5,B6,B7,B8,B9,C1,C2,X5,W4,C3,W8,Y1,C4,C5,C6,C7,C8,C9,D1,X6,W5,W6,W7,D2,D3,D4,D5,D6,D7,X9,X8,X7) )).++cnf(lzx,axiom,+    (  state(Y1,A1,A2,Y2,A3,A4,Y3,A5,A6,W7,W8,W1,X1,A7,A8,A9,B1,B2,B3,B4,X9,W6,B5,W2,X2,B6,B7,B8,B9,C1,C2,C3,X8,W5,W4,W3,X3,C4,C5,C6,C7,C8,C9,D1,X7,X4,D2,D3,X5,D4,D5,X6,D6,D7)+    = state(X1,A1,A2,X2,A3,A4,X3,A5,A6,W1,W2,W3,X4,A7,A8,A9,B1,B2,B3,B4,Y3,W8,B5,W4,X5,B6,B7,B8,B9,C1,C2,C3,Y2,W7,W6,W5,X6,C4,C5,C6,C7,C8,C9,D1,Y1,X7,D2,D3,X8,D4,D5,X9,D6,D7) )).++cnf(mzx,axiom,+    (  state(A1,Y1,A2,A3,Y2,A4,A5,Y3,A6,A7,A8,A9,B1,X1,B2,B3,B4,B5,B6,X9,B7,B8,B9,C1,C2,X2,C3,C4,C5,C6,C7,X8,C8,C9,D1,D2,D3,X3,D4,D5,D6,D7,D8,X7,D9,E1,X4,E2,E3,X5,E4,E5,X6,E6)+    = state(A1,X1,A2,A3,X2,A4,A5,X3,A6,A7,A8,A9,B1,X4,B2,B3,B4,B5,B6,Y3,B7,B8,B9,C1,C2,X5,C3,C4,C5,C6,C7,Y2,C8,C9,D1,D2,D3,X6,D4,D5,D6,D7,D8,Y1,D9,E1,X7,E2,E3,X8,E4,E5,X9,E6) )).++cnf(rzx,axiom,+    (  state(A1,A2,Y1,A3,A4,Y2,A5,A6,Y3,A7,A8,A9,B1,B2,X1,W1,W8,W7,X9,B3,B4,B5,B6,B7,B8,B9,X2,W2,C1,W6,X8,C2,C3,C4,C5,C6,C7,C8,X3,W3,W4,W5,X7,C9,D1,D2,D3,X4,D4,D5,X5,D6,D7,X6)+    = state(A1,A2,X1,A3,A4,X2,A5,A6,X3,A7,A8,A9,B1,B2,X4,W3,W2,W1,Y3,B3,B4,B5,B6,B7,B8,B9,X5,W4,C1,W8,Y2,C2,C3,C4,C5,C6,C7,C8,X6,W5,W6,W7,Y1,C9,D1,D2,D3,X7,D4,D5,X8,D6,D7,X9) )).++cnf(tyx,axiom,+    (  state(W1,W8,W7,W2,A1,W6,W3,W4,W5,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7)+    = state(W7,W6,W5,W8,A1,W4,W1,W2,W3,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7) )).++cnf(myx,axiom,+    (  state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7,D8,D9,E1,E2,E3,E4,E5,E6)+    = state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7,D8,D9,E1,E2,E3,E4,E5,E6) )).++cnf(byx,axiom,+    (  state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,W1,W2,W3,W8,D7,W4,W7,W6,W5)+    = state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,W7,W8,W1,W6,D7,W2,W5,W4,W3) )).++cnf(fyz,axiom,+    (  state(A1,A2,A3,A4,A5,A6,X1,X2,X3,A7,A8,Y1,Y2,Y3,Y4,Y5,A9,B1,B2,B3,B4,B5,B6,U1,U2,U3,U4,U5,B7,B8,B9,C1,C2,C3,C4,V1,V2,V3,V4,V5,C5,C6,C7,C8,C9,W1,W2,W3,D1,D2,D3,D4,D5,D6)+    = state(A1,A2,A3,A4,A5,A6,V1,U1,Y1,A7,A8,W1,V2,U2,Y2,X1,A9,B1,B2,B3,B4,B5,B6,W2,V3,U3,Y3,X2,B7,B8,B9,C1,C2,C3,C4,W3,V4,U4,Y4,X3,C5,C6,C7,C8,C9,V5,U5,Y5,D1,D2,D3,D4,D5,D6) )).++cnf(myz,axiom,+    (  state(A1,A2,A3,X1,X2,X3,A4,A5,A6,A7,Y3,A8,A9,B1,B2,B3,X4,B4,B5,B6,B7,B8,Y2,B9,C1,C2,C3,C4,X5,C5,C6,C7,C8,C9,Y1,D1,D2,D3,D4,D5,X6,D6,D7,D8,D9,E1,E2,E3,X9,X8,X7,E4,E5,E6)+    = state(A1,A2,A3,Y1,Y2,Y3,A4,A5,A6,A7,X9,A8,A9,B1,B2,B3,X1,B4,B5,B6,B7,B8,X8,B9,C1,C2,C3,C4,X2,C5,C6,C7,C8,C9,X7,D1,D2,D3,D4,D5,X3,D6,D7,D8,D9,E1,E2,E3,X6,X5,X4,E4,E5,E6) )).++cnf(byz,axiom,+    (  state(X1,X2,X3,A1,A2,A3,A4,A5,A6,Y3,A7,A8,A9,B1,B2,B3,B4,X4,W3,W2,W1,Y2,B5,B6,B7,B8,B9,C1,C2,X5,W4,C3,W8,Y1,C4,C5,C6,C7,C8,C9,D1,X6,W5,W6,W7,D2,D3,D4,D5,D6,D7,X9,X8,X7)+    = state(Y1,Y2,Y3,A1,A2,A3,A4,A5,A6,X9,A7,A8,A9,B1,B2,B3,B4,X1,W1,W8,W7,X8,B5,B6,B7,B8,B9,C1,C2,X2,W2,C3,W6,X7,C4,C5,C6,C7,C8,C9,D1,X3,W3,W4,W5,D2,D3,D4,D5,D6,D7,X6,X5,X4) )).++cnf(lxz,axiom,+    (  state(X1,A1,A2,X2,A3,A4,X3,A5,A6,W1,W2,W3,X4,A7,A8,A9,B1,B2,B3,B4,Y3,W8,B5,W4,X5,B6,B7,B8,B9,C1,C2,C3,Y2,W7,W6,W5,X6,C4,C5,C6,C7,C8,C9,D1,Y1,X7,D2,D3,X8,D4,D5,X9,D6,D7)+    = state(Y1,A1,A2,Y2,A3,A4,Y3,A5,A6,W7,W8,W1,X1,A7,A8,A9,B1,B2,B3,B4,X9,W6,B5,W2,X2,B6,B7,B8,B9,C1,C2,C3,X8,W5,W4,W3,X3,C4,C5,C6,C7,C8,C9,D1,X7,X4,D2,D3,X5,D4,D5,X6,D6,D7) )).++cnf(mxz,axiom,+    (  state(A1,X1,A2,A3,X2,A4,A5,X3,A6,A7,A8,A9,B1,X4,B2,B3,B4,B5,B6,Y3,B7,B8,B9,C1,C2,X5,C3,C4,C5,C6,C7,Y2,C8,C9,D1,D2,D3,X6,D4,D5,D6,D7,D8,Y1,D9,E1,X7,E2,E3,X8,E4,E5,X9,E6)+    = state(A1,Y1,A2,A3,Y2,A4,A5,Y3,A6,A7,A8,A9,B1,X1,B2,B3,B4,B5,B6,X9,B7,B8,B9,C1,C2,X2,C3,C4,C5,C6,C7,X8,C8,C9,D1,D2,D3,X3,D4,D5,D6,D7,D8,X7,D9,E1,X4,E2,E3,X5,E4,E5,X6,E6) )).++cnf(rxz,axiom,+    (  state(A1,A2,X1,A3,A4,X2,A5,A6,X3,A7,A8,A9,B1,B2,X4,W3,W2,W1,Y3,B3,B4,B5,B6,B7,B8,B9,X5,W4,C1,W8,Y2,C2,C3,C4,C5,C6,C7,C8,X6,W5,W6,W7,Y1,C9,D1,D2,D3,X7,D4,D5,X8,D6,D7,X9)+    = state(A1,A2,Y1,A3,A4,Y2,A5,A6,Y3,A7,A8,A9,B1,B2,X1,W1,W8,W7,X9,B3,B4,B5,B6,B7,B8,B9,X2,W2,C1,W6,X8,C2,C3,C4,C5,C6,C7,C8,X3,W3,W4,W5,X7,C9,D1,D2,D3,X4,D4,D5,X5,D6,D7,X6) )).++%--------------------------------------------------------------------------
+ tests/PUZ052-1.p view
@@ -0,0 +1,129 @@+%--------------------------------------------------------------------------+% File     : PUZ052-1 : TPTP v7.2.0. Released v2.7.0.+% Domain   : Puzzles+% Problem  : Rubik's Cube unreachability+% Version  : [HM98] axioms : Especial.+%            Theorem formulation : Rotations in one plane only.+% English  : Rubik's Cube is a 3x3x3 cube consisting of 27 subcubes with+%            colored faces. The three layers perpendicular to any axis may+%            be rotated independently. The object is to take a scrambled+%            cube and unscramble it so that each side consists entirely+%            of one color(Blue, White, Green, Yellow, Orange, Red).+%            The objective here is unreachable: there are 10 b's and only+%            8 r's.++% Refs     : [HM98]  Huang & Myers (1998), Subgoal Strategies for Solving B+%          : [Cla03] Claessen (2003), Email to G. Sutcliffe+% Source   : [Cla03]+% Names    :++% Status   : Satisfiable+% Rating   : 1.00 v2.7.0+% Syntax   : Number of clauses     :   20 (   0 non-Horn;   2 unit;  20 RR)+%            Number of atoms       :   38 (   0 equality)+%            Maximal clause size   :    2 (   2 average)+%            Number of predicates  :    1 (   0 propositional; 54-54 arity)+%            Number of functors    :    6 (   6 constant; 0-0 arity)+%            Number of variables   :  972 (   0 singleton)+%            Maximal term depth    :    1 (   1 average)+% SPC      : CNF_SAT_EPR++% Comments : Replaced one b by an r in make_like_this from PUZ037-1.p+%            Model never found; a domain of size 2 should be enough though.+%--------------------------------------------------------------------------+cnf(make_like_this,negated_conjecture,+    ( state(b,b,b,b,b,b,b,b,b,b,r,r,g,g,g,o,o,o,y,y,y,r,r,r,g,g,g,o,o,o,y,y,y,r,r,r,g,g,g,o,o,o,y,y,y,w,w,w,w,w,w,w,w,w) !=+     state(b,b,b,b,b,b,b,b,b,r,r,r,g,g,g,o,o,o,y,y,y,g,g,g,o,o,o,y,y,y,r,r,r,r,r,r,g,g,g,o,o,o,y,y,y,w,w,w,w,w,w,w,w,w) )).++cnf(txy,axiom,+    ( +state(W7,W6,W5,W8,A1,W4,W1,W2,W3,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7) += state(W1,W8,W7,W2,A1,W6,W3,W4,W5,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7) )).++cnf(mxy,axiom,+    ( +state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7,D8,D9,E1,E2,E3,E4,E5,E6) +=+    state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7,D8,D9,E1,E2,E3,E4,E5,E6) )).++cnf(bxy,axiom,+    ( state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,W7,W8,W1,W6,D7,W2,W5,W4,W3)+    = +state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,W1,W2,W3,W8,D7,W4,W7,W6,W5) )).++cnf(fzy,axiom,+    ( state(A1,A2,A3,A4,A5,A6,V1,U1,Y1,A7,A8,W1,V2,U2,Y2,X1,A9,B1,B2,B3,B4,B5,B6,W2,V3,U3,Y3,X2,B7,B8,B9,C1,C2,C3,C4,W3,V4,U4,Y4,X3,C5,C6,C7,C8,C9,V5,U5,Y5,D1,D2,D3,D4,D5,D6)+    = +state(A1,A2,A3,A4,A5,A6,X1,X2,X3,A7,A8,Y1,Y2,Y3,Y4,Y5,A9,B1,B2,B3,B4,B5,B6,U1,U2,U3,U4,U5,B7,B8,B9,C1,C2,C3,C4,V1,V2,V3,V4,V5,C5,C6,C7,C8,C9,W1,W2,W3,D1,D2,D3,D4,D5,D6) )).++cnf(mzy,axiom,+    ( state(A1,A2,A3,Y1,Y2,Y3,A4,A5,A6,A7,X9,A8,A9,B1,B2,B3,X1,B4,B5,B6,B7,B8,X8,B9,C1,C2,C3,C4,X2,C5,C6,C7,C8,C9,X7,D1,D2,D3,D4,D5,X3,D6,D7,D8,D9,E1,E2,E3,X6,X5,X4,E4,E5,E6)+    = +state(A1,A2,A3,X1,X2,X3,A4,A5,A6,A7,Y3,A8,A9,B1,B2,B3,X4,B4,B5,B6,B7,B8,Y2,B9,C1,C2,C3,C4,X5,C5,C6,C7,C8,C9,Y1,D1,D2,D3,D4,D5,X6,D6,D7,D8,D9,E1,E2,E3,X9,X8,X7,E4,E5,E6) )).++cnf(bzy,axiom,+    ( state(Y1,Y2,Y3,A1,A2,A3,A4,A5,A6,X9,A7,A8,A9,B1,B2,B3,B4,X1,W1,W8,W7,X8,B5,B6,B7,B8,B9,C1,C2,X2,W2,C3,W6,X7,C4,C5,C6,C7,C8,C9,D1,X3,W3,W4,W5,D2,D3,D4,D5,D6,D7,X6,X5,X4)+    = +state(X1,X2,X3,A1,A2,A3,A4,A5,A6,Y3,A7,A8,A9,B1,B2,B3,B4,X4,W3,W2,W1,Y2,B5,B6,B7,B8,B9,C1,C2,X5,W4,C3,W8,Y1,C4,C5,C6,C7,C8,C9,D1,X6,W5,W6,W7,D2,D3,D4,D5,D6,D7,X9,X8,X7) )).++cnf(lzx,axiom,+    ( state(Y1,A1,A2,Y2,A3,A4,Y3,A5,A6,W7,W8,W1,X1,A7,A8,A9,B1,B2,B3,B4,X9,W6,B5,W2,X2,B6,B7,B8,B9,C1,C2,C3,X8,W5,W4,W3,X3,C4,C5,C6,C7,C8,C9,D1,X7,X4,D2,D3,X5,D4,D5,X6,D6,D7)+    = +state(X1,A1,A2,X2,A3,A4,X3,A5,A6,W1,W2,W3,X4,A7,A8,A9,B1,B2,B3,B4,Y3,W8,B5,W4,X5,B6,B7,B8,B9,C1,C2,C3,Y2,W7,W6,W5,X6,C4,C5,C6,C7,C8,C9,D1,Y1,X7,D2,D3,X8,D4,D5,X9,D6,D7) )).++cnf(mzx,axiom,+    ( state(A1,Y1,A2,A3,Y2,A4,A5,Y3,A6,A7,A8,A9,B1,X1,B2,B3,B4,B5,B6,X9,B7,B8,B9,C1,C2,X2,C3,C4,C5,C6,C7,X8,C8,C9,D1,D2,D3,X3,D4,D5,D6,D7,D8,X7,D9,E1,X4,E2,E3,X5,E4,E5,X6,E6)+    = +state(A1,X1,A2,A3,X2,A4,A5,X3,A6,A7,A8,A9,B1,X4,B2,B3,B4,B5,B6,Y3,B7,B8,B9,C1,C2,X5,C3,C4,C5,C6,C7,Y2,C8,C9,D1,D2,D3,X6,D4,D5,D6,D7,D8,Y1,D9,E1,X7,E2,E3,X8,E4,E5,X9,E6) )).++cnf(rzx,axiom,+    ( state(A1,A2,Y1,A3,A4,Y2,A5,A6,Y3,A7,A8,A9,B1,B2,X1,W1,W8,W7,X9,B3,B4,B5,B6,B7,B8,B9,X2,W2,C1,W6,X8,C2,C3,C4,C5,C6,C7,C8,X3,W3,W4,W5,X7,C9,D1,D2,D3,X4,D4,D5,X5,D6,D7,X6)+    = +state(A1,A2,X1,A3,A4,X2,A5,A6,X3,A7,A8,A9,B1,B2,X4,W3,W2,W1,Y3,B3,B4,B5,B6,B7,B8,B9,X5,W4,C1,W8,Y2,C2,C3,C4,C5,C6,C7,C8,X6,W5,W6,W7,Y1,C9,D1,D2,D3,X7,D4,D5,X8,D6,D7,X9) )).++cnf(tyx,axiom,+    ( state(W1,W8,W7,W2,A1,W6,W3,W4,W5,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7)+    = +state(W7,W6,W5,W8,A1,W4,W1,W2,W3,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7) )).++cnf(myx,axiom,+    ( state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7,D8,D9,E1,E2,E3,E4,E5,E6)+    = +state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,D7,D8,D9,E1,E2,E3,E4,E5,E6) )).++cnf(byx,axiom,+    ( state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,W1,W2,W3,W8,D7,W4,W7,W6,W5)+    = +state(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,B5,B6,B7,B8,B9,C1,C2,C3,C4,C5,C6,C7,C8,C9,D1,D2,D3,D4,D5,D6,Y1,Y2,Y3,X1,X2,X3,X4,X5,X6,X7,X8,X9,W7,W8,W1,W6,D7,W2,W5,W4,W3) )).++cnf(fyz,axiom,+    ( state(A1,A2,A3,A4,A5,A6,X1,X2,X3,A7,A8,Y1,Y2,Y3,Y4,Y5,A9,B1,B2,B3,B4,B5,B6,U1,U2,U3,U4,U5,B7,B8,B9,C1,C2,C3,C4,V1,V2,V3,V4,V5,C5,C6,C7,C8,C9,W1,W2,W3,D1,D2,D3,D4,D5,D6)+    = +state(A1,A2,A3,A4,A5,A6,V1,U1,Y1,A7,A8,W1,V2,U2,Y2,X1,A9,B1,B2,B3,B4,B5,B6,W2,V3,U3,Y3,X2,B7,B8,B9,C1,C2,C3,C4,W3,V4,U4,Y4,X3,C5,C6,C7,C8,C9,V5,U5,Y5,D1,D2,D3,D4,D5,D6) )).++cnf(myz,axiom,+    ( state(A1,A2,A3,X1,X2,X3,A4,A5,A6,A7,Y3,A8,A9,B1,B2,B3,X4,B4,B5,B6,B7,B8,Y2,B9,C1,C2,C3,C4,X5,C5,C6,C7,C8,C9,Y1,D1,D2,D3,D4,D5,X6,D6,D7,D8,D9,E1,E2,E3,X9,X8,X7,E4,E5,E6)+    = +state(A1,A2,A3,Y1,Y2,Y3,A4,A5,A6,A7,X9,A8,A9,B1,B2,B3,X1,B4,B5,B6,B7,B8,X8,B9,C1,C2,C3,C4,X2,C5,C6,C7,C8,C9,X7,D1,D2,D3,D4,D5,X3,D6,D7,D8,D9,E1,E2,E3,X6,X5,X4,E4,E5,E6) )).++cnf(byz,axiom,+    ( state(X1,X2,X3,A1,A2,A3,A4,A5,A6,Y3,A7,A8,A9,B1,B2,B3,B4,X4,W3,W2,W1,Y2,B5,B6,B7,B8,B9,C1,C2,X5,W4,C3,W8,Y1,C4,C5,C6,C7,C8,C9,D1,X6,W5,W6,W7,D2,D3,D4,D5,D6,D7,X9,X8,X7)+    = +state(Y1,Y2,Y3,A1,A2,A3,A4,A5,A6,X9,A7,A8,A9,B1,B2,B3,B4,X1,W1,W8,W7,X8,B5,B6,B7,B8,B9,C1,C2,X2,W2,C3,W6,X7,C4,C5,C6,C7,C8,C9,D1,X3,W3,W4,W5,D2,D3,D4,D5,D6,D7,X6,X5,X4) )).++cnf(lxz,axiom,+    ( state(X1,A1,A2,X2,A3,A4,X3,A5,A6,W1,W2,W3,X4,A7,A8,A9,B1,B2,B3,B4,Y3,W8,B5,W4,X5,B6,B7,B8,B9,C1,C2,C3,Y2,W7,W6,W5,X6,C4,C5,C6,C7,C8,C9,D1,Y1,X7,D2,D3,X8,D4,D5,X9,D6,D7)+    = +state(Y1,A1,A2,Y2,A3,A4,Y3,A5,A6,W7,W8,W1,X1,A7,A8,A9,B1,B2,B3,B4,X9,W6,B5,W2,X2,B6,B7,B8,B9,C1,C2,C3,X8,W5,W4,W3,X3,C4,C5,C6,C7,C8,C9,D1,X7,X4,D2,D3,X5,D4,D5,X6,D6,D7) )).++cnf(mxz,axiom,+    ( state(A1,X1,A2,A3,X2,A4,A5,X3,A6,A7,A8,A9,B1,X4,B2,B3,B4,B5,B6,Y3,B7,B8,B9,C1,C2,X5,C3,C4,C5,C6,C7,Y2,C8,C9,D1,D2,D3,X6,D4,D5,D6,D7,D8,Y1,D9,E1,X7,E2,E3,X8,E4,E5,X9,E6)+    = +state(A1,Y1,A2,A3,Y2,A4,A5,Y3,A6,A7,A8,A9,B1,X1,B2,B3,B4,B5,B6,X9,B7,B8,B9,C1,C2,X2,C3,C4,C5,C6,C7,X8,C8,C9,D1,D2,D3,X3,D4,D5,D6,D7,D8,X7,D9,E1,X4,E2,E3,X5,E4,E5,X6,E6) )).++cnf(rxz,axiom,+    ( state(A1,A2,X1,A3,A4,X2,A5,A6,X3,A7,A8,A9,B1,B2,X4,W3,W2,W1,Y3,B3,B4,B5,B6,B7,B8,B9,X5,W4,C1,W8,Y2,C2,C3,C4,C5,C6,C7,C8,X6,W5,W6,W7,Y1,C9,D1,D2,D3,X7,D4,D5,X8,D6,D7,X9)+    = +state(A1,A2,Y1,A3,A4,Y2,A5,A6,Y3,A7,A8,A9,B1,B2,X1,W1,W8,W7,X9,B3,B4,B5,B6,B7,B8,B9,X2,W2,C1,W6,X8,C2,C3,C4,C5,C6,C7,C8,X3,W3,W4,W5,X7,C9,D1,D2,D3,X4,D4,D5,X5,D6,D7,X6) )).++%--------------------------------------------------------------------------
+ tests/ROB027-1.p view
@@ -0,0 +1,62 @@+%--------------------------------------------------------------------------+% File     : ROB027-1 : TPTP v6.3.0. Released v1.2.0.+% Domain   : Robbins Algebra+% Problem  : -(-c) = c => Boolean+% Version  : [Win90] (equality) axioms.+%            Theorem formulation : Denies Huntington's axiom.+% English  : If there are elements c and d such that c+d=d, then the+%            algebra is Boolean.++% Refs     : [HMT71] Henkin et al. (1971), Cylindrical Algebras+%          : [Win90] Winker (1990), Robbins Algebra: Conditions that make a+%          : [Wos94] Wos (1994), Two Challenge Problems+% Source   : [Wos94]+% Names    : - [Wos94]++% Status   : Open+% Rating   : 1.00 v2.0.0+% Syntax   : Number of clauses     :    5 (   0 non-Horn;   5 unit;   2 RR)+%            Number of atoms       :    5 (   5 equality)+%            Maximal clause size   :    1 (   1 average)+%            Number of predicates  :    1 (   0 propositional; 2-2 arity)+%            Number of functors    :    5 (   3 constant; 0-2 arity)+%            Number of variables   :    7 (   0 singleton)+%            Maximal term depth    :    6 (   3 average)+% SPC      : CNF_UNK_UEQ++% Comments : Commutativity, associativity, and Huntington's axiom+%            axiomatize Boolean algebra.+%--------------------------------------------------------------------------+%----Include axioms for Robbins algebra+%--------------------------------------------------------------------------+cnf(commutativity_of_add,axiom,+    ( add(X,Y) = add(Y,X) )).++cnf(associativity_of_add,axiom,+    ( add(add(X,Y),Z) = add(X,add(Y,Z)) )).++cnf(robbins_axiom,axiom,+    ( negate(add(negate(add(X,Y)),negate(add(X,negate(Y))))) = X )).++%--------------------------------------------------------------------------+%--------------------------------------------------------------------------+cnf(double_negation,hypothesis,+    ( negate(negate(c)) = c )).++cnf(prove_huntingtons_axiom,negated_conjecture,+    goal_lhs != b).++cnf(anb, axiom, goal_anb = add(a, negate(b))).+cnf(nanb, axiom, goal_nanb = add(negate(a), negate(b))).+cnf(n_nanb, axiom, goal_n_nanb = negate(goal_nanb)).+cnf(n_anb, axiom, goal_n_anb = negate(goal_anb)).+cnf(lhs, axiom, goal_lhs = add(goal_n_anb, goal_n_nanb)).++%--------------------------------------------------------------------------+%----Definition of g+cnf(sos04,axiom,(+    g(A) = negate(add(A,negate(A))) )).++%----Definition of h+cnf(sos05,axiom,(+    h(A) = add(A,add(A,add(A,g(A)))) )).
+ tests/db-goal.p view
@@ -0,0 +1,22 @@+% http://www.dcs.bbk.ac.uk/~szabolcs/rellat-jlamp-second-submission-2.pdf+% appendix b. theorem 3.4, clause 8.+cnf(a, axiom, '^'(X, Y) = '^'(Y, X)).+cnf(a, axiom, '^'(X, '^'(Y, Z)) = '^'(Y, '^'(X, Z))).+cnf(a, axiom, '^'('^'(X, Y), Z) = '^'(X, '^'(Y, Z))).+cnf(a, axiom, v(X, Y) = v(Y, X)).+cnf(a, axiom, v(X, v(Y, Z)) = v(Y, v(X, Z))).+cnf(a, axiom, v(v(X, Y), Z) = v(X, v(Y, Z))).+cnf(a, axiom, v(X, '^'(X, Y)) = X).+cnf(a, axiom, '^'(X, v(X, Y)) = X).+cnf(a, axiom, upme(X,Y,Z) = '^'(X, v(Y, Z))).+cnf(a, axiom, lome(X,Y,Z) = v('^'(X, Y), '^'(X, Z))).+cnf(a, axiom, upjo(X,Y,Z) = '^'(v(X, Y), v(X, Z))).+cnf(a, axiom, lojo(X,Y,Z) = v(X, '^'(Y, Z))).+cnf(a, axiom, v(upme('^'(a, X1),Y1,Z1), '^'(Y1, Z1)) = '^'(v('^'('^'(a, X1), Y1), Z1), v('^'('^'(a, X1), Z1), Y1))).+cnf(a, axiom, upme(X,Y,Z) = v(upme(X,Y,'^'(a, Z)), upme(X,Z,'^'(a, Y)))).+cnf(c1, axiom, c1 = upme(a,x2,y2)).+cnf(c2, axiom, c2 = upme(a,x2,z2)).+cnf(c3, axiom, c3 = upme(x2,y2,z2)).+cnf(c4, axiom, c4 = lome(x2,y2,z2)).+fof(a, conjecture, c1 = c2 => c3 = c4).+%fof(a, conjecture, (upme(a,x2,y2) = upme(a,x2,z2) => upme(x2,y2,z2) = lome(x2,y2,z2))).
tests/group.p view
@@ -1,15 +1,16 @@-fof(identity, axiom,-    ![X]: f(X, e) = X).-fof(right_inverse, axiom,-    ![X]: f(X, i(X)) = e).+%fof(identity, axiom,+%    ![X]: f(X, e) = X).+%fof(right_inverse, axiom,+%    ![X]: f(X, i(X)) = e). fof(associativity, axiom,     ![X, Y, Z]: f(X, f(Y, Z)) = f(f(X, Y), Z)).-%fof(left_inverse, conjecture,-%    ![X]: f(i(X),X) = e).-%fof(left_identity, conjecture,-%    ![X]: f(e, X) = X).+fof(left_inverse, axiom,+    ![X]: f(i(X),X) = e).+fof(left_identity, axiom,+    ![X]: f(e, X) = X).+cnf(a, axiom, a != b). -fof(inverse_distrib, axiom,-    ![X,Y]: f(i(X),i(Y)) = i(f(X,Y))).-fof(commutativity, conjecture,-    ![X,Y]: f(X,Y) = f(Y,X)).+%fof(inverse_distrib, axiom,+%    ![X,Y]: f(i(X),i(Y)) = i(f(X,Y))).+%fof(commutativity, conjecture,+%    ![X,Y]: f(X,Y) = f(Y,X)).
+ tests/nand-goal.p view
@@ -0,0 +1,44 @@+%--------------------------------------------------------------------------+% File     : LAT071-1 : TPTP v6.2.0. Released v2.6.0.+% Domain   : Lattice Theory (Orthomodularlattices)+% Problem  : Given single axiom OML-21C, prove associativity+% Version  : [MRV03] (equality) axioms.+% English  : Given a single axiom candidate OML-21C for orthomodular lattices+%            (OML) in terms of the Sheffer Stroke, prove a Sheffer stroke form+%            of associativity.++% Refs     : [MRV03] McCune et al. (2003), Sheffer Stroke Bases for Ortholatt+% Source   : [MRV03]+% Names    : OML-21C-associativity [MRV03]++% Status   : Open+% Rating   : 1.00 v2.6.0+% Syntax   : Number of clauses     :    2 (   0 non-Horn;   2 unit;   1 RR)+%            Number of atoms       :    2 (   2 equality)+%            Maximal clause size   :    1 (   1 average)+%            Number of predicates  :    1 (   0 propositional; 2-2 arity)+%            Number of functors    :    4 (   3 constant; 0-2 arity)+%            Number of variables   :    4 (   2 singleton)+%            Maximal term depth    :    6 (   4 average)+% SPC      : CNF_UNK_UEQ++% Comments :+%--------------------------------------------------------------------------+%----Single axiom OML-21C+cnf(oml_21C,axiom,+    ( f(f(B,A),f(f(f(f(B,A),A),f(C,A)),f(f(A,A),D))) = A )).++cnf(a, axiom, f(z, f(z, z)) = k).+cnf(fbc, axiom, fbc=f(b,c)).+cnf(fba, axiom, fba=f(b,a)).+cnf(fbc2, axiom, fbc2=f(fbc,fbc)).+cnf(fba2, axiom, fba2=f(fba,fba)).+cnf(lhs, axiom, lhs=f(a,fbc2)).+cnf(rhs, axiom, rhs=f(c,fba2)).+cnf(comm, axiom, f(X,Y)=f(Y,X)).++%----Denial of Sheffer stroke associativity+cnf(associativity,negated_conjecture,+    lhs != rhs).++%--------------------------------------------------------------------------
+ tests/ring-goal.p view
@@ -0,0 +1,11 @@+cnf(plus_comm, axiom, '+'(X, Y) = '+'(Y, X)).+cnf(plus_assoc, axiom, '+'(X, '+'(Y, Z)) = '+'('+'(X, Y), Z)).+cnf(plus_zero, axiom, '+'('0', X) = X).+cnf(plus_inv, axiom, '+'(X, '-'(X)) = '0').+cnf(times_assoc, axiom, '*'(X, '*'(Y, Z)) = '*'('*'(X, Y), Z)).+cnf(distrib, axiom, '*'(X, '+'(Y, Z)) = '+'('*'(X, Y), '*'(X, Z))).+cnf(distrib, axiom, '*'('+'(X, Y), Z) = '+'('*'(X, Z), '*'(Y, Z))).+cnf(cube, axiom, X = '*'(X, '*'(X, X))).+cnf(conjecture, negated_conjecture, '*'(a, b) != '*'(b, a)).+cnf(lhs, axiom, lhs = '*'(a, b)).+cnf(rhs, axiom, rhs = '*'(b, a)).
+ tests/ring2-cancel.p view
@@ -0,0 +1,9 @@+cnf(plus_comm, axiom, '+'(X, Y) = '+'(Y, X)).+cnf(plus_assoc, axiom, '+'(X, '+'(Y, Z)) = '+'('+'(X, Y), Z)).+cnf(plus_zero, axiom, '+'('0', X) = X).+cnf(plus_inv, axiom, '+'(X, '-'(X)) = '0').+cnf(times_assoc, axiom, '*'(X, '*'(Y, Z)) = '*'('*'(X, Y), Z)).+cnf(distrib, axiom, '*'(X, '+'(Y, Z)) = '+'('*'(X, Y), '*'(X, Z))).+cnf(distrib, axiom, '*'('+'(X, Y), Z) = '+'('*'(X, Z), '*'(Y, Z))).+cnf(power_six, axiom, X = '*'(X, '*'(X, '*'(X, '*'(X, '*'(X, X)))))).+cnf(conjecture, negated_conjecture, '+'(x, x) != '0').
+ tests/ring2-goal.p view
@@ -0,0 +1,12 @@+cnf(plus_comm, axiom, '+'(X, Y) = '+'(Y, X)).+cnf(plus_assoc, axiom, '+'(X, '+'(Y, Z)) = '+'('+'(X, Y), Z)).+cnf(plus_zero, axiom, '+'('0', X) = X).+cnf(plus_inv, axiom, '+'(X, '-'(X)) = '0').+cnf(times_assoc, axiom, '*'(X, '*'(Y, Z)) = '*'('*'(X, Y), Z)).+cnf(distrib, axiom, '*'(X, '+'(Y, Z)) = '+'('*'(X, Y), '*'(X, Z))).+cnf(distrib, axiom, '*'('+'(X, Y), Z) = '+'('*'(X, Z), '*'(Y, Z))).+cnf(power_six, axiom, X = '*'(X, '*'(X, '*'(X, '*'(X, '*'(X, X)))))).+cnf(conjecture, negated_conjecture, '*'(a, b) != '*'(b, a)).+cnf(lhs, axiom, lhs = '*'(a, b)).+cnf(rhs, axiom, rhs = '*'(b, a)).+cnf(a, axiom, '+'(X, X) = '0').
+ tests/ring3-goal.p view
@@ -0,0 +1,11 @@+cnf(plus_comm, axiom, '+'(X, Y) = '+'(Y, X)).+cnf(plus_assoc, axiom, '+'(X, '+'(Y, Z)) = '+'('+'(X, Y), Z)).+cnf(plus_zero, axiom, '+'('0', X) = X).+cnf(plus_neg, axiom, '+'(X, '-'(X)) = '0').+cnf(times_assoc, axiom, '*'(X, '*'(Y, Z)) = '*'('*'(X, Y), Z)).+cnf(distrib, axiom, '*'(X, '+'(Y, Z)) = '+'('*'(X, Y), '*'(X, Z))).+cnf(distrib, axiom, '*'('+'(X, Y), Z) = '+'('*'(X, Z), '*'(Y, Z))).+cnf(power_four, axiom, X = '*'(X, '*'(X, '*'(X, X)))).+cnf(conjecture, negated_conjecture, '*'(a, b) != '*'(b, a)).+cnf(lhs, axiom, lhs = '*'(a, b)).+cnf(rhs, axiom, rhs = '*'(b, a)).
+ tests/ring4-goal.p view
@@ -0,0 +1,11 @@+cnf(plus_comm, axiom, '+'(X, Y) = '+'(Y, X)).+cnf(plus_assoc, axiom, '+'(X, '+'(Y, Z)) = '+'('+'(X, Y), Z)).+cnf(plus_zero, axiom, '+'('0', X) = X).+cnf(plus_inv, axiom, '+'(X, '-'(X)) = '0').+cnf(times_ssoc, axiom, '*'(X, '*'(Y, Z)) = '*'('*'(X, Y), Z)).+cnf(distrib, axiom, '*'(X, '+'(Y, Z)) = '+'('*'(X, Y), '*'(X, Z))).+cnf(distrib, axiom, '*'('+'(X, Y), Z) = '+'('*'(X, Z), '*'(Y, Z))).+cnf(power_five, axiom, X = '*'(X, '*'(X, '*'(X, '*'(X, X))))).+cnf(conjecture, negated_conjecture, '*'(a, b) != '*'(b, a)).+cnf(lhs, axiom, lhs = '*'(a, b)).+cnf(rhs, axiom, rhs = '*'(b, a)).
+ tests/robbins-goal.p view
@@ -0,0 +1,6 @@+cnf(comm, axiom, '+'(X, Y) = '+'(Y, X)).+cnf(assoc, axiom, '+'(X, '+'(Y, Z)) = '+'('+'(X, Y), Z)).+cnf(funny, axiom, '-'('+'('-'('+'(X, Y)), '-'('+'(X, '-'(Y))))) = X).+cnf(ma, axiom, '-'(a) = ma).+cnf(mma, axiom, '-'(ma) = mma).+cnf(conjecture, negated_conjecture, mma != a).
tests/veroff.p view
@@ -7,4 +7,10 @@ cnf(associativity, axiom,     f(f(X,W,Y),W,Z) = f(X,W,f(Y,W,Z))). -cnf(goal, axiom, f(f(a1,a2,a3),a4,a5) != f(f(a1,a4,a5),f(a2,a4,a5),f(a3,a4,a5))).+cnf(a123, axiom, f(a1,a2,a3) = f123).+cnf(a145, axiom, f(a1,a4,a5) = f145).+cnf(a245, axiom, f(a2,a4,a5) = f245).+cnf(a345, axiom, f(a3,a4,a5) = f345).+cnf(lhs, axiom, f(f123,a4,a5) = c1).+cnf(rhs, axiom, f(f145,f245,f345) = c2).+cnf(goal, axiom, c1 != c2).
twee.cabal view
@@ -1,5 +1,5 @@ name:                twee-version:             2.1.5+version:             2.2 synopsis:            An equational theorem prover homepage:            http://github.com/nick8325/twee license:             BSD3@@ -36,23 +36,16 @@   description: Build a binary which statically links against libstdc++.   default: False -flag llvm-  description: Build using LLVM backend for faster code.-  default: False- executable twee   main-is:             executable/Main.hs   default-language:    Haskell2010   build-depends:       base < 5,-                       twee-lib == 2.1.5,+                       twee-lib == 2.2,                        containers,                        pretty,                        split,-                       jukebox >= 0.3.5-  ghc-options:         -W -fno-warn-incomplete-patterns -O2 -fmax-worker-args=100--  if flag(llvm)-    ghc-options: -fllvm+                       jukebox == 0.4.*+  ghc-options:         -W -fno-warn-incomplete-patterns    if flag(static)     ghc-options: -optl -static