- List.iteri (fun i a ->
- fprintf ohtml "data[%i] = new Array();\n" i;
- Array.iteri (fun id set ->
- fprintf ohtml "data[%i]['node%i'] = \"%a\";\n"
- i id StateSet.print set) a) (List.rev sat_arrays);
- fprintf ohtml "var activate = function (id) {\
- var d = document.getElementById('data');
- var msg = '';
- for (i=0; i < rounds; i++)
- msg += ('<p>round: ' + i + ':<br/>') + data[i][id] + '</p>\\n';
- d.innerHTML = msg;
- return;
- };\n";
- fprintf ohtml "</script>\n<div id='svg'><svg id='svgimg' width='' height='' xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n";
- let maxw, maxh = loop ohtml (T.root tree) T.nil 50 50 in
- fprintf ohtml "</svg>\n<script type=\"text/javascript\">window.onload = function () {\
- var svg = document.getElementById('svgimg');
- svg.setAttribute('width', %i);
- svg.setAttribute('height', %i);
-};\
-</script>\
-</div></body></html>\n%!"
+ List.iteri (fun i _ ->
+ fprintf ohtml "data[%i] = new Array();\n" i) sat_arrays;
+ for node_id = 0 to (Array.length (List.hd sat_arrays)) - 1 do
+ let _,_ = List.fold_left (fun (pass, diff_set) a ->
+ let cur_set = a.(node_id) in
+ fprintf ohtml "data[%i]['node%i'] = \"new states %a<br/>full states = %a\";\n"
+ pass node_id StateSet.print (StateSet.diff cur_set diff_set) StateSet.print cur_set;
+ (pass+1, StateSet.union diff_set cur_set))
+ (0, StateSet.empty) (List.rev sat_arrays)
+ in ()
+ done;
+ fprintf ohtml "%s\n" Trace_js.content;
+ fprintf ohtml "%s"
+ "</script>\n\
+<div id='svg'>\n
+ <svg id='svgimg' width='' height='' preserveAspectRatio='XMidYMid slice' xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n";
+ let maxw, maxh = loop ohtml (T.root tree) T.nil T.nil 50 50 in
+ fprintf ohtml "</svg>\n</div><script type='text/javascript'>\n\
+window.onload = function () {\n\
+ var svg = document.getElementById('svgimg');\n\
+ svg.setAttribute('width', %i);\n\
+ svg.setAttribute('height', %i);\n\
+ activate('node0');\n\
+};\n
+</script></body></html>\n%!"