changeset 66:96b1c8c2f9b9

*** empty log message ***
author kono
date Fri, 11 Jan 2008 14:31:02 +0900
parents 48db54d3129b
children 4ced2af1ff09
files Changes src/lite/ITLNodeParser.java src/sbdd/BDDSatisfier.java src/sbdd/SBDDFactory.java src/sbdd/SBDDTest.java
diffstat 5 files changed, 27 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/Changes	Fri Jan 11 02:10:06 2008 +0900
+++ b/Changes	Fri Jan 11 14:31:02 2008 +0900
@@ -1,3 +1,22 @@
+Fri Jan 11 14:23:21 JST 2008
+
+(empty & Hoge)が、なんかはびこって、項の大きさを大きくしているらしい。
+つうか、これがあると収束しないです。
+
+projection(C,I) のtermination は、I 項のverification が収束すること
+に依存しているので、I項に Projection が入っていると、projection の
+ネストの帰納法で証明する必要がある。
+
+ということは、I の方がちゃんと正規形になって有限の項の組合
+せであることを示す必要がある。I の方を前もって展開してしま
+うという手もあるけど。つまり、安易な最適化を入れて収束して
+も、それがtermination の証明にならないということ。
+
+SDDEntry.expanded は、展開されたのはなくて生成されてqueueに
+入れた時点でtrueにして良い。こうすれば、queue の中には unique
+な項しか入らないことになる。
+
+
 Thu Jan 10 13:28:26 JST 2008
 
 hasChoicePoint は、variable 毎にフラグで持っても良い。
--- a/src/lite/ITLNodeParser.java	Fri Jan 11 02:10:06 2008 +0900
+++ b/src/lite/ITLNodeParser.java	Fri Jan 11 14:31:02 2008 +0900
@@ -69,7 +69,8 @@
 // def(P<=Q,Q=>P)");
 // loop stuff and quantifiers
 			define("*(A) ","proj(A,true),fin(A)");  // weak closure
-			define("+(A) ","A& *(empty;A)");   // strong closure
+			//define("+(A) ","A& *(empty;A)");   // strong closure
+			define("+(A) ","A & proj(A,true)");   // strong closure
 			define("while(Cond,Do)"," *(((Cond->Do) , (~Cond->empty))))");
 			define("repeat(Do,until,Cond)"," (*((Do;empty)) ,@ halt(Cond)))");
 			define("all(P,Q)","not(exists(P,not(Q)))");
--- a/src/sbdd/BDDSatisfier.java	Fri Jan 11 02:10:06 2008 +0900
+++ b/src/sbdd/BDDSatisfier.java	Fri Jan 11 14:31:02 2008 +0900
@@ -83,7 +83,7 @@
 						// skip
 					System.out.print(".");
 				} else 	{
-					queue.add(e);
+					queue.add(e); e.expanded = true;
 					System.out.print(e.id+" ");
 				} 
 			} else {
@@ -104,7 +104,7 @@
 				if (e.expanded) {
 						// skip
 				} else 	{
-					queue.add(e);
+					queue.add(e); e.expanded = true;
 					s = "!"+s;
 				} 
 			}
@@ -122,10 +122,8 @@
 			System.out.println("   already checked.");
 			return;
 		}
-		queue.add(b);
+		queue.add(b); b.expanded = true;
 		for(SBDDEntry e;(e = queue.poll())!=null; ) {
-			if (e.expanded) continue;
-			e.expanded = true;
 			System.out.println(e.id+":"+(verbose?e.key+"->":"")); 
 			develop(e.key, allNext);
 			if (!verbose) System.out.println();
--- a/src/sbdd/SBDDFactory.java	Fri Jan 11 02:10:06 2008 +0900
+++ b/src/sbdd/SBDDFactory.java	Fri Jan 11 14:31:02 2008 +0900
@@ -75,7 +75,7 @@
 	}
 
 	public ITLSolver projectionNode(ITLSolver solver, ITLSolver solver2) {
-		ITLSolver v =  itlf.projectionNode(solver.toSBDD(this),solver2.toSBDD(this));
+		ITLSolver v =  itlf.projectionNode(solver,solver2);
 		BDDSolver b = new BDDSolver(v,trueSolver,falseSolver,BDDID.Projection);
 		return hash.put(b);
 	}
--- a/src/sbdd/SBDDTest.java	Fri Jan 11 02:10:06 2008 +0900
+++ b/src/sbdd/SBDDTest.java	Fri Jan 11 14:31:02 2008 +0900
@@ -48,7 +48,7 @@
 	public void verifyTest() {
 		// sat.showVerify("((less(5),[](q))&(length(3)&([](<>(p)),[](<>(~p)),*length(6)))))");
 
-		if (true) {
+		if (false) {
 		sat.showVerify("skip");
 		sat.showVerify(" '<>'p");
 		sat.showVerify("<>(p) = <>(p)");
@@ -69,7 +69,7 @@
 		}
 		sat.showVerify("+(a & b)");
 		//System.out.println(sat.state);
-		//sat.p.parse("include('data/example').");
+		sat.p.parse("include('data/example').");
 		// System.out.println(p.parseCommand.sat.state);
 	}