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 +88/−27
- tests/PUZ037-3-2.p +106/−0
- tests/PUZ037-3.p +110/−0
- tests/PUZ052-1.p +129/−0
- tests/ROB027-1.p +62/−0
- tests/db-goal.p +22/−0
- tests/group.p +13/−12
- tests/nand-goal.p +44/−0
- tests/ring-goal.p +11/−0
- tests/ring2-cancel.p +9/−0
- tests/ring2-goal.p +12/−0
- tests/ring3-goal.p +11/−0
- tests/ring4-goal.p +11/−0
- tests/robbins-goal.p +6/−0
- tests/veroff.p +7/−1
- twee.cabal +4/−11
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