var univ;

var component_o = new set("o", "s", "f", "c");

var prettynames = new Object();
prettynames[undefined] = '';
prettynames[0] = 'false';
prettynames[1] = 'true';

var uglynames = new Object();
uglynames[''] = undefined;
uglynames['false'] = 0;
uglynames['true'] = 1;

function init () { 
   casesensitive = true;
   debug = true;
   allowconflicts = true;
   valuecount = 2;
   init_index();
   univ = ds.get(datastore, "univ");
   var mycellarray = new Array();
   mycellarray[0] = new cell('o', ds.get(datastore, "boolean"), "checkbox", negs_o, poss_o, negsupps_o, possupps_o, negsuppx_o, possuppx_o, component_o, 0);
   mycellarray[1] = new cell('f', ds.get(datastore, "boolean"), "checkbox", negs_f, poss_f, negsupps_f, possupps_f, negsuppx_f, possuppx_f, component_o, 0);
   mycellarray[2] = new cell('s', ds.get(datastore, "boolean"), "checkbox", negs_s, poss_s, negsupps_s, possupps_s, negsuppx_s, possuppx_s, component_o, 0);
   mycellarray[3] = new cell('c', ds.get(datastore, "boolean"), "checkbox", undefined, poss_c, undefined, possupps_c, undefined, possuppx_c, component_o, 0);
   initspread(mycellarray); }

var datastore;

function init_index () { 
   datastore = new dict();
   ds.set(datastore, "univ", new hashbag(new expr(0), new expr(1)));
   ds.set(datastore, "boolean", new set(new expr(1), new expr(0))); }

function check_univ (x0) { return ds.member(ds.get(datastore, "univ"), new expr(x0), equalp); }

function check_boolean (x0) { return ds.member(ds.get(datastore, "boolean"), new expr(x0), equalp); }

function enum_univ (x0) { return ds.get(datastore, "univ"); }

function enum_boolean (x0) { return ds.get(datastore, "boolean"); }

function posx_c (x0) { return pos_c(function (newval, support, sofar) { return new pair(true, newval); }, x0); }

function poss_c (x0) { return pos_c(function (newval, support, sofar) { return new pair(false, ds.adjoin(sofar, newval, equalp)); }, x0); }

function possuppx_c (x0) { return pos_c(function (newval, support, sofar) { return new pair(true, new pair(newval, support)); }, x0); }

function possupps_c (x0) { return pos_c(function (newval, support, sofar) { return new pair(false, ds.adjoin(sofar, new pair(newval, support), equalp)); }, x0); }

function pos_c (onsuccess, x0) { 
   if (varp(x0)) {
      if (!(pos_c_f === undefined)) return pos_c_f(onsuccess, x0);
      else return undefined;}
   else {
      if (!(pos_c_b === undefined)) return pos_c_b(onsuccess, x0);
      else return undefined;} }

function pos_c_b (onsuccess, nsh3264) { 
   var sofar = new set();
   var tmp;
   var x0 = nsh3264;
   if (hascellvalue("s")) {
      if (x0 === 1) {
         if (cellvalue("s") === 1) {
            tmp = onsuccess(new expr(x0), new set("s"), sofar);
            if (ds.first(tmp)) return ds.second(tmp);
            else sofar = ds.second(tmp);}
         x0 = nsh3264;}}
   if ((hascellvalue("f") && hascellvalue("o"))) {
      if (x0 === 1) {
         if (!(cellvalue("f") === 1)) {
            if (cellvalue("o") === 1) {
               tmp = onsuccess(new expr(x0), new set("f", "o"), sofar);
               if (ds.first(tmp)) return ds.second(tmp);
               else sofar = ds.second(tmp);}}
         x0 = nsh3264;}}
   return sofar; }

