null ``` Starting on goal: [think [user says [what is the text of [theory tennis] ?]]] and [say $x] Goal arity 3: [think [user says [what is the text of [theory tennis] ?]]] and [say $x] nextSolution Got clause: _1 and _2 Clause unifies to: [think [user says [what is the text of [theory tennis] ?]]] and [say $x] gdash: think [user says [what is the text of [theory tennis] ?]] Goal arity 2: think [user says [what is the text of [theory tennis] ?]] Got clause: think _7 Clause unifies to: think [user says [what is the text of [theory tennis] ?]] Clause is native. gdash: say $x Goal arity 2: say $x Got clause: say [it's _21 !] Clause unifies to: say [it's _21 !] gdash: user says [_22 * _23] Goal arity 3: user says [_22 * _23] Got clause: say [_53 is _54 !] Clause unifies to: say [_53 is _54 !] gdash: rewrite with theory "add question mark to user input" Goal arity 4: rewrite with theory "add question mark to user input" Got clause: rewrite with theory _86 Clause unifies to: rewrite with theory "add question mark to user input" Clause is native. REW user says $e1 :- ... Starting on goal: user says _88 Goal arity 3: user says _88 Got clause: user says [what is the text of [theory tennis] ?] Clause unifies to: user says [what is the text of [theory tennis] ?] gdash: _87 = add question mark ([what is the text of [theory tennis] ?]) Goal arity 6: _87 = add question mark ([what is the text of [theory tennis] ?]) Got clause: _123 = add question mark (_124) Clause unifies to: _87 = add question mark ([what is the text of [theory tennis] ?]) gdash: _125 = tocons ([what is the text of [theory tennis] ?]) Goal arity 4: _125 = tocons ([what is the text of [theory tennis] ?]) Got clause: _142 = tocons (_143) Clause unifies to: _125 = tocons ([what is the text of [theory tennis] ?]) Clause is native. gdash: not ([endswithword_c [cons what [cons is [cons the [cons text [cons of [cons [theory tennis] [cons ? end]]]]]]] ?]) Goal arity 2: not ([endswithword_c [cons what [cons is [cons the [cons text [cons of [cons [theory tennis] [cons ? end]]]]]]] ?]) Got clause: not (_154) Clause unifies to: not ([endswithword_c [cons what [cons is [cons the [cons text [cons of [cons [theory tennis] [cons ? end]]]]]]] ?]) gdash: endswithword_c [cons what [cons is [cons the [cons text [cons of [cons [theory tennis] [cons ? end]]]]]]] ? Goal arity 3: endswithword_c [cons what [cons is [cons the [cons text [cons of [cons [theory tennis] [cons ? end]]]]]]] ? Got clause: endswithword_c [cons _158 _159] _160 Clause unifies to: endswithword_c [cons what [cons is [cons the [cons text [cons of [cons [theory tennis] [cons ? end]]]]]]] ? gdash: endswithword_c [cons is [cons the [cons text [cons of [cons [theory tennis] [cons ? end]]]]]] ? Goal arity 3: endswithword_c [cons is [cons the [cons text [cons of [cons [theory tennis] [cons ? end]]]]]] ? Got clause: endswithword_c [cons _164 _165] _166 Clause unifies to: endswithword_c [cons is [cons the [cons text [cons of [cons [theory tennis] [cons ? end]]]]]] ? gdash: endswithword_c [cons the [cons text [cons of [cons [theory tennis] [cons ? end]]]]] ? Goal arity 3: endswithword_c [cons the [cons text [cons of [cons [theory tennis] [cons ? end]]]]] ? Got clause: endswithword_c [cons _170 _171] _172 Clause unifies to: endswithword_c [cons the [cons text [cons of [cons [theory tennis] [cons ? end]]]]] ? gdash: endswithword_c [cons text [cons of [cons [theory tennis] [cons ? end]]]] ? Goal arity 3: endswithword_c [cons text [cons of [cons [theory tennis] [cons ? end]]]] ? Got clause: endswithword_c [cons _176 _177] _178 Clause unifies to: endswithword_c [cons text [cons of [cons [theory tennis] [cons ? end]]]] ? gdash: endswithword_c [cons of [cons [theory tennis] [cons ? end]]] ? Goal arity 3: endswithword_c [cons of [cons [theory tennis] [cons ? end]]] ? Got clause: endswithword_c [cons _182 _183] _184 Clause unifies to: endswithword_c [cons of [cons [theory tennis] [cons ? end]]] ? gdash: endswithword_c [cons [theory tennis] [cons ? end]] ? Goal arity 3: endswithword_c [cons [theory tennis] [cons ? end]] ? Got clause: endswithword_c [cons _188 _189] _190 Clause unifies to: endswithword_c [cons [theory tennis] [cons ? end]] ? gdash: endswithword_c [cons ? end] ? Goal arity 3: endswithword_c [cons ? end] ? Got clause: endswithword_c [cons _193 end] _193 Clause unifies to: endswithword_c [cons ? end] ? gdash: ?? "!"("4") Goal arity 1: ?? "!"("4") cut -1. Prolog$Goal(car=l("!", "4"), cdr=Prolog$Goal(car=l("false"), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=126L, instance=r7), "=", "append_c", Prolog$Var(id=125L, instance=l("[]", "cons", "what", l("[]", "cons", "is", l("[]", "cons", "the", l("[]", "cons", "text", l("[]", "cons", "of", l("[]", "cons", l("[]", "theory", "tennis"), l("[]", "cons", "?", "end")))))))), l("[]", "cons", "?", "end")), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=123L, instance=Prolog$Var(id=87L, instance=r21)), "=", "fromcons", l("()", r7)))))) Goal arity 0: false cut 0. Prolog$Goal(car=l("!", "4"), cdr=Prolog$Goal(car=l("false"), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=126L, instance=r7), "=", "append_c", Prolog$Var(id=125L, instance=l("[]", "cons", "what", l("[]", "cons", "is", l("[]", "cons", "the", l("[]", "cons", "text", l("[]", "cons", "of", l("[]", "cons", l("[]", "theory", "tennis"), l("[]", "cons", "?", "end")))))))), l("[]", "cons", "?", "end")), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=123L, instance=Prolog$Var(id=87L, instance=r21)), "=", "fromcons", l("()", r7)))))) back to cut point 4 cut: dropping Prolog$Goal(car=l("!", "4"), cdr=Prolog$Goal(car=l("false"), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=126L, instance=r7), "=", "append_c", Prolog$Var(id=125L, instance=l("[]", "cons", "what", l("[]", "cons", "is", l("[]", "cons", "the", l("[]", "cons", "text", l("[]", "cons", "of", l("[]", "cons", l("[]", "theory", "tennis"), l("[]", "cons", "?", "end")))))))), l("[]", "cons", "?", "end")), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=123L, instance=Prolog$Var(id=87L, instance=r21)), "=", "fromcons", l("()", r7)))))) cut: dropping Prolog$Goal(car=l("[]", "endswithword_c", Prolog$Var(id=189L, instance=l("[]", "cons", "?", "end")), Prolog$Var(id=190L, instance=Prolog$Var(id=184L, instance=Prolog$Var(id=178L, instance=Prolog$Var(id=172L, instance=Prolog$Var(id=166L, instance=Prolog$Var(id=160L, instance=l("?")))))))), cdr=Prolog$Goal(car=l("!", "4"), cdr=Prolog$Goal(car=l("false"), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=126L, instance=r18), "=", "append_c", Prolog$Var(id=125L, instance=l("[]", "cons", "what", l("[]", "cons", "is", l("[]", "cons", "the", l("[]", "cons", "text", l("[]", "cons", "of", l("[]", "cons", l("[]", "theory", "tennis"), r4))))))), l("[]", "cons", "?", "end")), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=123L, instance=Prolog$Var(id=87L, instance=r31)), "=", "fromcons", l("()", r18))))))) cut: dropping Prolog$Goal(car=l("[]", "endswithword_c", Prolog$Var(id=183L, instance=l("[]", "cons", l("[]", "theory", "tennis"), l("[]", "cons", "?", "end"))), Prolog$Var(id=184L, instance=Prolog$Var(id=178L, instance=Prolog$Var(id=172L, instance=Prolog$Var(id=166L, instance=Prolog$Var(id=160L, instance=l("?"))))))), cdr=Prolog$Goal(car=l("!", "4"), cdr=Prolog$Goal(car=l("false"), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=126L, instance=r19), "=", "append_c", Prolog$Var(id=125L, instance=l("[]", "cons", "what", l("[]", "cons", "is", l("[]", "cons", "the", l("[]", "cons", "text", l("[]", "cons", "of", r4)))))), l("[]", "cons", "?", "end")), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=123L, instance=Prolog$Var(id=87L, instance=r30)), "=", "fromcons", l("()", r19))))))) cut: dropping Prolog$Goal(car=l("[]", "endswithword_c", Prolog$Var(id=177L, instance=l("[]", "cons", "of", l("[]", "cons", l("[]", "theory", "tennis"), l("[]", "cons", "?", "end")))), Prolog$Var(id=178L, instance=Prolog$Var(id=172L, instance=Prolog$Var(id=166L, instance=Prolog$Var(id=160L, instance=l("?")))))), cdr=Prolog$Goal(car=l("!", "4"), cdr=Prolog$Goal(car=l("false"), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=126L, instance=r19), "=", "append_c", Prolog$Var(id=125L, instance=l("[]", "cons", "what", l("[]", "cons", "is", l("[]", "cons", "the", l("[]", "cons", "text", r4))))), l("[]", "cons", "?", "end")), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=123L, instance=Prolog$Var(id=87L, instance=r29)), "=", "fromcons", l("()", r19))))))) cut: dropping Prolog$Goal(car=l("[]", "endswithword_c", Prolog$Var(id=171L, instance=l("[]", "cons", "text", l("[]", "cons", "of", l("[]", "cons", l("[]", "theory", "tennis"), l("[]", "cons", "?", "end"))))), Prolog$Var(id=172L, instance=Prolog$Var(id=166L, instance=Prolog$Var(id=160L, instance=l("?"))))), cdr=Prolog$Goal(car=l("!", "4"), cdr=Prolog$Goal(car=l("false"), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=126L, instance=r19), "=", "append_c", Prolog$Var(id=125L, instance=l("[]", "cons", "what", l("[]", "cons", "is", l("[]", "cons", "the", r4)))), l("[]", "cons", "?", "end")), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=123L, instance=Prolog$Var(id=87L, instance=r28)), "=", "fromcons", l("()", r19))))))) cut: dropping Prolog$Goal(car=l("[]", "endswithword_c", Prolog$Var(id=165L, instance=l("[]", "cons", "the", l("[]", "cons", "text", l("[]", "cons", "of", l("[]", "cons", l("[]", "theory", "tennis"), l("[]", "cons", "?", "end")))))), Prolog$Var(id=166L, instance=Prolog$Var(id=160L, instance=l("?")))), cdr=Prolog$Goal(car=l("!", "4"), cdr=Prolog$Goal(car=l("false"), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=126L, instance=r19), "=", "append_c", Prolog$Var(id=125L, instance=l("[]", "cons", "what", l("[]", "cons", "is", r4))), l("[]", "cons", "?", "end")), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=123L, instance=Prolog$Var(id=87L, instance=r27)), "=", "fromcons", l("()", r19))))))) cut: dropping Prolog$Goal(car=l("[]", "endswithword_c", Prolog$Var(id=159L, instance=l("[]", "cons", "is", l("[]", "cons", "the", l("[]", "cons", "text", l("[]", "cons", "of", l("[]", "cons", l("[]", "theory", "tennis"), l("[]", "cons", "?", "end"))))))), Prolog$Var(id=160L, instance=l("?"))), cdr=Prolog$Goal(car=l("!", "4"), cdr=Prolog$Goal(car=l("false"), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=126L, instance=r19), "=", "append_c", Prolog$Var(id=125L, instance=l("[]", "cons", "what", r4)), l("[]", "cons", "?", "end")), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=123L, instance=Prolog$Var(id=87L, instance=r26)), "=", "fromcons", l("()", r19))))))) cut: dropping Prolog$Goal(car=Prolog$Var(id=154L, instance=l("[]", "endswithword_c", Prolog$Var(id=125L, instance=l("[]", "cons", "what", l("[]", "cons", "is", l("[]", "cons", "the", l("[]", "cons", "text", l("[]", "cons", "of", l("[]", "cons", l("[]", "theory", "tennis"), l("[]", "cons", "?", "end")))))))), "?")), cdr=Prolog$Goal(car=l("!", "4"), cdr=Prolog$Goal(car=l("false"), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=126L, instance=r19), "=", "append_c", r4, l("[]", "cons", "?", "end")), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=123L, instance=Prolog$Var(id=87L, instance=r24)), "=", "fromcons", l("()", r19))))))) cut: dropping Prolog$Goal(car=l("[]", "not", l("()", l("[]", "endswithword_c", Prolog$Var(id=125L, instance=l("[]", "cons", "what", l("[]", "cons", "is", l("[]", "cons", "the", l("[]", "cons", "text", l("[]", "cons", "of", l("[]", "cons", l("[]", "theory", "tennis"), l("[]", "cons", "?", "end")))))))), "?"))), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=126L, instance=r16), "=", "append_c", r5, l("[]", "cons", "?", "end")), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=123L, instance=Prolog$Var(id=87L, instance=r21)), "=", "fromcons", l("()", r16))))) Got 0 rewritten terms. gdash: user says _55 Goal arity 3: user says _55 Got clause: user says [what is the text of [theory tennis] ?] Clause unifies to: user says [what is the text of [theory tennis] ?] gdash: rew ! [what is the text of [theory tennis] ?] to [what is _53 ?] Goal arity 5: rew ! [what is the text of [theory tennis] ?] to [what is _53 ?] Got clause: rew ! _335 to _336 Clause unifies to: rew ! [what is the text of [theory tennis] ?] to [what is _53 ?] gdash: rew [what is the text of [theory tennis] ?] to [what is _53 ?] Goal arity 4: rew [what is the text of [theory tennis] ?] to [what is _53 ?] Got clause: rew _400 to _401 Clause unifies to: rew [what is the text of [theory tennis] ?] to [what is _53 ?] gdash: rewrite [what is the text of [theory tennis] ?] to _402 Goal arity 4: rewrite [what is the text of [theory tennis] ?] to _402 Got clause: rewrite [what is the _439 of _440 ?] to [what is [the _439 of _440] ?] Clause unifies to: rewrite [what is the text of [theory tennis] ?] to [what is [the text of [theory tennis]] ?] gdash: rew [what is [the text of [theory tennis]] ?] to [what is _53 ?] Goal arity 4: rew [what is [the text of [theory tennis]] ?] to [what is _53 ?] Got clause: rew _504 to _505 Clause unifies to: rew [what is [the text of [theory tennis]] ?] to [what is _53 ?] gdash: rewrite [what is [the text of [theory tennis]] ?] to _506 Goal arity 4: rewrite [what is [the text of [theory tennis]] ?] to _506 Got clause: rew _599 to _599 Clause unifies to: rew [what is [the text of [theory tennis]] ?] to [what is [the text of [theory tennis]] ?] gdash: ?? "!"("6") Goal arity 1: ?? "!"("6") cut -1. Prolog$Goal(car=l("!", "6"), cdr=Prolog$Goal(car=l("[]", Prolog$Var(id=53L, instance=l("[]", "the", Prolog$Var(id=439L, instance=l("text")), "of", Prolog$Var(id=440L, instance=l("[]", "theory", "tennis")))), "is", Prolog$Var(id=54L, instance=r11)))) Goal arity 3: [the text of [theory tennis]] is _54 Got clause: [the _606 of _607] is _608 Clause unifies to: [the text of [theory tennis]] is _54 gdash: the text of [theory tennis] is _54 Goal arity 6: the text of [theory tennis] is _54 Got clause: the text of [theory _624] is _625 Clause unifies to: the text of [theory tennis] is _54 gdash: _54 = text of theory tennis Goal arity 6: _54 = text of theory tennis Got clause: _631 = text of theory _632 Clause unifies to: _54 = text of theory tennis Clause is native. gdash: - SUCCESS! solution found in step 247 UserVarMap goal: "[]"("[]"(think, "[]"(user, says, "[]"(what, is, the, text, of, "[]"(theory, tennis), "?"))), and, "[]"(say, $x))```