Bob is cold. Bob is furry. Bob is rough. Dave is cold. Dave is rough. Dave is white. Erin is furry. Erin is green. Fiona is green. Fiona is rough. If something is cold and rough then it is white. Blue things are rough. If something is cold and kind then it is blue. If something is blue and cold then it is rough. Green, rough things are kind. If Bob is blue and Bob is cold then Bob is kind. If something is white then it is rough. All furry things are kind.
Bob is cold.
("Bob" "is" "cold" "+")
Bob is furry.
("Bob" "is" "furry" "+")
Bob is rough.
("Bob" "is" "rough" "+")
Dave is cold.
("Dave" "is" "cold" "+")
Dave is rough.
("Dave" "is" "rough" "+")
Dave is white.
("Dave" "is" "white" "+")
Erin is furry.
("Erin" "is" "furry" "+")
Erin is green.
("Erin" "is" "green" "+")
Fiona is green.
("Fiona" "is" "green" "+")
Fiona is rough.
("Fiona" "is" "rough" "+")
If something is cold and rough then it is white.
((("something" "is" "cold" "+") ("something" "is" "rough" "+")) -> ("something" "is" "white" "+"))
Blue things are rough.
((("something" "is" "blue" "+")) -> ("something" "is" "rough" "+"))
If something is cold and kind then it is blue.
((("something" "is" "cold" "+") ("something" "is" "kind" "+")) -> ("something" "is" "blue" "+"))
If something is blue and cold then it is rough.
((("something" "is" "blue" "+") ("something" "is" "cold" "+")) -> ("something" "is" "rough" "+"))
Green, rough things are kind.
((("something" "is" "green" "+") ("something" "is" "rough" "+")) -> ("something" "is" "kind" "+"))
If Bob is blue and Bob is cold then Bob is kind.
((("Bob" "is" "blue" "+") ("Bob" "is" "cold" "+")) -> ("Bob" "is" "kind" "+"))
If something is white then it is rough.
((("something" "is" "white" "+")) -> ("something" "is" "rough" "+"))
All furry things are kind.
((("something" "is" "furry" "+")) -> ("something" "is" "kind" "+"))
Erin is green.
True
1
proof
[(triple8)]
("Erin" "is" "green" "+")
triple8
Bob is not rough.
False
1
inv-proof
[(triple3 OR ((((triple1 ((triple2) -> rule8)) -> rule3)) -> rule2) OR ((((triple1 ((triple2) -> rule8)) -> rule3) triple1) -> rule4))]
("Bob" "is" "rough" "-")
triple3
((((triple1 ((triple2) -> (rule8 % int3))) -> (rule3 % int2))) -> (rule2 % int1))
Bob is rough.
("Bob" "is" "rough" "+")
int1
Bob is blue.
("Bob" "is" "blue" "+")
int2
Bob is kind.
("Bob" "is" "kind" "+")
int3
((((triple1 ((triple2) -> (rule8 % int3))) -> (rule3 % int2)) triple1) -> (rule4 % int1))
Bob is rough.
("Bob" "is" "rough" "+")
int1
Bob is blue.
("Bob" "is" "blue" "+")
int2
Bob is kind.
("Bob" "is" "kind" "+")
int3
Erin is kind.
True
2
proof
[(((triple7) -> rule8))]
("Erin" "is" "kind" "+")
((triple7) -> (rule8 % int1))
Erin is kind.
("Erin" "is" "kind" "+")
int1
Bob is not white.
False
3
inv-proof
[(((triple1 triple3) -> rule1) OR ((triple1 ((((triple1 ((triple2) -> rule8)) -> rule3)) -> rule2)) -> rule1) OR ((triple1 ((((triple1 ((triple2) -> rule8)) -> rule3) triple1) -> rule4)) -> rule1))]
("Bob" "is" "white" "-")
((triple1 triple3) -> (rule1 % int1))
Bob is white.
("Bob" "is" "white" "+")
int1
((triple1 ((((triple1 ((triple2) -> (rule8 % int4))) -> (rule3 % int3))) -> (rule2 % int2))) -> (rule1 % int1))
Bob is white.
("Bob" "is" "white" "+")
int1
Bob is rough.
("Bob" "is" "rough" "+")
int2
Bob is blue.
("Bob" "is" "blue" "+")
int3
Bob is kind.
("Bob" "is" "kind" "+")
int4
((triple1 ((((triple1 ((triple2) -> (rule8 % int4))) -> (rule3 % int3)) triple1) -> (rule4 % int2))) -> (rule1 % int1))
Bob is white.
("Bob" "is" "white" "+")
int1
Bob is rough.
("Bob" "is" "rough" "+")
int2
Bob is blue.
("Bob" "is" "blue" "+")
int3
Bob is kind.
("Bob" "is" "kind" "+")
int4
Erin is not rough.
Unknown
inv-rconc
[@2: Erin is rough.[CWA. Example of deepest failure = (rule2 <- rule3 <- FAIL)]]
("Erin" "is" "rough" "-")
Fiona is white.
Unknown
rconc
[@1: Fiona is white.[CWA. Example of deepest failure = (rule1 <- FAIL)]]
("Fiona" "is" "white" "+")
Dave is not green.
Unknown
inv-random
[@0: Dave is green.[CWA. Example of deepest failure = (FAIL)]]
("Dave" "is" "green" "-")
Bob is green.
Unknown
random
[@0: Bob is green.[CWA. Example of deepest failure = (FAIL)]]
("Bob" "is" "green" "+")
@0: Bob is cold.[(triple1)] Bob is furry.[(triple2)] Bob is rough.[(triple3 OR ((((triple1 ((triple2) -> rule8)) -> rule3)) -> rule2) OR ((((triple1 ((triple2) -> rule8)) -> rule3) triple1) -> rule4))] Dave is cold.[(triple4)] Dave is rough.[(triple5 OR ((triple6) -> rule7))] Dave is white.[(triple6 OR ((triple4 triple5) -> rule1))] Erin is furry.[(triple7)] Erin is green.[(triple8)] Fiona is green.[(triple9)] Fiona is rough.[(triple10)] @1: Bob is kind.[(((triple2) -> rule8))] Bob is white.[(((triple1 triple3) -> rule1) OR ((triple1 ((((triple1 ((triple2) -> rule8)) -> rule3)) -> rule2)) -> rule1) OR ((triple1 ((((triple1 ((triple2) -> rule8)) -> rule3) triple1) -> rule4)) -> rule1))] Erin is kind.[(((triple7) -> rule8))] Fiona is kind.[(((triple9 triple10) -> rule5))] @2: Bob is blue.[(((triple1 ((triple2) -> rule8)) -> rule3))]
Bob is cold.
("Bob" "is" "cold" "+")
triple1
Bob is furry.
("Bob" "is" "furry" "+")
triple2
Bob is rough.
("Bob" "is" "rough" "+")
triple3
((((triple1 ((triple2) -> (rule8 % int3))) -> (rule3 % int2))) -> (rule2 % int1))
Bob is rough.
("Bob" "is" "rough" "+")
int1
Bob is blue.
("Bob" "is" "blue" "+")
int2
Bob is kind.
("Bob" "is" "kind" "+")
int3
((((triple1 ((triple2) -> (rule8 % int3))) -> (rule3 % int2)) triple1) -> (rule4 % int1))
Bob is rough.
("Bob" "is" "rough" "+")
int1
Bob is blue.
("Bob" "is" "blue" "+")
int2
Bob is kind.
("Bob" "is" "kind" "+")
int3
Dave is cold.
("Dave" "is" "cold" "+")
triple4
Dave is rough.
("Dave" "is" "rough" "+")
triple5
((triple6) -> (rule7 % int1))
Dave is rough.
("Dave" "is" "rough" "+")
int1
Dave is white.
("Dave" "is" "white" "+")
triple6
((triple4 triple5) -> (rule1 % int1))
Dave is white.
("Dave" "is" "white" "+")
int1
Erin is furry.
("Erin" "is" "furry" "+")
triple7
Erin is green.
("Erin" "is" "green" "+")
triple8
Fiona is green.
("Fiona" "is" "green" "+")
triple9
Fiona is rough.
("Fiona" "is" "rough" "+")
triple10
Bob is kind.
("Bob" "is" "kind" "+")
((triple2) -> (rule8 % int1))
Bob is kind.
("Bob" "is" "kind" "+")
int1
Bob is white.
("Bob" "is" "white" "+")
((triple1 triple3) -> (rule1 % int1))
Bob is white.
("Bob" "is" "white" "+")
int1
((triple1 ((((triple1 ((triple2) -> (rule8 % int4))) -> (rule3 % int3))) -> (rule2 % int2))) -> (rule1 % int1))
Bob is white.
("Bob" "is" "white" "+")
int1
Bob is rough.
("Bob" "is" "rough" "+")
int2
Bob is blue.
("Bob" "is" "blue" "+")
int3
Bob is kind.
("Bob" "is" "kind" "+")
int4
((triple1 ((((triple1 ((triple2) -> (rule8 % int4))) -> (rule3 % int3)) triple1) -> (rule4 % int2))) -> (rule1 % int1))
Bob is white.
("Bob" "is" "white" "+")
int1
Bob is rough.
("Bob" "is" "rough" "+")
int2
Bob is blue.
("Bob" "is" "blue" "+")
int3
Bob is kind.
("Bob" "is" "kind" "+")
int4
Erin is kind.
("Erin" "is" "kind" "+")
((triple7) -> (rule8 % int1))
Erin is kind.
("Erin" "is" "kind" "+")
int1
Fiona is kind.
("Fiona" "is" "kind" "+")
((triple9 triple10) -> (rule5 % int1))
Fiona is kind.
("Fiona" "is" "kind" "+")
int1
Bob is blue.
("Bob" "is" "blue" "+")
((triple1 ((triple2) -> (rule8 % int2))) -> (rule3 % int1))
Bob is blue.
("Bob" "is" "blue" "+")
int1
Bob is kind.
("Bob" "is" "kind" "+")
int2