function pos_c_f (onsuccess, nsh3265) { 
   var sofar = new set();
   var tmp;
   var x0 = nsh3265;
   if (hascellvalue("s")) {
      if (cellvalue("s") === 1) {
         var arh3266 = enum_boolean(x0);
         for (var key in ds.data(arh3266)) {
            x0 = ds.element(ds.element(arh3266, key), 0);
            if (x0 === 1) {
               tmp = onsuccess(new expr(x0), new set("s"), sofar);
               if (ds.first(tmp)) return ds.second(tmp);
               else sofar = ds.second(tmp);}}
         x0 = nsh3265;}}
   if ((hascellvalue("f") && hascellvalue("o"))) {
      if (!(cellvalue("f") === 1)) {
         if (cellvalue("o") === 1) {
            var arh3267 = enum_boolean(x0);
            for (var key in ds.data(arh3267)) {
               x0 = ds.element(ds.element(arh3267, key), 0);
               if (x0 === 1) {
                  tmp = onsuccess(new expr(x0), new set("f", "o"), sofar);
                  if (ds.first(tmp)) return ds.second(tmp);
                  else sofar = ds.second(tmp);}}}
         x0 = nsh3265;}}
   return sofar; }

function negx_s (x0) { return neg_s(function (newval, support, sofar) { return new pair(true, newval); }, x0); }

function negs_s (x0) { return neg_s(function (newval, support, sofar) { return new pair(false, ds.adjoin(sofar, newval, equalp)); }, x0); }

function negsuppx_s (x0) { return neg_s(function (newval, support, sofar) { return new pair(true, new pair(newval, support)); }, x0); }

function negsupps_s (x0) { return neg_s(function (newval, support, sofar) { return new pair(false, ds.adjoin(sofar, new pair(newval, support), equalp)); }, x0); }

function neg_s (onsuccess, x0) { 
   if (varp(x0)) {
      if (!(neg_s_f === undefined)) return neg_s_f(onsuccess, x0);
      else return undefined;}
   else {
      if (!(neg_s_b === undefined)) return neg_s_b(onsuccess, x0);
      else return undefined;} }

function neg_s_b (onsuccess, nsh3267) { 
   var sofar = new set();
   var tmp;
   var x0 = nsh3267;
   if (hascellvalue("c")) {
      if (x0 === 1) {
         if (!(cellvalue("c") === 1)) {
            tmp = onsuccess(new expr(x0), new set("c"), sofar);
            if (ds.first(tmp)) return ds.second(tmp);
            else sofar = ds.second(tmp);}
         x0 = nsh3267;}}
   if (hascellvalue("o")) {
      if (x0 === 1) {
         if (!(cellvalue("o") === 1)) {
            tmp = onsuccess(new expr(x0), new set("o"), sofar);
            if (ds.first(tmp)) return ds.second(tmp);
            else sofar = ds.second(tmp);}
         x0 = nsh3267;}}
   return sofar; }

function neg_s_f (onsuccess, nsh3268) { 
   var sofar = new set();
   var tmp;
   var x0 = nsh3268;
   if (hascellvalue("c")) {
      if (!(cellvalue("c") === 1)) {
         var arh3269 = enum_boolean(x0);
         for (var key in ds.data(arh3269)) {
            x0 = ds.element(ds.element(arh3269, key), 0);
            if (x0 === 1) {
               tmp = onsuccess(new expr(x0), new set("c"), sofar);
               if (ds.first(tmp)) return ds.second(tmp);
               else sofar = ds.second(tmp);}}
         x0 = nsh3268;}}
   if (hascellvalue("o")) {
      if (!(cellvalue("o") === 1)) {
         var arh3270 = enum_boolean(x0);
         for (var key in ds.data(arh3270)) {
            x0 = ds.element(ds.element(arh3270, key), 0);
            if (x0 === 1) {
               tmp = onsuccess(new expr(x0), new set("o"), sofar);
               if (ds.first(tmp)) return ds.second(tmp);
               else sofar = ds.second(tmp);}}
         x0 = nsh3268;}}
   return sofar; }

function posx_s (x0) { return pos_s(function (newval, support, sofar) { return new pair(true, newval); }, x0); }

function poss_s (x0) { return pos_s(function (newval, support, sofar) { return new pair(false, ds.adjoin(sofar, newval, equalp)); }, x0); }

function possuppx_s (x0) { return pos_s(function (newval, support, sofar) { return new pair(true, new pair(newval, support)); }, x0); }

function possupps_s (x0) { return pos_s(function (newval, support, sofar) { return new pair(false, ds.adjoin(sofar, new pair(newval, support), equalp)); }, x0); }

