Charlie is big. Charlie is cold. Charlie is furry. Charlie is green. Charlie is nice. Charlie is red. Charlie is young. All big things are cold. If Charlie is cold and Charlie is furry then Charlie is nice. Nice things are furry. If something is red and young then it is big. If something is nice and furry then it is young. If something is big and not furry then it is green.
Charlie is big.
("Charlie" "is" "big" "+")
Charlie is cold.
("Charlie" "is" "cold" "+")
Charlie is furry.
("Charlie" "is" "furry" "+")
Charlie is green.
("Charlie" "is" "green" "+")
Charlie is nice.
("Charlie" "is" "nice" "+")
Charlie is red.
("Charlie" "is" "red" "+")
Charlie is young.
("Charlie" "is" "young" "+")
All big things are cold.
((("something" "is" "big" "+")) -> ("something" "is" "cold" "+"))
If Charlie is cold and Charlie is furry then Charlie is nice.
((("Charlie" "is" "cold" "+") ("Charlie" "is" "furry" "+")) -> ("Charlie" "is" "nice" "+"))
Nice things are furry.
((("something" "is" "nice" "+")) -> ("something" "is" "furry" "+"))
If something is red and young then it is big.
((("something" "is" "red" "+") ("something" "is" "young" "+")) -> ("something" "is" "big" "+"))
If something is nice and furry then it is young.
((("something" "is" "nice" "+") ("something" "is" "furry" "+")) -> ("something" "is" "young" "+"))
If something is big and not furry then it is green.
((("something" "is" "big" "+") ("something" "is" "furry" "~")) -> ("something" "is" "green" "+"))
Charlie is nice.
True
1
proof
[(triple5 OR ((triple2 triple3) -> rule2) OR ((((triple1) -> rule1) triple3) -> rule2) OR ((((((triple6 triple7) -> rule4)) -> rule1) triple3) -> rule2))]
("Charlie" "is" "nice" "+")
triple5
((triple2 triple3) -> (rule2 % int1))
Charlie is nice.
("Charlie" "is" "nice" "+")
int1
((((triple1) -> (rule1 % int2)) triple3) -> (rule2 % int1))
Charlie is nice.
("Charlie" "is" "nice" "+")
int1
Charlie is cold.
("Charlie" "is" "cold" "+")
int2
((((((triple6 triple7) -> (rule4 % int3))) -> (rule1 % int2)) triple3) -> (rule2 % int1))
Charlie is nice.
("Charlie" "is" "nice" "+")
int1
Charlie is cold.
("Charlie" "is" "cold" "+")
int2
Charlie is big.
("Charlie" "is" "big" "+")
int3
Charlie is not young.
False
1
inv-proof
[(triple7 OR ((triple5 triple3) -> rule5) OR ((triple5 ((triple5) -> rule3)) -> rule5) OR ((((triple2 triple3) -> rule2) triple3) -> rule5) OR ((((triple2 triple3) -> rule2) ((triple5) -> rule3)) -> rule5) OR ((((((triple1) -> rule1) triple3) -> rule2) triple3) -> rule5) OR ((((((triple1) -> rule1) triple3) -> rule2) ((triple5) -> rule3)) -> rule5))]
("Charlie" "is" "young" "-")
triple7
((triple5 triple3) -> (rule5 % int1))
Charlie is young.
("Charlie" "is" "young" "+")
int1
((triple5 ((triple5) -> (rule3 % int2))) -> (rule5 % int1))
Charlie is young.
("Charlie" "is" "young" "+")
int1
Charlie is furry.
("Charlie" "is" "furry" "+")
int2
((((triple2 triple3) -> (rule2 % int2)) triple3) -> (rule5 % int1))
Charlie is young.
("Charlie" "is" "young" "+")
int1
Charlie is nice.
("Charlie" "is" "nice" "+")
int2
((((triple2 triple3) -> (rule2 % int3)) ((triple5) -> (rule3 % int2))) -> (rule5 % int1))
Charlie is young.
("Charlie" "is" "young" "+")
int1
Charlie is furry.
("Charlie" "is" "furry" "+")
int2
Charlie is nice.
("Charlie" "is" "nice" "+")
int3
((((((triple1) -> (rule1 % int3)) triple3) -> (rule2 % int2)) triple3) -> (rule5 % int1))
Charlie is young.
("Charlie" "is" "young" "+")
int1
Charlie is nice.
("Charlie" "is" "nice" "+")
int2
Charlie is cold.
("Charlie" "is" "cold" "+")
int3
((((((triple1) -> (rule1 % int4)) triple3) -> (rule2 % int3)) ((triple5) -> (rule3 % int2))) -> (rule5 % int1))
Charlie is young.
("Charlie" "is" "young" "+")
int1
Charlie is furry.
("Charlie" "is" "furry" "+")
int2
Charlie is nice.
("Charlie" "is" "nice" "+")
int3
Charlie is cold.
("Charlie" "is" "cold" "+")
int4
@0: Charlie is big.[(triple1 OR ((triple6 triple7) -> rule4) OR ((triple6 ((triple5 triple3) -> rule5)) -> rule4) OR ((triple6 ((triple5 ((triple5) -> rule3)) -> rule5)) -> rule4) OR ((triple6 ((((triple2 triple3) -> rule2) triple3) -> rule5)) -> rule4) OR ((triple6 ((((triple2 triple3) -> rule2) ((triple5) -> rule3)) -> rule5)) -> rule4))] Charlie is cold.[(triple2 OR ((triple1) -> rule1) OR ((((triple6 triple7) -> rule4)) -> rule1) OR ((((triple6 ((triple5 triple3) -> rule5)) -> rule4)) -> rule1) OR ((((triple6 ((triple5 ((triple5) -> rule3)) -> rule5)) -> rule4)) -> rule1))] Charlie is furry.[(triple3 OR ((triple5) -> rule3))] Charlie is green.[(triple4)] Charlie is nice.[(triple5 OR ((triple2 triple3) -> rule2) OR ((((triple1) -> rule1) triple3) -> rule2) OR ((((((triple6 triple7) -> rule4)) -> rule1) triple3) -> rule2))] Charlie is red.[(triple6)] Charlie is young.[(triple7 OR ((triple5 triple3) -> rule5) OR ((triple5 ((triple5) -> rule3)) -> rule5) OR ((((triple2 triple3) -> rule2) triple3) -> rule5) OR ((((triple2 triple3) -> rule2) ((triple5) -> rule3)) -> rule5) OR ((((((triple1) -> rule1) triple3) -> rule2) triple3) -> rule5) OR ((((((triple1) -> rule1) triple3) -> rule2) ((triple5) -> rule3)) -> rule5))]
Charlie is big.
("Charlie" "is" "big" "+")
triple1
((triple6 triple7) -> (rule4 % int1))
Charlie is big.
("Charlie" "is" "big" "+")
int1
((triple6 ((triple5 triple3) -> (rule5 % int2))) -> (rule4 % int1))
Charlie is big.
("Charlie" "is" "big" "+")
int1
Charlie is young.
("Charlie" "is" "young" "+")
int2
((triple6 ((triple5 ((triple5) -> (rule3 % int3))) -> (rule5 % int2))) -> (rule4 % int1))
Charlie is big.
("Charlie" "is" "big" "+")
int1
Charlie is young.
("Charlie" "is" "young" "+")
int2
Charlie is furry.
("Charlie" "is" "furry" "+")
int3
((triple6 ((((triple2 triple3) -> (rule2 % int3)) triple3) -> (rule5 % int2))) -> (rule4 % int1))
Charlie is big.
("Charlie" "is" "big" "+")
int1
Charlie is young.
("Charlie" "is" "young" "+")
int2
Charlie is nice.
("Charlie" "is" "nice" "+")
int3
((triple6 ((((triple2 triple3) -> (rule2 % int4)) ((triple5) -> (rule3 % int3))) -> (rule5 % int2))) -> (rule4 % int1))
Charlie is big.
("Charlie" "is" "big" "+")
int1
Charlie is young.
("Charlie" "is" "young" "+")
int2
Charlie is furry.
("Charlie" "is" "furry" "+")
int3
Charlie is nice.
("Charlie" "is" "nice" "+")
int4
Charlie is cold.
("Charlie" "is" "cold" "+")
triple2
((triple1) -> (rule1 % int1))
Charlie is cold.
("Charlie" "is" "cold" "+")
int1
((((triple6 triple7) -> (rule4 % int2))) -> (rule1 % int1))
Charlie is cold.
("Charlie" "is" "cold" "+")
int1
Charlie is big.
("Charlie" "is" "big" "+")
int2
((((triple6 ((triple5 triple3) -> (rule5 % int3))) -> (rule4 % int2))) -> (rule1 % int1))
Charlie is cold.
("Charlie" "is" "cold" "+")
int1
Charlie is big.
("Charlie" "is" "big" "+")
int2
Charlie is young.
("Charlie" "is" "young" "+")
int3
((((triple6 ((triple5 ((triple5) -> (rule3 % int4))) -> (rule5 % int3))) -> (rule4 % int2))) -> (rule1 % int1))
Charlie is cold.
("Charlie" "is" "cold" "+")
int1
Charlie is big.
("Charlie" "is" "big" "+")
int2
Charlie is young.
("Charlie" "is" "young" "+")
int3
Charlie is furry.
("Charlie" "is" "furry" "+")
int4
Charlie is furry.
("Charlie" "is" "furry" "+")
triple3
((triple5) -> (rule3 % int1))
Charlie is furry.
("Charlie" "is" "furry" "+")
int1
Charlie is green.
("Charlie" "is" "green" "+")
triple4
Charlie is nice.
("Charlie" "is" "nice" "+")
triple5
((triple2 triple3) -> (rule2 % int1))
Charlie is nice.
("Charlie" "is" "nice" "+")
int1
((((triple1) -> (rule1 % int2)) triple3) -> (rule2 % int1))
Charlie is nice.
("Charlie" "is" "nice" "+")
int1
Charlie is cold.
("Charlie" "is" "cold" "+")
int2
((((((triple6 triple7) -> (rule4 % int3))) -> (rule1 % int2)) triple3) -> (rule2 % int1))
Charlie is nice.
("Charlie" "is" "nice" "+")
int1
Charlie is cold.
("Charlie" "is" "cold" "+")
int2
Charlie is big.
("Charlie" "is" "big" "+")
int3
Charlie is red.
("Charlie" "is" "red" "+")
triple6
Charlie is young.
("Charlie" "is" "young" "+")
triple7
((triple5 triple3) -> (rule5 % int1))
Charlie is young.
("Charlie" "is" "young" "+")
int1
((triple5 ((triple5) -> (rule3 % int2))) -> (rule5 % int1))
Charlie is young.
("Charlie" "is" "young" "+")
int1
Charlie is furry.
("Charlie" "is" "furry" "+")
int2
((((triple2 triple3) -> (rule2 % int2)) triple3) -> (rule5 % int1))
Charlie is young.
("Charlie" "is" "young" "+")
int1
Charlie is nice.
("Charlie" "is" "nice" "+")
int2
((((triple2 triple3) -> (rule2 % int3)) ((triple5) -> (rule3 % int2))) -> (rule5 % int1))
Charlie is young.
("Charlie" "is" "young" "+")
int1
Charlie is furry.
("Charlie" "is" "furry" "+")
int2
Charlie is nice.
("Charlie" "is" "nice" "+")
int3
((((((triple1) -> (rule1 % int3)) triple3) -> (rule2 % int2)) triple3) -> (rule5 % int1))
Charlie is young.
("Charlie" "is" "young" "+")
int1
Charlie is nice.
("Charlie" "is" "nice" "+")
int2
Charlie is cold.
("Charlie" "is" "cold" "+")
int3
((((((triple1) -> (rule1 % int4)) triple3) -> (rule2 % int3)) ((triple5) -> (rule3 % int2))) -> (rule5 % int1))
Charlie is young.
("Charlie" "is" "young" "+")
int1
Charlie is furry.
("Charlie" "is" "furry" "+")
int2
Charlie is nice.
("Charlie" "is" "nice" "+")
int3
Charlie is cold.
("Charlie" "is" "cold" "+")
int4