I start studying artificial intelligence and logic. There are many things I do not know.
Reading about inference I found that a Knowledge Base KB entails a sentence a if and only if a is true in every model in KB. Then I found this algorithm for deciding entailment. I would like a brief explanation on how it works, especially the recursivity part.
function TT-ENTAILS? (KB, a) returns true or false
inputs: KB, the knowledge base
a, the query, a sentence
symbols: a list of the proposition symbols in KB and a
function TT-CHECK-ALL(KB, a, symbols, model) returns true or false
if EMPTY?(Symbols) then
if PL-TRUE?(KB, model) then return PL-TRUE?(a, model)
else return true
else do
P = FIRST(symbols); rest = REST(symbols)
return TT-CHECK-ALL(KB, a, rest, EXTEND(P, true, model)) and
TT-CHECK-ALL(KB, a, rest, EXTEND(P, false, model))
Cheers!