function pos_s (onsuccess, x0) { 
   if (varp(x0)) {
      if (!(pos_s_f === undefined)) return pos_s_f(onsuccess, x0);
      else return undefined;}
   else {
      if (!(pos_s_b === undefined)) return pos_s_b(onsuccess, x0);
      else return undefined;} }

function pos_s_b (onsuccess, nsh3270) { 
   var sofar = new set();
   var tmp;
   var x0 = nsh3270;
   if ((hascellvalue("f") && hascellvalue("o"))) {
      if (x0 === 1) {
         if (!(cellvalue("f") === 1)) {
            if (cellvalue("o") === 1) {
               tmp = onsuccess(new expr(x0), new set("f", "o"), sofar);
               if (ds.first(tmp)) return ds.second(tmp);
               else sofar = ds.second(tmp);}}
         x0 = nsh3270;}}
   return sofar; }

function pos_s_f (onsuccess, nsh3271) { 
   var sofar = new set();
   var tmp;
   var x0 = nsh3271;
   if ((hascellvalue("f") && hascellvalue("o"))) {
      if (!(cellvalue("f") === 1)) {
         if (cellvalue("o") === 1) {
            var arh3271 = enum_boolean(x0);
            for (var key in ds.data(arh3271)) {
               x0 = ds.element(ds.element(arh3271, key), 0);
               if (x0 === 1) {
                  tmp = onsuccess(new expr(x0), new set("f", "o"), sofar);
                  if (ds.first(tmp)) return ds.second(tmp);
                  else sofar = ds.second(tmp);}}}
         x0 = nsh3271;}}
   return sofar; }

function negx_o (x0) { return neg_o(function (newval, support, sofar) { return new pair(true, newval); }, x0); }

function negs_o (x0) { return neg_o(function (newval, support, sofar) { return new pair(false, ds.adjoin(sofar, newval, equalp)); }, x0); }

function negsuppx_o (x0) { return neg_o(function (newval, support, sofar) { return new pair(true, new pair(newval, support)); }, x0); }

function negsupps_o (x0) { return neg_o(function (newval, support, sofar) { return new pair(false, ds.adjoin(sofar, new pair(newval, support), equalp)); }, x0); }

function neg_o (onsuccess, x0) { 
   if (varp(x0)) {
      if (!(neg_o_f === undefined)) return neg_o_f(onsuccess, x0);
      else return undefined;}
   else {
      if (!(neg_o_b === undefined)) return neg_o_b(onsuccess, x0);
      else return undefined;} }

function neg_o_b (onsuccess, nsh3272) { 
   var sofar = new set();
   var tmp;
   var x0 = nsh3272;
   if ((hascellvalue("f") && hascellvalue("s"))) {
      if (x0 === 1) {
         if (!(cellvalue("f") === 1)) {
            if (!(cellvalue("s") === 1)) {
               tmp = onsuccess(new expr(x0), new set("f", "s"), sofar);
               if (ds.first(tmp)) return ds.second(tmp);
               else sofar = ds.second(tmp);}}
         x0 = nsh3272;}}
   if ((hascellvalue("c") && hascellvalue("f"))) {
      if (x0 === 1) {
         if (!(cellvalue("f") === 1)) {
            if (!(cellvalue("c") === 1)) {
               tmp = onsuccess(new expr(x0), new set("c", "f"), sofar);
               if (ds.first(tmp)) return ds.second(tmp);
               else sofar = ds.second(tmp);}}
         x0 = nsh3272;}}
   return sofar; }

function neg_o_f (onsuccess, nsh3273) { 
   var sofar = new set();
   var tmp;
   var x0 = nsh3273;
   if ((hascellvalue("f") && hascellvalue("s"))) {
      if (!(cellvalue("f") === 1)) {
         if (!(cellvalue("s") === 1)) {
            var arh3274 = enum_boolean(x0);
            for (var key in ds.data(arh3274)) {
               x0 = ds.element(ds.element(arh3274, key), 0);
               if (x0 === 1) {
                  tmp = onsuccess(new expr(x0), new set("f", "s"), sofar);
                  if (ds.first(tmp)) return ds.second(tmp);
                  else sofar = ds.second(tmp);}}}
         x0 = nsh3273;}}
   if ((hascellvalue("c") && hascellvalue("f"))) {
      if (!(cellvalue("f") === 1)) {
         if (!(cellvalue("c") === 1)) {
            var arh3275 = enum_boolean(x0);
            for (var key in ds.data(arh3275)) {
               x0 = ds.element(ds.element(arh3275, key), 0);
               if (x0 === 1) {
                  tmp = onsuccess(new expr(x0), new set("c", "f"), sofar);
                  if (ds.first(tmp)) return ds.second(tmp);
                  else sofar = ds.second(tmp);}}}
         x0 = nsh3273;}}
   return sofar; }

