prove feature, major refactoring
This commit is contained in:
parent
6fd6dd760c
commit
65f093e565
4 changed files with 307 additions and 205 deletions
122
Main.hs
122
Main.hs
|
|
@ -1,51 +1,99 @@
|
|||
module Main (main) where
|
||||
import Prelude (IO, String, getContents, lines, map, print,
|
||||
otherwise, Bool(..), filter, id, unlines,
|
||||
mapM_, ($), elem, notElem, (||), putStrLn, read, (.))
|
||||
import Ternary.Statement (Statement (..), st)
|
||||
import Ternary.Universum (Universum (..), universum)
|
||||
import Ternary.Vee (cleared, think)
|
||||
import System.Environment (getArgs)
|
||||
import Data.Foldable (Foldable)
|
||||
|
||||
main2 :: Universum -> Bool -> IO ()
|
||||
main2 u onlyNew = do
|
||||
import Data.Foldable (Foldable, any)
|
||||
import Data.List (head, tail)
|
||||
import Data.Maybe (isNothing)
|
||||
import GHC.Base (Maybe (..), (==))
|
||||
import System.Environment (getArgs)
|
||||
import Ternary.Statement (Statement (..), st)
|
||||
import Ternary.Term (Item (..), Term (..))
|
||||
import Ternary.Universum (Universum (..), universum)
|
||||
import Ternary.Vee (cleared, hasContradiction, think)
|
||||
import Prelude
|
||||
( Bool (..),
|
||||
IO,
|
||||
String,
|
||||
elem,
|
||||
filter,
|
||||
getContents,
|
||||
id,
|
||||
lines,
|
||||
map,
|
||||
mapM_,
|
||||
notElem,
|
||||
otherwise,
|
||||
print,
|
||||
putStrLn,
|
||||
read,
|
||||
unlines,
|
||||
($),
|
||||
(.),
|
||||
(||),
|
||||
)
|
||||
|
||||
mainSolve :: Universum -> Bool -> IO ()
|
||||
mainSolve u onlyNew = do
|
||||
strs <- getContents
|
||||
let statements = map str2vee . lines $ strs
|
||||
str2vee x = st (read x :: Statement String)
|
||||
mapM_ print
|
||||
. (if onlyNew then filter (`notElem` statements) else id)
|
||||
. cleared
|
||||
. think (universum u) $ statements
|
||||
. think (universum u)
|
||||
$ statements
|
||||
|
||||
withArgs :: (String -> Bool) -> IO ()
|
||||
mainProve :: Universum -> Bool -> IO ()
|
||||
mainProve u onlyNew = do
|
||||
strs <- getContents
|
||||
let statements = map str2vee . tail . lines $ strs
|
||||
proveThis = str2vee . head . lines $ strs
|
||||
str2vee x = st (read x :: Statement String)
|
||||
results = cleared . think (universum u) $ statements
|
||||
anyContradictions = any (hasContradiction proveThis) results
|
||||
proof = swapNothingJF $ if anyContradictions then Nothing else Just (Item recalc == Item results)
|
||||
recalc = cleared . think (universum u) $ proveThis : statements
|
||||
swapNothingJF x
|
||||
| isNothing x = Just False
|
||||
| x == Just False = Nothing
|
||||
| x == Just True = Just True
|
||||
|
||||
print recalc
|
||||
putStrLn ""
|
||||
print results
|
||||
putStrLn ""
|
||||
print proof
|
||||
|
||||
withArgs :: (String -> Bool) -> IO ()
|
||||
withArgs a
|
||||
| a "-h" || a "--help" = putStrLn . unlines $
|
||||
["Logical statement solver",
|
||||
"Usage: solver [PARAMETERS]",
|
||||
"",
|
||||
"Designed according to N.P.Brousentsov works",
|
||||
"and Lewis Carrol diagram. PARAMETERS:",
|
||||
"",
|
||||
"--aristotle, -A\tuse Aristotle logical universum VxVx' for each x",
|
||||
"--new, -n\tfilters only 'new' facts, excluding defined",
|
||||
"--help, -h\tshows this help",
|
||||
"--version, -v\tshows this version",
|
||||
"",
|
||||
"Takes statement \"Socrates is a human\" in such format, e.g.",
|
||||
"",
|
||||
"A \"Socrates\" \"human\"",
|
||||
"",
|
||||
"There are A, E, O, I traditional statements exist.",
|
||||
"Also there are A~, E~, O~, I~ with negated first part"
|
||||
]
|
||||
| a "-h" || a "--help" =
|
||||
putStrLn . unlines $
|
||||
[ "Logical statement solver",
|
||||
"Usage: solver [PARAMETERS]",
|
||||
"",
|
||||
"Designed according to N.P.Brousentsov works",
|
||||
"and Lewis Carrol diagram. PARAMETERS:",
|
||||
"",
|
||||
"--aristotle, -A\tuse Aristotle logical universum VxVx' for each x",
|
||||
"--new, -n\tfilters only 'new' facts, excluding defined",
|
||||
"--help, -h\tshows this help",
|
||||
"--version, -v\tshows this version",
|
||||
"",
|
||||
"Takes statement \"Socrates is a human\" in such format, e.g.",
|
||||
"",
|
||||
"A \"Socrates\" \"human\"",
|
||||
"",
|
||||
"There are A, E, O, I traditional statements exist.",
|
||||
"Also there are A~, E~, O~, I~ with negated first part"
|
||||
]
|
||||
| a "--version" || a "-v" = putStrLn "v1.0.2"
|
||||
| otherwise = main2 uni onlyNew where
|
||||
onlyNew = a "--new" || a "-n"
|
||||
uni =
|
||||
if a "-A" || a "--aristotle"
|
||||
then Aristotle
|
||||
else Empty
|
||||
| a "--prove" = mainProve Aristotle False
|
||||
| otherwise = mainSolve uni onlyNew
|
||||
where
|
||||
onlyNew = a "--new" || a "-n"
|
||||
uni =
|
||||
if a "-A" || a "--aristotle"
|
||||
then Aristotle
|
||||
else Empty
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
|
|
|
|||
|
|
@ -1,14 +1,18 @@
|
|||
module Ternary.Statement (Statement(..), st) where
|
||||
import Ternary.Term (Vee, Term(..), Item(..))
|
||||
data Statement a = A a a -- Affirmo (general affirmative)
|
||||
| I a a -- affIrmo (private affirmative)
|
||||
| E a a -- nEgo (general negative)
|
||||
| O a a -- negO (private negative)
|
||||
| A' a a
|
||||
| I' a a
|
||||
| E' a a
|
||||
| O' a a
|
||||
deriving (Eq, Show, Read)
|
||||
|
||||
data StatementKind = A | I | E | O | A' | I' | E' | O' deriving (Eq, Show, Read)
|
||||
data Statement a = Statement StatementKind a a deriving (Eq, Read)
|
||||
|
||||
instance Show a => Show (Statement a) where
|
||||
show (Statement A x y) = "Every " ++ show x ++ " is " ++ show y
|
||||
show (Statement I x y) = "Some of " ++ show x ++ " is " ++ show y
|
||||
show (Statement E x y) = "None of " ++ show x ++ " is " ++ show y
|
||||
show (Statement O x y) = "Some of " ++ show x ++ " isn't " ++ show y
|
||||
show (Statement A' x y) = "Every non-" ++ show x ++ " is " ++ show y
|
||||
show (Statement I' x y) = "Some of non-" ++ show x ++ " is " ++ show y
|
||||
show (Statement E' x y) = "None of non-" ++ show x ++ " is " ++ show y
|
||||
show (Statement O' x y) = "Some of non-" ++ show x ++ " isn't " ++ show y
|
||||
|
||||
inv :: (Eq a) => Term a -> Term a
|
||||
inv (Term p x) = Term (not p) x
|
||||
|
|
@ -20,11 +24,11 @@ i v x y
|
|||
| x == y = Term v . Item $ [x]
|
||||
|
||||
st :: (Eq a) => Statement a -> Vee a
|
||||
st (A x y) = i False (Term True x) (Term False y)
|
||||
st (I x y) = i True (Term True x) (Term True y)
|
||||
st (E x y) = i False (Term True x) (Term True y)
|
||||
st (O x y) = i True (Term True x) (Term False y)
|
||||
st (A' x y) = i False (Term False x) (Term False y)
|
||||
st (I' x y) = i True (Term False x) (Term True y)
|
||||
st (E' x y) = i False (Term False x) (Term True y)
|
||||
st (O' x y) = i True (Term False x) (Term False y)
|
||||
st (Statement A x y) = i False (Term True x) (Term False y)
|
||||
st (Statement I x y) = i True (Term True x) (Term True y)
|
||||
st (Statement E x y) = i False (Term True x) (Term True y)
|
||||
st (Statement O x y) = i True (Term True x) (Term False y)
|
||||
st (Statement A' x y) = i False (Term False x) (Term False y)
|
||||
st (Statement I' x y) = i True (Term False x) (Term True y)
|
||||
st (Statement E' x y) = i False (Term False x) (Term True y)
|
||||
st (Statement O' x y) = i True (Term False x) (Term False y)
|
||||
|
|
|
|||
160
Ternary/Vee.hs
160
Ternary/Vee.hs
|
|
@ -1,68 +1,118 @@
|
|||
module Ternary.Vee (isObvious, newFact, cleared, think) where
|
||||
import Data.List (head, intersect, length, nub, null, union, (\\))
|
||||
import Data.Maybe (Maybe (Nothing), mapMaybe)
|
||||
import Prelude (Bool (False, True), Eq, any, foldr, fst, map,
|
||||
not, notElem, otherwise, return, snd, ($), (&&),
|
||||
(.), (/=), (<$>), (<*>), (=<<), (==))
|
||||
import Ternary.Term (Item (..), Term (..), Vee)
|
||||
module Ternary.Vee (isObvious, hasContradiction, newFact, cleared, think) where
|
||||
|
||||
import Data.Foldable (concatMap)
|
||||
import Data.List
|
||||
( elem,
|
||||
filter,
|
||||
head,
|
||||
intersect,
|
||||
iterate,
|
||||
length,
|
||||
nub,
|
||||
null,
|
||||
union,
|
||||
(\\),
|
||||
)
|
||||
import Data.Maybe (Maybe (Nothing), mapMaybe)
|
||||
import GHC.Base ((<), (>))
|
||||
import GHC.Maybe (Maybe (..))
|
||||
import Ternary.Term (Item (..), Term (..), Vee)
|
||||
import Prelude
|
||||
( Bool (False, True),
|
||||
Eq,
|
||||
any,
|
||||
foldr,
|
||||
fst,
|
||||
map,
|
||||
not,
|
||||
notElem,
|
||||
otherwise,
|
||||
return,
|
||||
snd,
|
||||
($),
|
||||
(&&),
|
||||
(.),
|
||||
(/=),
|
||||
(<$>),
|
||||
(<*>),
|
||||
(=<<),
|
||||
(==),
|
||||
)
|
||||
|
||||
type Knowledge a = [Vee a]
|
||||
|
||||
type InferenceRule a = Vee a -> Vee a -> (Knowledge a, Maybe (Vee a))
|
||||
|
||||
isSubsetOf :: (Eq a) => [a] -> [a] -> Bool
|
||||
a `isSubsetOf` b = nda && not ndb
|
||||
where
|
||||
nda = null $ a \\ b
|
||||
ndb = null $ b \\ a
|
||||
where
|
||||
nda = null $ a \\ b
|
||||
ndb = null $ b \\ a
|
||||
|
||||
isObvious :: (Eq a) => Vee a -> Vee a -> Bool
|
||||
isObvious (Term x (Item a)) (Term y (Item b))
|
||||
| x /= y = False
|
||||
| x = a `isSubsetOf` b
|
||||
| not x = b `isSubsetOf` a
|
||||
| x /= y = False
|
||||
| x = a `isSubsetOf` b
|
||||
| not x = b `isSubsetOf` a
|
||||
|
||||
newFact :: (Eq a) => Vee a -> Vee a -> ([Vee a], Maybe (Vee a))
|
||||
hasContradiction :: (Eq a) => Vee a -> Vee a -> Bool
|
||||
hasContradiction (Term x (Item a)) (Term y (Item b))
|
||||
| a == b && x /= y = True
|
||||
| a `isSubsetOf` b && x < y = True
|
||||
| b `isSubsetOf` a && x > y = True
|
||||
| otherwise = False
|
||||
|
||||
notT :: Term a -> Term a
|
||||
notT (Term x v) = Term (not x) v
|
||||
|
||||
rulePosFromNeg :: (Eq a) => InferenceRule a
|
||||
rulePosFromNeg (Term False (Item negSet)) positive@(Term True (Item posSet))
|
||||
| length diff /= 1 = ([], Nothing)
|
||||
| missing `elem` posSet = ([], Nothing)
|
||||
| otherwise = ([positive], Just (Term True (Item (missing : posSet))))
|
||||
where
|
||||
diff = negSet \\ posSet
|
||||
missing = notT (head diff)
|
||||
|
||||
ruleNegFromNeg :: (Eq a) => InferenceRule a
|
||||
ruleNegFromNeg (Term False (Item i0)) (Term False (Item i1))
|
||||
| length evidence /= 1 = ([], Nothing)
|
||||
| null diff0 && null diff1 = (map (Term False . Item) [i0, i1], Just (Term False (Item result)))
|
||||
| otherwise = ([], Just (Term False (Item result)))
|
||||
where
|
||||
evidence = map notT i0 `intersect` i1
|
||||
diff0 = (i0 \\ i1) \\ map notT evidence
|
||||
diff1 = (i1 \\ i0) \\ evidence
|
||||
result = (i0 `intersect` i1) `union` diff0 `union` diff1
|
||||
|
||||
newFact :: (Eq a) => InferenceRule a
|
||||
newFact a@(Term True _) b@(Term False _) = newFact b a
|
||||
newFact (Term False (Item iF)) tT@(Term True (Item iT))
|
||||
| length ldF /= 1 = ([], Nothing)
|
||||
| otherwise =
|
||||
if d'F `notElem` iT
|
||||
then (return tT, return (Term True (Item (d'F:iT))))
|
||||
else ([], Nothing)
|
||||
where
|
||||
ldF = iF \\ iT
|
||||
d'F = notT . head $ ldF
|
||||
notT (Term x v) = Term (not x) v
|
||||
newFact (Term False (Item i0)) (Term False (Item i1))
|
||||
| length e /= 1 = ([], Nothing)
|
||||
| otherwise =
|
||||
if null d0 && null d1
|
||||
then (map (Term False . Item) [i0, i1], vee0)
|
||||
else ([], vee0)
|
||||
where
|
||||
notT (Term x v) = Term (not x) v
|
||||
terms = (i0 `intersect` i1) `union` d0 `union` d1
|
||||
e = map notT i0 `intersect` i1
|
||||
d0 = (i0 \\ i1) \\ map notT e
|
||||
d1 = (i1 \\ i0) \\ e
|
||||
vee0 = return (Term False (Item terms))
|
||||
newFact a@(Term False _) b@(Term True _) = rulePosFromNeg a b
|
||||
newFact a@(Term False _) b@(Term False _) = ruleNegFromNeg a b
|
||||
newFact _ _ = ([], Nothing)
|
||||
|
||||
pseudofix :: (Eq a) => (a -> a) -> a -> a
|
||||
pseudofix f x0
|
||||
| y == y' = y
|
||||
| otherwise = y'
|
||||
where
|
||||
y = f x0
|
||||
y' = f y
|
||||
next :: (Eq a) => (Knowledge a, Knowledge a) -> (Knowledge a, Knowledge a)
|
||||
next (old, new) = (old `union` new \\ used, added)
|
||||
where
|
||||
results = [newFact o n | o <- old, n <- new]
|
||||
used = concatMap fst results
|
||||
added = mapMaybe snd results
|
||||
|
||||
next :: (Eq a) => ([Vee a], [Vee a]) -> ([Vee a], [Vee a])
|
||||
next (o,n) = (o `union` n \\ (fst =<< r), mapMaybe snd r)
|
||||
where
|
||||
r = newFact <$> o <*> n
|
||||
applyFacts :: (Eq a) => Knowledge a -> Knowledge a -> Knowledge a
|
||||
applyFacts old new =
|
||||
fst . head . dropStable $ iterate next (old, new)
|
||||
where
|
||||
dropStable (x : y : xs)
|
||||
| x == y = [x]
|
||||
| otherwise = dropStable (y : xs)
|
||||
dropStable _ = []
|
||||
|
||||
applyFacts :: (Eq a) => [Vee a] -> [Vee a] -> [Vee a]
|
||||
applyFacts old new = fst $ pseudofix next (old, new)
|
||||
cleared :: (Eq a) => Knowledge a -> Knowledge a
|
||||
cleared vees = nub $ filter (not . isRedundant) vees
|
||||
where
|
||||
isRedundant v = any (isObvious v) vees
|
||||
|
||||
cleared :: (Eq a) => [Vee a] -> [Vee a]
|
||||
cleared vees = nub [vee | vee <- vees, not $ any (isObvious vee) vees]
|
||||
|
||||
think :: (Eq a) => ([Vee a]->[Vee a]) -> [Vee a] -> [Vee a]
|
||||
think addition = foldr (applyFacts . withUni . return) [] where
|
||||
think :: (Eq a) => (Knowledge a -> Knowledge a) -> Knowledge a -> Knowledge a
|
||||
think addition = foldr (applyFacts . withUni . return) []
|
||||
where
|
||||
withUni vees = applyFacts (addition vees) vees
|
||||
|
|
|
|||
192
Tests/syllotest
192
Tests/syllotest
|
|
@ -1,96 +1,96 @@
|
|||
(A "y" "z", A "x" "y", A "x" "z")
|
||||
(A "y" "z", E' "x" "y", E' "x" "z")
|
||||
(E "y" "z", A "x" "y", E "x" "z")
|
||||
(E "y" "z", E' "x" "y", A' "x" "z")
|
||||
(A "y" "z", A "x" "y", I "x" "z")
|
||||
(A "y" "z", A "x" "y", I' "x" "z")
|
||||
(A "y" "z", E' "x" "y", O "x" "z")
|
||||
(A "y" "z", E' "x" "y", O' "x" "z")
|
||||
(E "y" "z", A "x" "y", O "x" "z")
|
||||
(E "y" "z", A "x" "y", O' "x" "z")
|
||||
(E "y" "z", E' "x" "y", I "x" "z")
|
||||
(E "y" "z", E' "x" "y", I' "x" "z")
|
||||
(A "y" "z", A' "x" "y", I "x" "z")
|
||||
(A "y" "z", E "x" "y", O' "x" "z")
|
||||
(E "y" "z", A' "x" "y", O "x" "z")
|
||||
(E "y" "z", E "x" "y", I' "x" "z")
|
||||
(A "y" "z", I "x" "y", I "x" "z")
|
||||
(A "y" "z", O' "x" "y", O' "x" "z")
|
||||
(E "y" "z", I "x" "y", O "x" "z")
|
||||
(E "y" "z", O' "x" "y", I' "x" "z")
|
||||
(I "y" "z", A' "x" "y", I "x" "z")
|
||||
(I "y" "z", E "x" "y", O' "x" "z")
|
||||
(O "y" "z", A' "x" "y", O "x" "z")
|
||||
(O "y" "z", E "x" "y", I' "x" "z")
|
||||
(A "z" "y", A' "x" "y", A' "x" "z")
|
||||
(A "z" "y", E "x" "y", E "x" "z")
|
||||
(E "z" "y", A "x" "y", E "x" "z")
|
||||
(E "z" "y", E' "x" "y", A' "x" "z")
|
||||
(A "z" "y", A' "x" "y", I "x" "z")
|
||||
(A "z" "y", A' "x" "y", I' "x" "z")
|
||||
(A "z" "y", E "x" "y", O "x" "z")
|
||||
(A "z" "y", E "x" "y", O' "x" "z")
|
||||
(E "z" "y", A "x" "y", O "x" "z")
|
||||
(E "z" "y", A "x" "y", O' "x" "z")
|
||||
(E "z" "y", E' "x" "y", I "x" "z")
|
||||
(E "z" "y", E' "x" "y", I' "x" "z")
|
||||
(A "z" "y", A "x" "y", I' "x" "z")
|
||||
(A "z" "y", E' "x" "y", O "x" "z")
|
||||
(E "z" "y", A' "x" "y", O "x" "z")
|
||||
(E "z" "y", E "x" "y", I' "x" "z")
|
||||
(A "z" "y", I' "x" "y", I' "x" "z")
|
||||
(A "z" "y", O "x" "y", O "x" "z")
|
||||
(E "z" "y", I "x" "y", O "x" "z")
|
||||
(E "z" "y", O' "x" "y", I' "x" "z")
|
||||
(I "z" "y", A' "x" "y", I "x" "z")
|
||||
(I "z" "y", E "x" "y", O' "x" "z")
|
||||
(O "z" "y", A "x" "y", O' "x" "z")
|
||||
(O "z" "y", E' "x" "y", I "x" "z")
|
||||
(A "y" "z", A' "y" "x", A "x" "z")
|
||||
(A "y" "z", E' "y" "x", E' "x" "z")
|
||||
(E "y" "z", A' "y" "x", E "x" "z")
|
||||
(E "y" "z", E' "y" "x", A' "x" "z")
|
||||
(A "y" "z", A' "y" "x", I "x" "z")
|
||||
(A "y" "z", A' "y" "x", I' "x" "z")
|
||||
(A "y" "z", E' "y" "x", O "x" "z")
|
||||
(A "y" "z", E' "y" "x", O' "x" "z")
|
||||
(E "y" "z", A' "y" "x", O "x" "z")
|
||||
(E "y" "z", A' "y" "x", O' "x" "z")
|
||||
(E "y" "z", E' "y" "x", I "x" "z")
|
||||
(E "y" "z", E' "y" "x", I' "x" "z")
|
||||
(A "y" "z", A "y" "x", I "x" "z")
|
||||
(A "y" "z", E "y" "x", O' "x" "z")
|
||||
(E "y" "z", A "y" "x", O "x" "z")
|
||||
(E "y" "z", E "y" "x", I' "x" "z")
|
||||
(A "y" "z", I "y" "x", I "x" "z")
|
||||
(A "y" "z", O "y" "x", O' "x" "z")
|
||||
(E "y" "z", I "y" "x", O "x" "z")
|
||||
(E "y" "z", O "y" "x", I' "x" "z")
|
||||
(I "y" "z", A "y" "x", I "x" "z")
|
||||
(I "y" "z", E "y" "x", O' "x" "z")
|
||||
(O "y" "z", A "y" "x", O "x" "z")
|
||||
(O "y" "z", E "y" "x", I' "x" "z")
|
||||
(A "z" "y", A "y" "x", A' "x" "z")
|
||||
(A "z" "y", E "y" "x", E "x" "z")
|
||||
(E "z" "y", A' "y" "x", E "x" "z")
|
||||
(E "z" "y", E' "y" "x", A' "x" "z")
|
||||
(A "z" "y", A "y" "x", I "x" "z")
|
||||
(A "z" "y", A "y" "x", I' "x" "z")
|
||||
(A "z" "y", E "y" "x", O "x" "z")
|
||||
(A "z" "y", E "y" "x", O' "x" "z")
|
||||
(E "z" "y", A' "y" "x", O "x" "z")
|
||||
(E "z" "y", A' "y" "x", O' "x" "z")
|
||||
(E "z" "y", E' "y" "x", I "x" "z")
|
||||
(E "z" "y", E' "y" "x", I' "x" "z")
|
||||
(A "z" "y", A' "y" "x", I' "x" "z")
|
||||
(A "z" "y", E' "y" "x", O "x" "z")
|
||||
(E "z" "y", A "y" "x", O "x" "z")
|
||||
(E "z" "y", E "y" "x", I' "x" "z")
|
||||
(A "z" "y", I' "y" "x", I' "x" "z")
|
||||
(A "z" "y", O' "y" "x", O "x" "z")
|
||||
(E "z" "y", I "y" "x", O "x" "z")
|
||||
(E "z" "y", O "y" "x", I' "x" "z")
|
||||
(I "z" "y", A "y" "x", I "x" "z")
|
||||
(I "z" "y", E "y" "x", O' "x" "z")
|
||||
(O "z" "y", A' "y" "x", O' "x" "z")
|
||||
(O "z" "y", E' "y" "x", I "x" "z")
|
||||
(Statement A "y" "z", Statement A "x" "y", Statement A "x" "z")
|
||||
(Statement A "y" "z", Statement E' "x" "y", Statement E' "x" "z")
|
||||
(Statement E "y" "z", Statement A "x" "y", Statement E "x" "z")
|
||||
(Statement E "y" "z", Statement E' "x" "y", Statement A' "x" "z")
|
||||
(Statement A "y" "z", Statement A "x" "y", Statement I "x" "z")
|
||||
(Statement A "y" "z", Statement A "x" "y", Statement I' "x" "z")
|
||||
(Statement A "y" "z", Statement E' "x" "y", Statement O "x" "z")
|
||||
(Statement A "y" "z", Statement E' "x" "y", Statement O' "x" "z")
|
||||
(Statement E "y" "z", Statement A "x" "y", Statement O "x" "z")
|
||||
(Statement E "y" "z", Statement A "x" "y", Statement O' "x" "z")
|
||||
(Statement E "y" "z", Statement E' "x" "y", Statement I "x" "z")
|
||||
(Statement E "y" "z", Statement E' "x" "y", Statement I' "x" "z")
|
||||
(Statement A "y" "z", Statement A' "x" "y", Statement I "x" "z")
|
||||
(Statement A "y" "z", Statement E "x" "y", Statement O' "x" "z")
|
||||
(Statement E "y" "z", Statement A' "x" "y", Statement O "x" "z")
|
||||
(Statement E "y" "z", Statement E "x" "y", Statement I' "x" "z")
|
||||
(Statement A "y" "z", Statement I "x" "y", Statement I "x" "z")
|
||||
(Statement A "y" "z", Statement O' "x" "y", Statement O' "x" "z")
|
||||
(Statement E "y" "z", Statement I "x" "y", Statement O "x" "z")
|
||||
(Statement E "y" "z", Statement O' "x" "y", Statement I' "x" "z")
|
||||
(Statement I "y" "z", Statement A' "x" "y", Statement I "x" "z")
|
||||
(Statement I "y" "z", Statement E "x" "y", Statement O' "x" "z")
|
||||
(Statement O "y" "z", Statement A' "x" "y", Statement O "x" "z")
|
||||
(Statement O "y" "z", Statement E "x" "y", Statement I' "x" "z")
|
||||
(Statement A "z" "y", Statement A' "x" "y", Statement A' "x" "z")
|
||||
(Statement A "z" "y", Statement E "x" "y", Statement E "x" "z")
|
||||
(Statement E "z" "y", Statement A "x" "y", Statement E "x" "z")
|
||||
(Statement E "z" "y", Statement E' "x" "y", Statement A' "x" "z")
|
||||
(Statement A "z" "y", Statement A' "x" "y", Statement I "x" "z")
|
||||
(Statement A "z" "y", Statement A' "x" "y", Statement I' "x" "z")
|
||||
(Statement A "z" "y", Statement E "x" "y", Statement O "x" "z")
|
||||
(Statement A "z" "y", Statement E "x" "y", Statement O' "x" "z")
|
||||
(Statement E "z" "y", Statement A "x" "y", Statement O "x" "z")
|
||||
(Statement E "z" "y", Statement A "x" "y", Statement O' "x" "z")
|
||||
(Statement E "z" "y", Statement E' "x" "y", Statement I "x" "z")
|
||||
(Statement E "z" "y", Statement E' "x" "y", Statement I' "x" "z")
|
||||
(Statement A "z" "y", Statement A "x" "y", Statement I' "x" "z")
|
||||
(Statement A "z" "y", Statement E' "x" "y", Statement O "x" "z")
|
||||
(Statement E "z" "y", Statement A' "x" "y", Statement O "x" "z")
|
||||
(Statement E "z" "y", Statement E "x" "y", Statement I' "x" "z")
|
||||
(Statement A "z" "y", Statement I' "x" "y", Statement I' "x" "z")
|
||||
(Statement A "z" "y", Statement O "x" "y", Statement O "x" "z")
|
||||
(Statement E "z" "y", Statement I "x" "y", Statement O "x" "z")
|
||||
(Statement E "z" "y", Statement O' "x" "y", Statement I' "x" "z")
|
||||
(Statement I "z" "y", Statement A' "x" "y", Statement I "x" "z")
|
||||
(Statement I "z" "y", Statement E "x" "y", Statement O' "x" "z")
|
||||
(Statement O "z" "y", Statement A "x" "y", Statement O' "x" "z")
|
||||
(Statement O "z" "y", Statement E' "x" "y", Statement I "x" "z")
|
||||
(Statement A "y" "z", Statement A' "y" "x", Statement A "x" "z")
|
||||
(Statement A "y" "z", Statement E' "y" "x", Statement E' "x" "z")
|
||||
(Statement E "y" "z", Statement A' "y" "x", Statement E "x" "z")
|
||||
(Statement E "y" "z", Statement E' "y" "x", Statement A' "x" "z")
|
||||
(Statement A "y" "z", Statement A' "y" "x", Statement I "x" "z")
|
||||
(Statement A "y" "z", Statement A' "y" "x", Statement I' "x" "z")
|
||||
(Statement A "y" "z", Statement E' "y" "x", Statement O "x" "z")
|
||||
(Statement A "y" "z", Statement E' "y" "x", Statement O' "x" "z")
|
||||
(Statement E "y" "z", Statement A' "y" "x", Statement O "x" "z")
|
||||
(Statement E "y" "z", Statement A' "y" "x", Statement O' "x" "z")
|
||||
(Statement E "y" "z", Statement E' "y" "x", Statement I "x" "z")
|
||||
(Statement E "y" "z", Statement E' "y" "x", Statement I' "x" "z")
|
||||
(Statement A "y" "z", Statement A "y" "x", Statement I "x" "z")
|
||||
(Statement A "y" "z", Statement E "y" "x", Statement O' "x" "z")
|
||||
(Statement E "y" "z", Statement A "y" "x", Statement O "x" "z")
|
||||
(Statement E "y" "z", Statement E "y" "x", Statement I' "x" "z")
|
||||
(Statement A "y" "z", Statement I "y" "x", Statement I "x" "z")
|
||||
(Statement A "y" "z", Statement O "y" "x", Statement O' "x" "z")
|
||||
(Statement E "y" "z", Statement I "y" "x", Statement O "x" "z")
|
||||
(Statement E "y" "z", Statement O "y" "x", Statement I' "x" "z")
|
||||
(Statement I "y" "z", Statement A "y" "x", Statement I "x" "z")
|
||||
(Statement I "y" "z", Statement E "y" "x", Statement O' "x" "z")
|
||||
(Statement O "y" "z", Statement A "y" "x", Statement O "x" "z")
|
||||
(Statement O "y" "z", Statement E "y" "x", Statement I' "x" "z")
|
||||
(Statement A "z" "y", Statement A "y" "x", Statement A' "x" "z")
|
||||
(Statement A "z" "y", Statement E "y" "x", Statement E "x" "z")
|
||||
(Statement E "z" "y", Statement A' "y" "x", Statement E "x" "z")
|
||||
(Statement E "z" "y", Statement E' "y" "x", Statement A' "x" "z")
|
||||
(Statement A "z" "y", Statement A "y" "x", Statement I "x" "z")
|
||||
(Statement A "z" "y", Statement A "y" "x", Statement I' "x" "z")
|
||||
(Statement A "z" "y", Statement E "y" "x", Statement O "x" "z")
|
||||
(Statement A "z" "y", Statement E "y" "x", Statement O' "x" "z")
|
||||
(Statement E "z" "y", Statement A' "y" "x", Statement O "x" "z")
|
||||
(Statement E "z" "y", Statement A' "y" "x", Statement O' "x" "z")
|
||||
(Statement E "z" "y", Statement E' "y" "x", Statement I "x" "z")
|
||||
(Statement E "z" "y", Statement E' "y" "x", Statement I' "x" "z")
|
||||
(Statement A "z" "y", Statement A' "y" "x", Statement I' "x" "z")
|
||||
(Statement A "z" "y", Statement E' "y" "x", Statement O "x" "z")
|
||||
(Statement E "z" "y", Statement A "y" "x", Statement O "x" "z")
|
||||
(Statement E "z" "y", Statement E "y" "x", Statement I' "x" "z")
|
||||
(Statement A "z" "y", Statement I' "y" "x", Statement I' "x" "z")
|
||||
(Statement A "z" "y", Statement O' "y" "x", Statement O "x" "z")
|
||||
(Statement E "z" "y", Statement I "y" "x", Statement O "x" "z")
|
||||
(Statement E "z" "y", Statement O "y" "x", Statement I' "x" "z")
|
||||
(Statement I "z" "y", Statement A "y" "x", Statement I "x" "z")
|
||||
(Statement I "z" "y", Statement E "y" "x", Statement O' "x" "z")
|
||||
(Statement O "z" "y", Statement A' "y" "x", Statement O' "x" "z")
|
||||
(Statement O "z" "y", Statement E' "y" "x", Statement I "x" "z")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue