Gary is big. Gary is red. Gary is young. If Gary is kind and Gary is young then Gary is rough. If something is kind then it is nice. Young things are kind. Rough, smart things are big. All smart things are rough. All rough, big things are red. Red, big things are smart. Red things are big.
Gary is big.
("Gary" "is" "big" "+")
Gary is red.
("Gary" "is" "red" "+")
Gary is young.
("Gary" "is" "young" "+")
If Gary is kind and Gary is young then Gary is rough.
((("Gary" "is" "kind" "+") ("Gary" "is" "young" "+")) -> ("Gary" "is" "rough" "+"))
If something is kind then it is nice.
((("something" "is" "kind" "+")) -> ("something" "is" "nice" "+"))
Young things are kind.
((("something" "is" "young" "+")) -> ("something" "is" "kind" "+"))
Rough, smart things are big.
((("something" "is" "rough" "+") ("something" "is" "smart" "+")) -> ("something" "is" "big" "+"))
All smart things are rough.
((("something" "is" "smart" "+")) -> ("something" "is" "rough" "+"))
All rough, big things are red.
((("something" "is" "rough" "+") ("something" "is" "big" "+")) -> ("something" "is" "red" "+"))
Red, big things are smart.
((("something" "is" "red" "+") ("something" "is" "big" "+")) -> ("something" "is" "smart" "+"))
Red things are big.
((("something" "is" "red" "+")) -> ("something" "is" "big" "+"))
Gary is big.
True
1
proof
[(triple1 OR ((triple2) -> rule8))]
("Gary" "is" "big" "+")
triple1
((triple2) -> (rule8 % int1))
Gary is big.
("Gary" "is" "big" "+")
int1
Gary is not red.
False
1
inv-proof
[(triple2 OR ((((((triple3) -> rule3) triple3) -> rule1) triple1) -> rule6))]
("Gary" "is" "red" "-")
triple2
((((((triple3) -> (rule3 % int3)) triple3) -> (rule1 % int2)) triple1) -> (rule6 % int1))
Gary is red.
("Gary" "is" "red" "+")
int1
Gary is rough.
("Gary" "is" "rough" "+")
int2
Gary is kind.
("Gary" "is" "kind" "+")
int3
@0: Gary is big.[(triple1 OR ((triple2) -> rule8))] Gary is red.[(triple2 OR ((((((triple3) -> rule3) triple3) -> rule1) triple1) -> rule6))] Gary is young.[(triple3)] @1: Gary is kind.[(((triple3) -> rule3))] Gary is smart.[(((triple2 triple1) -> rule7) OR ((triple2 ((triple2) -> rule8)) -> rule7) OR ((((((((triple3) -> rule3) triple3) -> rule1) triple1) -> rule6) triple1) -> rule7) OR ((((((((triple3) -> rule3) triple3) -> rule1) triple1) -> rule6) ((triple2) -> rule8)) -> rule7))] @2: Gary is nice.[(((((triple3) -> rule3)) -> rule2))] Gary is rough.[(((((triple2 triple1) -> rule7)) -> rule5) OR ((((triple3) -> rule3) triple3) -> rule1) OR ((((triple2 ((triple2) -> rule8)) -> rule7)) -> rule5))]
Gary is big.
("Gary" "is" "big" "+")
triple1
((triple2) -> (rule8 % int1))
Gary is big.
("Gary" "is" "big" "+")
int1
Gary is red.
("Gary" "is" "red" "+")
triple2
((((((triple3) -> (rule3 % int3)) triple3) -> (rule1 % int2)) triple1) -> (rule6 % int1))
Gary is red.
("Gary" "is" "red" "+")
int1
Gary is rough.
("Gary" "is" "rough" "+")
int2
Gary is kind.
("Gary" "is" "kind" "+")
int3
Gary is young.
("Gary" "is" "young" "+")
triple3
Gary is kind.
("Gary" "is" "kind" "+")
((triple3) -> (rule3 % int1))
Gary is kind.
("Gary" "is" "kind" "+")
int1
Gary is smart.
("Gary" "is" "smart" "+")
((triple2 triple1) -> (rule7 % int1))
Gary is smart.
("Gary" "is" "smart" "+")
int1
((triple2 ((triple2) -> (rule8 % int2))) -> (rule7 % int1))
Gary is smart.
("Gary" "is" "smart" "+")
int1
Gary is big.
("Gary" "is" "big" "+")
int2
((((((((triple3) -> (rule3 % int4)) triple3) -> (rule1 % int3)) triple1) -> (rule6 % int2)) triple1) -> (rule7 % int1))
Gary is smart.
("Gary" "is" "smart" "+")
int1
Gary is red.
("Gary" "is" "red" "+")
int2
Gary is rough.
("Gary" "is" "rough" "+")
int3
Gary is kind.
("Gary" "is" "kind" "+")
int4
((((((((triple3) -> (rule3 % int5)) triple3) -> (rule1 % int4)) triple1) -> (rule6 % int3)) ((triple2) -> (rule8 % int2))) -> (rule7 % int1))
Gary is smart.
("Gary" "is" "smart" "+")
int1
Gary is big.
("Gary" "is" "big" "+")
int2
Gary is red.
("Gary" "is" "red" "+")
int3
Gary is rough.
("Gary" "is" "rough" "+")
int4
Gary is kind.
("Gary" "is" "kind" "+")
int5
Gary is nice.
("Gary" "is" "nice" "+")
((((triple3) -> (rule3 % int2))) -> (rule2 % int1))
Gary is nice.
("Gary" "is" "nice" "+")
int1
Gary is kind.
("Gary" "is" "kind" "+")
int2
Gary is rough.
("Gary" "is" "rough" "+")
((((triple2 triple1) -> (rule7 % int2))) -> (rule5 % int1))
Gary is rough.
("Gary" "is" "rough" "+")
int1
Gary is smart.
("Gary" "is" "smart" "+")
int2
((((triple3) -> (rule3 % int2)) triple3) -> (rule1 % int1))
Gary is rough.
("Gary" "is" "rough" "+")
int1
Gary is kind.
("Gary" "is" "kind" "+")
int2
((((triple2 ((triple2) -> (rule8 % int3))) -> (rule7 % int2))) -> (rule5 % int1))
Gary is rough.
("Gary" "is" "rough" "+")
int1
Gary is smart.
("Gary" "is" "smart" "+")
int2
Gary is big.
("Gary" "is" "big" "+")
int3