function posx_o (x0) { return pos_o(function (newval, support, sofar) { return new pair(true, newval); }, x0); }

function poss_o (x0) { return pos_o(function (newval, support, sofar) { return new pair(false, ds.adjoin(sofar, newval, equalp)); }, x0); }

function possuppx_o (x0) { return pos_o(function (newval, support, sofar) { return new pair(true, new pair(newval, support)); }, x0); }

function possupps_o (x0) { return pos_o(function (newval, support, sofar) { return new pair(false, ds.adjoin(sofar, new pair(newval, support), equalp)); }, x0); }

function pos_o (onsuccess, x0) { 
   if (varp(x0)) {
      if (!(pos_o_f === undefined)) return pos_o_f(onsuccess, x0);
      else return undefined;}
   else {
      if (!(pos_o_b === undefined)) return pos_o_b(onsuccess, x0);
      else return undefined;} }

function pos_o_b (onsuccess, nsh3275) { 
   var sofar = new set();
   var tmp;
   var x0 = nsh3275;
   if (hascellvalue("f")) {
      if (x0 === 1) {
         if (cellvalue("f") === 1) {
            tmp = onsuccess(new expr(x0), new set("f"), sofar);
            if (ds.first(tmp)) return ds.second(tmp);
            else sofar = ds.second(tmp);}
         x0 = nsh3275;}}
   if (hascellvalue("s")) {
      if (x0 === 1) {
         if (cellvalue("s") === 1) {
            tmp = onsuccess(new expr(x0), new set("s"), sofar);
            if (ds.first(tmp)) return ds.second(tmp);
            else sofar = ds.second(tmp);}
         x0 = nsh3275;}}
   return sofar; }

function pos_o_f (onsuccess, nsh3276) { 
   var sofar = new set();
   var tmp;
   var x0 = nsh3276;
   if (hascellvalue("f")) {
      if (cellvalue("f") === 1) {
         var arh3277 = enum_boolean(x0);
         for (var key in ds.data(arh3277)) {
            x0 = ds.element(ds.element(arh3277, key), 0);
            if (x0 === 1) {
               tmp = onsuccess(new expr(x0), new set("f"), sofar);
               if (ds.first(tmp)) return ds.second(tmp);
               else sofar = ds.second(tmp);}}
         x0 = nsh3276;}}
   if (hascellvalue("s")) {
      if (cellvalue("s") === 1) {
         var arh3278 = enum_boolean(x0);
         for (var key in ds.data(arh3278)) {
            x0 = ds.element(ds.element(arh3278, key), 0);
            if (x0 === 1) {
               tmp = onsuccess(new expr(x0), new set("s"), sofar);
               if (ds.first(tmp)) return ds.second(tmp);
               else sofar = ds.second(tmp);}}
         x0 = nsh3276;}}
   return sofar; }

function negx_f (x0) { return neg_f(function (newval, support, sofar) { return new pair(true, newval); }, x0); }

function negs_f (x0) { return neg_f(function (newval, support, sofar) { return new pair(false, ds.adjoin(sofar, newval, equalp)); }, x0); }

function negsuppx_f (x0) { return neg_f(function (newval, support, sofar) { return new pair(true, new pair(newval, support)); }, x0); }

function negsupps_f (x0) { return neg_f(function (newval, support, sofar) { return new pair(false, ds.adjoin(sofar, new pair(newval, support), equalp)); }, x0); }

function neg_f (onsuccess, x0) { 
   if (varp(x0)) {
      if (!(neg_f_f === undefined)) return neg_f_f(onsuccess, x0);
      else return undefined;}
   else {
      if (!(neg_f_b === undefined)) return neg_f_b(onsuccess, x0);
      else return undefined;} }

