/**Use: traverse([Conclusion]). ?- traverse([i_am_happy]). Yes **/ implies(i_am_happy, [i_have_an_apple, i_can_eat_the_apple]). implies(i_can_eat_the_apple, the_apple_gives_me_energy). fact(i_have_an_apple). fact(the_apple_gives_me_energy). traverse(Conclusion) :- traverse1([Conclusion]). traverse1([]). traverse1([Antecedent|Antecedents]) :- implies(Antecedent,Consequent), traverse1(Consequent), traverse1(Antecedents). traverse1([Antecedent|Antecedents]) :- fact(Antecedent), traverse1(Antecedents). traverse1(Consequent) :- fact(Consequent).