How does f(s(s(s(s(s(s(1)))))),C) work on Prolog? -


i practicing textbook , cannot find reason when see result.

on prolog data base, shows

f(1,one). f(s(1),two). f(s(s(1)),three). f(s(s(s(x))),n) :- f(x,n). 

when run program

f(s(s(s(s(s(s(1)))))),c). 

the response of program "c = one."

how work?

prolog simple. programs consist of rules of form

to_prove_this :- must_prove_this, and_this.          % , perhaps also, to_prove_this :- must_otherwise_prove_this, and_this_too. 

so program means

1. prove `f( 1, one)` :- there's no need prove more. 2. prove `f( s(1), two)` :- there's no need prove more. 3. prove `f( s(s(1)), three)` :- there's no need prove more. 4. prove `f( s(s(s(x))), n)` :- must prove `f( x, n)`. 

so start

to prove:    f( s(s(s(s(s(s(1)))))), c). 

can rule 1. used?

| `f( s(s(s(s(s(s(1)))))), c)` similar `f(1,one)`?   | | `f` similar `f`?   | | -- yes.   | | `s(s(s(s(s(s(1))))))` similar `1`?   | | -- no.   | -- no, `f( s(s(s(s(s(s(1)))))), c)` , `f(1,one)` not similar.   -- no, rule 1. can't used.   

can rule 2. used?

| `f( s(s(s(s(s(s(1)))))), c)` similar `f(s(1),two)`?   . . . . .   . . . . .   . . . . .   

can rule 4. used?

| `f( s(s(s(s(s(s(1)))))), c)` similar `f(s(s(s(x))),n)`?   | | `f` similar `f`?   | | -- yes.   | | `s(s(s(s(s(s(1))))))` similar `s(s(s(x)))`?   | | | `s(s(s(s(s(1)))))` similar `s(s(x))`?   | | | | `s(s(s(s(1))))` similar `s(x)`?   | | | | | `s(s(s(1)))` similar `x`?   | | | | | -- yes,                            `x = s(s(s(1)))`.   | | `c` similar `n`?   | | -- yes,                                  `c = n`.   | -- yes, similar,                     `x = s(s(s(1)))` , `c = n`.   -- yes, can used,                      `x = s(s(s(1)))` , `c = n`. 

this means, need prove f(x,n) now, x = s(s(s(1))) , c = n.
means, need prove f(x1,n1) now, x1 = s(s(s(1))) , c = n1.
means, need prove f( s(s(s(1))), c ) now.

can rule 1. used?

. . . .   . . . .   . . . .   

this means, need prove f(x,n) now, x = 1 , c = n.
means, need prove f(x2,n2) now, x2 = 1 , c = n2.
means, need prove f( 1, c ) now.

can rule 1. used now?


Comments

Popular posts from this blog

node.js - Node js - Trying to send POST request, but it is not loading javascript content -

javascript - Replicate keyboard event with html button -

javascript - Web audio api 5.1 surround example not working in firefox -