function neg_f_b (onsuccess, nsh3278) { 
   var sofar = new set();
   var tmp;
   var x0 = nsh3278;
   if (hascellvalue("o")) {
      if (x0 === 1) {
         if (!(cellvalue("o") === 1)) {
            tmp = onsuccess(new expr(x0), new set("o"), sofar);
            if (ds.first(tmp)) return ds.second(tmp);
            else sofar = ds.second(tmp);}
         x0 = nsh3278;}}
   return sofar; }

function neg_f_f (onsuccess, nsh3279) { 
   var sofar = new set();
   var tmp;
   var x0 = nsh3279;
   if (hascellvalue("o")) {
      if (!(cellvalue("o") === 1)) {
         var arh3279 = enum_boolean(x0);
         for (var key in ds.data(arh3279)) {
            x0 = ds.element(ds.element(arh3279, key), 0);
            if (x0 === 1) {
               tmp = onsuccess(new expr(x0), new set("o"), sofar);
               if (ds.first(tmp)) return ds.second(tmp);
               else sofar = ds.second(tmp);}}
         x0 = nsh3279;}}
   return sofar; }

function posx_f (x0) { return pos_f(function (newval, support, sofar) { return new pair(true, newval); }, x0); }

function poss_f (x0) { return pos_f(function (newval, support, sofar) { return new pair(false, ds.adjoin(sofar, newval, equalp)); }, x0); }

function possuppx_f (x0) { return pos_f(function (newval, support, sofar) { return new pair(true, new pair(newval, support)); }, x0); }

function possupps_f (x0) { return pos_f(function (newval, support, sofar) { return new pair(false, ds.adjoin(sofar, new pair(newval, support), equalp)); }, x0); }

function pos_f (onsuccess, x0) { 
   if (varp(x0)) {
      if (!(pos_f_f === undefined)) return pos_f_f(onsuccess, x0);
      else return undefined;}
   else {
      if (!(pos_f_b === undefined)) return pos_f_b(onsuccess, x0);
      else return undefined;} }

function pos_f_b (onsuccess, nsh3280) { 
   var sofar = new set();
   var tmp;
   var x0 = nsh3280;
   if ((hascellvalue("o") && hascellvalue("s"))) {
      if (x0 === 1) {
         if (!(cellvalue("s") === 1)) {
            if (cellvalue("o") === 1) {
               tmp = onsuccess(new expr(x0), new set("o", "s"), sofar);
               if (ds.first(tmp)) return ds.second(tmp);
               else sofar = ds.second(tmp);}}
         x0 = nsh3280;}}
   if ((hascellvalue("c") && hascellvalue("o"))) {
      if (x0 === 1) {
         if (!(cellvalue("c") === 1)) {
            if (cellvalue("o") === 1) {
               tmp = onsuccess(new expr(x0), new set("c", "o"), sofar);
               if (ds.first(tmp)) return ds.second(tmp);
               else sofar = ds.second(tmp);}}
         x0 = nsh3280;}}
   return sofar; }

function pos_f_f (onsuccess, nsh3281) { 
   var sofar = new set();
   var tmp;
   var x0 = nsh3281;
   if ((hascellvalue("o") && hascellvalue("s"))) {
      if (!(cellvalue("s") === 1)) {
         if (cellvalue("o") === 1) {
            var arh3282 = enum_boolean(x0);
            for (var key in ds.data(arh3282)) {
               x0 = ds.element(ds.element(arh3282, key), 0);
               if (x0 === 1) {
                  tmp = onsuccess(new expr(x0), new set("o", "s"), sofar);
                  if (ds.first(tmp)) return ds.second(tmp);
                  else sofar = ds.second(tmp);}}}
         x0 = nsh3281;}}
   if ((hascellvalue("c") && hascellvalue("o"))) {
      if (!(cellvalue("c") === 1)) {
         if (cellvalue("o") === 1) {
            var arh3283 = enum_boolean(x0);
            for (var key in ds.data(arh3283)) {
               x0 = ds.element(ds.element(arh3283, key), 0);
               if (x0 === 1) {
                  tmp = onsuccess(new expr(x0), new set("c", "o"), sofar);
                  if (ds.first(tmp)) return ds.second(tmp);
                  else sofar = ds.second(tmp);}}}
         x0 = nsh3281;}}
   return sofar; }


