changeset 62:c392bd59155f

あきらかに、exists はバグってるね。
author kono
date Thu, 10 Jan 2008 02:29:42 +0900
parents 51e13324a3f1
children d6a300cdd18e
files Changes src/sbdd/BDDSatisfier.java src/sbdd/SBDDTest.java
diffstat 3 files changed, 22 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/Changes	Wed Jan 09 19:57:56 2008 +0900
+++ b/Changes	Thu Jan 10 02:29:42 2008 +0900
@@ -1,3 +1,16 @@
+Wed Jan  9 20:42:17 JST 2008
+
+あぁ、そうか。
+    define("forall(x,body)","~exists(x,~body)");
+    forall(a,(a;~a))
+では、 body は、exists に入る前に、(a;~a) に換えられちゃうので、
+exits は、その既に換えられてしまったa をlocal 変数にするこ
+とが出来ないわけね。名前は同じなんだけど。
+
+なので、変数を扱う時には、一旦、var = lf.variableNode(var.name);
+みたいなことをやっていたわけか。まぁ、それがいいのかなぁ。
+
+
 Tue Jan  8 02:16:17 JST 2008
 
     Sat 
--- a/src/sbdd/BDDSatisfier.java	Wed Jan 09 19:57:56 2008 +0900
+++ b/src/sbdd/BDDSatisfier.java	Thu Jan 10 02:29:42 2008 +0900
@@ -95,6 +95,7 @@
 		queue = new LinkedList<SBDDEntry>();
 		AllNext allNext = new AllNext();
 		SBDDEntry b = state.getEntry(n);
+		this.clear(); // if not empty something wrong
 		if (b.expanded) {
 			// already checked
 			System.out.println("   already checked.");
--- a/src/sbdd/SBDDTest.java	Wed Jan 09 19:57:56 2008 +0900
+++ b/src/sbdd/SBDDTest.java	Thu Jan 10 02:29:42 2008 +0900
@@ -48,7 +48,7 @@
 	public void verifyTest() {
 		// sat.showVerify("((less(5),[](q))&(length(3)&([](<>(p)),[](<>(~p)),*length(6)))))");
 
-		if (false) {
+		if (true) {
 		sat.showVerify("skip");
 		sat.showVerify(" '<>'p");
 		sat.showVerify("<>(p) = <>(p)");
@@ -61,14 +61,18 @@
 		// sat.showVerify("@(@(@(empty)))");
 		sat.showVerify("fin(p)=([](<>(p)))");
 		sat.showVerify("fin(p)");
-		}
+		sat.showVerify("all(x,@y)");
 		sat.showVerify("exists(x,@@x = ~x)");
-		//sat.showVerify("even(p)");
+		sat.showVerify("all(x,@@x)");
+		sat.showVerify("even(p)");
+		sat.showVerify("Q, keep( @Q = ~Q),'[]'((Q->P))");
+		}
+		sat.showVerify("Q, keep( @Q = ~Q)");
 		//sat.showVerify("evenp(p)");
 		//at.showVerify("keep(@q = ~q)");
 		//sat.showVerify("keep(q)");
 		//sat.showVerify("even(p)<->evenp(p)");
-		System.out.println(sat.state);
+		//System.out.println(sat.state);
 		// sat.p.parse("include('data/example').");
 		// System.out.println(p.parseCommand.sat.state);
 	}