;;;; -*- Mode: LISP; Syntax: Common-Lisp; Base: 10 -*- ;;;; --------------------------------------------------------------------------- ;;;; File name: solve-test-cases.lsp ;;;; System: ;;;; Author: Praveen Paritosh ;;;; Created: December 9, 2003 14:16:17 ;;;; Purpose: ;;;; --------------------------------------------------------------------------- ;;;; Modified: Saturday, December 20, 2003 at 11:45:06 by paritosh ;;;; --------------------------------------------------------------------------- (in-package :common-lisp-user) (defparameter *test-query* '(foo ?var Foo)) ;; Test Case 1: One suggestion with two subgoals ;; (fire::setup-solve-test-case *suggestions-1* *facts-1*) ;; (multiple-value-setq (ans tree) (fire::solve *test-query* :response :bindings)) ;; (fire::get-solution tree) ;; Should get the six different answers. (defparameter *suggestions-1* '((defSuggestion FooBar (foo ?x ?y) :subgoals ((bar1 ?z ?y) (bar2 ?w ?y)) :result-step (evaluate ?x (ListFn ?y ?z ?w))))) (defparameter *facts-1* '((bar1 Viva Foo) (bar1 Cafe Foo) (bar2 Java Foo) (bar2 Vana Foo) (bar2 Paro Foo))) ;; Test Case 1b: One suggestion with two subgoals with test (defparameter *suggestions-1a* '((defSuggestion FooBar (foo ?x ?y) :test (exam ?y PASS) :subgoals ((bar1 ?z ?y) (bar2 ?w ?y)) :result-step (evaluate ?x (ListFn ?y ?z ?w))))) (defparameter *facts-1a* '((bar1 Viva Foo) (bar1 Cafe Foo) (bar2 Java Foo) (bar2 Vana Foo) (bar2 Paro Foo) (exam Foo PASS))) ;; Test Case 2: Two suggestions for the root goal ;; This will test for getting more and more solutions ;; via different suggestions, and correctly maintaining ;; in-play-suggestion pointers. (defparameter *suggestions-2* '((defSuggestion FooBar (foo ?x ?y) :subgoals ((bar1 ?z ?y) (bar2 ?w ?y)) :result-step (evaluate ?x (ListFn ?y ?z ?w))) (defSuggestion Baaz (foo ?x ?y) :subgoals ((baaz1 ?p ?y) (baaz2 ?q ?y)) :result-step (evaluate ?x (ListFn ?y ?p ?q))))) (defparameter *facts-2* '((bar1 Viva Foo) (bar1 Cafe Foo) (bar2 Java Foo) (bar2 Vana Foo) (bar2 Paro Foo) (baaz1 Matrix Foo) (baaz2 Revolutions Foo))) ;; Test Case 3: Chain of suggestions (defparameter *suggestions-3* '((defSuggestion FooBar (foo ?x ?y) :subgoals ((bar1 ?z ?y) (bar2 ?w ?y)) :result-step (evaluate ?x (ListFn ?y ?z ?w))) (defSuggestion FooBaz (foo ?x ?y) :subgoals ((baaz1 ?p ?y) (baaz2 ?q ?y)) :result-step (evaluate ?x (ListFn ?y ?p ?q))) (defSuggestion Baaz (baaz2 ?a ?b) :subgoals ((quuq1 ?m ?b) (quuq2 ?n ?b)) :result-step (evaluate ?a (ListFn ?m ?n))))) (defparameter *facts-3* '((bar1 Viva Foo) (bar1 Cafe Foo) (bar2 Java Foo) (bar2 Vana Foo) (bar2 Paro Foo) (baaz1 Matrix Foo) (quuq1 Revo Foo) (quuq2 Lutions Foo))) (defparameter *test-suggestions* '((suggestFor (problema ?x ?y) FooMethod) (implies (Baaz problema) (suggestFor (problema ?p ?q) BaazMethod)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; End of Code