{
  "templates": [
    "no runtime",
    "arduino",
    "lego ev3"
  ],
  "programs": [
    "arduino/blink_timed.dl",
    "arduino/blink_timed_macro.dl",
    "arduino/blink_timed_mini.dl",
    "arduino/blink_timed_small.dl",
    "arduino/small/blink_press.dl",
    "arduino/small/blink_press_better.dl",
    "arduino/small/blink_press_simple.dl",
    "arduino/small/flip_flop.dl",
    "ev3/edge_follower.dl",
    "ev3/go.dl",
    "ev3/stop.dl",
    "heating/chain10-one-end_compilable.dl",
    "heating/chain6-both-ends_compilable.dl",
    "heating/lopstr-3rooms.dl",
    "heating/lopstr.dl",
    "heating/myflat_compilable.dl",
    "toy/atom_house_test.dl",
    "toy/busy_beaver.dl",
    "toy/collatz.dl",
    "toy/deductive_init.dl",
    "toy/dedup_io.dl",
    "toy/dedup_multiinput.dl",
    "toy/distribution.dl",
    "toy/does_nothing_after_minimization.dl",
    "toy/early_exit.dl",
    "toy/eq.dl",
    "toy/error/nonstrat1.dl",
    "toy/fsm_dedup_const.dl",
    "toy/fsm_dedup_invariant.dl",
    "toy/fsm_global.dl",
    "toy/hist.dl",
    "toy/include_test.dl",
    "toy/inflationary.dl",
    "toy/misbehaving/hist_macro.dl",
    "toy/multibind.dl",
    "toy/nat.dl",
    "toy/not_inflationary.dl",
    "toy/not_inflationary_with_proof.dl",
    "toy/onefunc.dl",
    "toy/persist_macro.dl",
    "toy/static_condition.dl",
    "toy/static_condition2.dl",
    "toy/tabling.dl",
    "toy/ventilation_control.dl"
  ],
  "settings": [
    "normal",
    "no FSM"
  ],
  "sources": [
    {
      "filename": "arduino/blink_timed.dl",
      "template": "no runtime",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n#millis(X: unsigned long) = {unsigned long X = millis();}\n\n% Declarations\n.decl off_since(unsigned long)\n.decl setup\n.decl now(unsigned long)\n.decl on_since(unsigned long)\n.decl turn_off\n.decl turn_on\n\n% Deduction\nturn_off :- on_since(P), now(T), P+1000 < T.\nturn_on :- off_since(P), now(T), P+1000 < T.\n\n% Induction\non_since(P)@next :- !turn_off, on_since(P).\non_since(T)@next :- turn_on, now(T).\noff_since(P)@next :- !turn_on, off_since(P).\noff_since(T)@next :- turn_off, now(T).\n\n% Input\nnow(X) :- #millis(X).\n#millis(?)@next.\n\n% Setup and Initialization\nsetup@0.\noff_since(0)@0.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\noff_since(0)@0.\nnow(X) :- _io_millis(X).\nturn_off() :- now(T), on_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\nturn_on() :- now(T), off_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\noff_since(P)@next :- off_since(P), !turn_on().\noff_since(T)@next :- now(T), turn_off().\non_since(P)@next :- on_since(P), !turn_off().\non_since(T)@next :- now(T), turn_on().\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n\n\nProgram 3:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\nsetup()@0.\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"now\"]\n3: fromList [\"off_since\"]\n4: fromList [\"on_since\"]\n5: fromList [\"turn_off\"]\n6: fromList [\"turn_on\"]\n*/\n\n#define _rulecount 0\n#define _bufsize 256\n\nbyte _fsm2_state = 3;\nbyte _fsm1_state = 1;\nunsigned long _fsm1_slot_1;\nunsigned long _fsm1_slot_2;\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n/* SETUP */\n\n\n/* LOOP */\n\nif (_fsm2_state == 1)\n  {\n    {\n    _fsm2_trans1:\n      if (true)\n        {\n          _fsm2_state = 1;\n        }\n      else;\n    }\n  }\nelse if (_fsm2_state == 2)\n  {\n    {\n      pinMode (13, OUTPUT);\n    }\n    {\n      goto _fsm2_trans1;\n    }\n  }\nelse if (_fsm2_state == 3)\n  {\n    {\n    _fsm2_trans3:\n      if (true)\n        {\n          _fsm2_state = 2;\n        }\n      else;\n    }\n  }\nelse;\nif (_fsm1_state == 5)\n  {\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n      unsigned long X = millis ();\n      _fsm1_slot_2 = X;\n    }\n    {\n    _fsm1_trans5:\n      if (_fsm1_slot_1 + 1000 < _fsm1_slot_2)\n        {\n          _fsm1_state = 6;\n        }\n      else if (_fsm1_slot_2 <= _fsm1_slot_1 + 1000)\n        {\n          _fsm1_state = 4;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 6)\n  {\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      unsigned long X = millis ();\n      _fsm1_slot_1 = X;\n    }\n    {\n    _fsm1_trans6:\n      if (_fsm1_slot_2 + 1000 < _fsm1_slot_1)\n        {\n          _fsm1_state = 5;\n        }\n      else if (_fsm1_slot_1 <= _fsm1_slot_2 + 1000)\n        {\n          _fsm1_state = 3;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 2)\n  {\n    {\n      unsigned long X = millis ();\n      _fsm1_slot_1 = X;\n    }\n    {\n    _fsm1_trans2:\n      if (1000 < _fsm1_slot_1)\n        {\n          _fsm1_state = 5;\n        }\n      else if (_fsm1_slot_1 <= 1000)\n        {\n          _fsm1_state = 2;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 3)\n  {\n    {\n      unsigned long X = millis ();\n      _fsm1_slot_1 = X;\n    }\n    {\n      goto _fsm1_trans6;\n    }\n  }\nelse if (_fsm1_state == 4)\n  {\n    {\n      unsigned long X = millis ();\n      _fsm1_slot_2 = X;\n    }\n    {\n      goto _fsm1_trans5;\n    }\n  }\nelse if (_fsm1_state == 1)\n  {\n    {\n    _fsm1_trans1:\n      if (true)\n        {\n          _fsm1_state = 2;\n        }\n      else;\n    }\n  }\nelse;\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">off_since(0)@0.</span>\n<span class=\"cm\">now(X) :- _io_millis(X).</span>\n<span class=\"cm\">turn_off() :- now(T), on_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">turn_on() :- now(T), off_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">off_since(P)@next :- off_since(P), !turn_on().</span>\n<span class=\"cm\">off_since(T)@next :- now(T), turn_off().</span>\n<span class=\"cm\">on_since(P)@next :- on_since(P), !turn_off().</span>\n<span class=\"cm\">on_since(T)@next :- now(T), turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;off_since&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;on_since&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;turn_off&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">;</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cm\">/* SETUP */</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm2_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans5</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans6</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans5</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed.dl",
      "template": "no runtime",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n#millis(X: unsigned long) = {unsigned long X = millis();}\n\n% Declarations\n.decl off_since(unsigned long)\n.decl setup\n.decl now(unsigned long)\n.decl on_since(unsigned long)\n.decl turn_off\n.decl turn_on\n\n% Deduction\nturn_off :- on_since(P), now(T), P+1000 < T.\nturn_on :- off_since(P), now(T), P+1000 < T.\n\n% Induction\non_since(P)@next :- !turn_off, on_since(P).\non_since(T)@next :- turn_on, now(T).\noff_since(P)@next :- !turn_on, off_since(P).\noff_since(T)@next :- turn_off, now(T).\n\n% Input\nnow(X) :- #millis(X).\n#millis(?)@next.\n\n% Setup and Initialization\nsetup@0.\noff_since(0)@0.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n",
      "tsource": "/*\nProgram 1:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\noff_since(0)@0.\nsetup()@0.\nnow(X) :- _io_millis(X).\nturn_off() :- now(T), on_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\nturn_on() :- now(T), off_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\noff_since(P)@next :- off_since(P), !turn_on().\noff_since(T)@next :- now(T), turn_off().\non_since(P)@next :- on_since(P), !turn_off().\non_since(T)@next :- now(T), turn_on().\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"now\"]\n3: fromList [\"off_since\"]\n4: fromList [\"on_since\"]\n5: fromList [\"turn_off\"]\n6: fromList [\"turn_on\"]\n*/\n\n#define _rulecount 4\n#define _bufsize 256\n\n\n\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_millis 1 + sizeof(unsigned long)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_now 1 + sizeof(unsigned long)\n#define _size_off_since 1 + sizeof(unsigned long)\n#define _size_on_since 1 + sizeof(unsigned long)\n#define _size_setup 1\n#define _size_turn_off 1\n#define _size_turn_on 1\nbyte _sizes[10] =\n  { 0, _size__io_digitalWrite, _size__io_millis, _size__io_pinOut, _size_now,\n_size_off_since, _size_on_since, _size_setup, _size_turn_off, _size_turn_on\n};\n\n#define _type__io_digitalWrite 1\n#define _type__io_millis 2\n#define _type__io_pinOut 3\n#define _type_now 4\n#define _type_off_since 5\n#define _type_on_since 6\n#define _type_setup 7\n#define _type_turn_off 8\n#define _type_turn_on 9\n\n\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline unsigned long\n_io_millis_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline unsigned long\nnow_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\noff_since_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\non_since_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_unsigned_long (byte *buf, byte type, unsigned long a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < unsigned long >(free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_now(buf, a1) _write_fact_unsigned_long(buf, _type_now, a1)\n#define write_off_since(buf, a1) _write_fact_unsigned_long(buf, _type_off_since, a1)\n#define write_on_since(buf, a1) _write_fact_unsigned_long(buf, _type_on_since, a1)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)\n#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)\n\nbyte *\n_io_millis_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__io_millis)) != 0)\n    {\n      if (_io_millis_1 (buf) != a1)\n        {\n          buf = buf + _size__io_millis;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define now_f(buf) _next__fact(buf,_type_now)\n\nbyte *\nnow_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_now)) != 0)\n    {\n      if (now_1 (buf) != a1)\n        {\n          buf = buf + _size_now;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define off_since_f(buf) _next__fact(buf,_type_off_since)\n\nbyte *\noff_since_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_off_since)) != 0)\n    {\n      if (off_since_1 (buf) != a1)\n        {\n          buf = buf + _size_off_since;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define on_since_f(buf) _next__fact(buf,_type_on_since)\n\nbyte *\non_since_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_on_since)) != 0)\n    {\n      if (on_since_1 (buf) != a1)\n        {\n          buf = buf + _size_on_since;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n#define turn_off_(buf) _next__fact(buf,_type_turn_off)\n\n#define turn_on_(buf) _next__fact(buf,_type_turn_on)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: now(X)=>_curr_state :- U{_io_millis(X)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_millis_f (_tuple1)) != 0)\n    {\n      unsigned long X = _io_millis_1 (_tuple1);\n      if (now_f (_curr_state, X) == 0)\n        {\n          write_now (_curr_state, X);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_millis;\n    }\n  return _added_facts;\n};\n\n// _inductive_rule_1: off_since(P)=>_next_state :- E{!turn_on()} U{off_since(P)}.\nvoid\n_inductive_rule_1 ()\n{\n  if (turn_on_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _curr_state;\n      while ((_tuple1 = off_since_f (_tuple1)) != 0)\n        {\n          unsigned long P = off_since_1 (_tuple1);\n          if (off_since_f (_next_state, P) == 0)\n            {\n              write_off_since (_next_state, P);\n            }\n          _tuple1 += _size_off_since;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: off_since(T)=>_next_state :- E{turn_off()} U{now(T)}.\nvoid\n_inductive_rule_2 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = now_f (_tuple2)) != 0)\n        {\n          unsigned long T = now_1 (_tuple2);\n          if (off_since_f (_next_state, T) == 0)\n            {\n              write_off_since (_next_state, T);\n            }\n          _tuple2 += _size_now;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: on_since(P)=>_next_state :- E{!turn_off()} U{on_since(P)}.\nvoid\n_inductive_rule_3 ()\n{\n  if (turn_off_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _curr_state;\n      while ((_tuple1 = on_since_f (_tuple1)) != 0)\n        {\n          unsigned long P = on_since_1 (_tuple1);\n          if (on_since_f (_next_state, P) == 0)\n            {\n              write_on_since (_next_state, P);\n            }\n          _tuple1 += _size_on_since;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: on_since(T)=>_next_state :- E{turn_on()} U{now(T)}.\nvoid\n_inductive_rule_4 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = now_f (_tuple2)) != 0)\n        {\n          unsigned long T = now_1 (_tuple2);\n          if (on_since_f (_next_state, T) == 0)\n            {\n              write_on_since (_next_state, T);\n            }\n          _tuple2 += _size_now;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _deductive_rule_2: turn_off()=>_curr_state :- E{now(T) on_since(P) ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\")}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = now_f (_tuple1)) != 0)\n    {\n      unsigned long T = now_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = on_since_f (_tuple2)) != 0)\n        {\n          unsigned long P = on_since_1 (_tuple2);\n          if (P + 1000 < T)\n            {\n              if (turn_off_ (_curr_state) == 0)\n                {\n                  write_turn_off (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size_on_since;\n        }\n      _tuple1 += _size_now;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_3: turn_on()=>_curr_state :- E{now(T) off_since(P) ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\")}.\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = now_f (_tuple1)) != 0)\n    {\n      unsigned long T = now_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = off_since_f (_tuple2)) != 0)\n        {\n          unsigned long P = off_since_1 (_tuple2);\n          if (P + 1000 < T)\n            {\n              if (turn_on_ (_curr_state) == 0)\n                {\n                  write_turn_on (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size_off_since;\n        }\n      _tuple1 += _size_now;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=>_next_state :- E{turn_on()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_digitalWrite(13, LOW)=>_next_state :- E{turn_off()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_millis(_)=>_next_state :- .\nvoid\n_inductive_rule_7 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_millis_f (_next_state)) == 0)\n    {\n// make io call\n      unsigned long X = millis ();\n      write__io_millis (_next_state, X);\n    }\n};\n\n// _inductive_rule_8: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n/* SETUP */\nwrite_off_since (_curr_state, 0);\n_added_facts = true;\nwrite_setup (_curr_state);\n_added_facts = true;\n\n\n/* LOOP */\n\n\n\n// deductive phase\n\n// stratum 2\n_deductive_rule_1 ();\n\n\n// stratum 5\n_deductive_rule_2 ();\n// stratum 6\n_deductive_rule_3 ();\n// inductive_phase\n_inductive_rule_1 ();\n_inductive_rule_2 ();\n_inductive_rule_3 ();\n_inductive_rule_4 ();\n_inductive_rule_5 ();\n_inductive_rule_6 ();\n_inductive_rule_7 ();\n_inductive_rule_8 ();\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">off_since(0)@0.</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">now(X) :- _io_millis(X).</span>\n<span class=\"cm\">turn_off() :- now(T), on_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">turn_on() :- now(T), off_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">off_since(P)@next :- off_since(P), !turn_on().</span>\n<span class=\"cm\">off_since(T)@next :- now(T), turn_off().</span>\n<span class=\"cm\">on_since(P)@next :- on_since(P), !turn_off().</span>\n<span class=\"cm\">on_since(T)@next :- now(T), turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;off_since&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;on_since&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;turn_off&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n\n\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_millis 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_now 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_off_since 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_on_since 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"cp\">#define _size_turn_off 1</span>\n<span class=\"cp\">#define _size_turn_on 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">10</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">,</span>\n<span class=\"n\">_size_off_since</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_setup</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_on</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalWrite 1</span>\n<span class=\"cp\">#define _type__io_millis 2</span>\n<span class=\"cp\">#define _type__io_pinOut 3</span>\n<span class=\"cp\">#define _type_now 4</span>\n<span class=\"cp\">#define _type_off_since 5</span>\n<span class=\"cp\">#define _type_on_since 6</span>\n<span class=\"cp\">#define _type_setup 7</span>\n<span class=\"cp\">#define _type_turn_off 8</span>\n<span class=\"cp\">#define _type_turn_on 9</span>\n\n\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_now(buf, a1) _write_fact_unsigned_long(buf, _type_now, a1)</span>\n<span class=\"cp\">#define write_off_since(buf, a1) _write_fact_unsigned_long(buf, _type_off_since, a1)</span>\n<span class=\"cp\">#define write_on_since(buf, a1) _write_fact_unsigned_long(buf, _type_on_since, a1)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n<span class=\"cp\">#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)</span>\n<span class=\"cp\">#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_millis_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_millis</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define now_f(buf) _next__fact(buf,_type_now)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">now_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_now</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define off_since_f(buf) _next__fact(buf,_type_off_since)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">off_since_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_off_since</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define on_since_f(buf) _next__fact(buf,_type_on_since)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">on_since_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_on_since</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n<span class=\"cp\">#define turn_off_(buf) _next__fact(buf,_type_turn_off)</span>\n\n<span class=\"cp\">#define turn_on_(buf) _next__fact(buf,_type_turn_on)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: now(X)=&gt;_curr_state :- U{_io_millis(X)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: off_since(P)=&gt;_next_state :- E{!turn_on()} U{off_since(P)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: off_since(T)=&gt;_next_state :- E{turn_off()} U{now(T)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: on_since(P)=&gt;_next_state :- E{!turn_off()} U{on_since(P)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: on_since(T)=&gt;_next_state :- E{turn_on()} U{now(T)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: turn_off()=&gt;_curr_state :- E{now(T) on_since(P) ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: turn_on()=&gt;_curr_state :- E{now(T) off_since(P) ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{turn_on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{turn_off()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_millis(_)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_millis</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cm\">/* SETUP */</span>\n<span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n\n\n<span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"c1\">// stratum 5</span>\n<span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 6</span>\n<span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed.dl",
      "template": "arduino",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n#millis(X: unsigned long) = {unsigned long X = millis();}\n\n% Declarations\n.decl off_since(unsigned long)\n.decl setup\n.decl now(unsigned long)\n.decl on_since(unsigned long)\n.decl turn_off\n.decl turn_on\n\n% Deduction\nturn_off :- on_since(P), now(T), P+1000 < T.\nturn_on :- off_since(P), now(T), P+1000 < T.\n\n% Induction\non_since(P)@next :- !turn_off, on_since(P).\non_since(T)@next :- turn_on, now(T).\noff_since(P)@next :- !turn_on, off_since(P).\noff_since(T)@next :- turn_off, now(T).\n\n% Input\nnow(X) :- #millis(X).\n#millis(?)@next.\n\n% Setup and Initialization\nsetup@0.\noff_since(0)@0.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\noff_since(0)@0.\nnow(X) :- _io_millis(X).\nturn_off() :- now(T), on_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\nturn_on() :- now(T), off_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\noff_since(P)@next :- off_since(P), !turn_on().\noff_since(T)@next :- now(T), turn_off().\non_since(P)@next :- on_since(P), !turn_off().\non_since(T)@next :- now(T), turn_on().\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n\n\nProgram 3:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\nsetup()@0.\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"now\"]\n3: fromList [\"off_since\"]\n4: fromList [\"on_since\"]\n5: fromList [\"turn_off\"]\n6: fromList [\"turn_on\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm2_state = 3;\nbyte _fsm1_state = 1;\nunsigned long _fsm1_slot_1;\nunsigned long _fsm1_slot_2;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm2_state == 1)\n    {\n      {\n      _fsm2_trans1:\n        if (true)\n          {\n            _fsm2_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm2_state == 2)\n    {\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n        goto _fsm2_trans1;\n      }\n    }\n  else if (_fsm2_state == 3)\n    {\n      {\n      _fsm2_trans3:\n        if (true)\n          {\n            _fsm2_state = 2;\n          }\n        else;\n      }\n    }\n  else;\n  if (_fsm1_state == 5)\n    {\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_2 = X;\n      }\n      {\n      _fsm1_trans5:\n        if (_fsm1_slot_1 + 1000 < _fsm1_slot_2)\n          {\n            _fsm1_state = 6;\n          }\n        else if (_fsm1_slot_2 <= _fsm1_slot_1 + 1000)\n          {\n            _fsm1_state = 4;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 6)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_1 = X;\n      }\n      {\n      _fsm1_trans6:\n        if (_fsm1_slot_2 + 1000 < _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else if (_fsm1_slot_1 <= _fsm1_slot_2 + 1000)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_1 = X;\n      }\n      {\n      _fsm1_trans2:\n        if (1000 < _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else if (_fsm1_slot_1 <= 1000)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_1 = X;\n      }\n      {\n        goto _fsm1_trans6;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_2 = X;\n      }\n      {\n        goto _fsm1_trans5;\n      }\n    }\n  else if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">off_since(0)@0.</span>\n<span class=\"cm\">now(X) :- _io_millis(X).</span>\n<span class=\"cm\">turn_off() :- now(T), on_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">turn_on() :- now(T), off_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">off_since(P)@next :- off_since(P), !turn_on().</span>\n<span class=\"cm\">off_since(T)@next :- now(T), turn_off().</span>\n<span class=\"cm\">on_since(P)@next :- on_since(P), !turn_off().</span>\n<span class=\"cm\">on_since(T)@next :- now(T), turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;off_since&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;on_since&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;turn_off&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans5</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans6</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans5</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed.dl",
      "template": "arduino",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n#millis(X: unsigned long) = {unsigned long X = millis();}\n\n% Declarations\n.decl off_since(unsigned long)\n.decl setup\n.decl now(unsigned long)\n.decl on_since(unsigned long)\n.decl turn_off\n.decl turn_on\n\n% Deduction\nturn_off :- on_since(P), now(T), P+1000 < T.\nturn_on :- off_since(P), now(T), P+1000 < T.\n\n% Induction\non_since(P)@next :- !turn_off, on_since(P).\non_since(T)@next :- turn_on, now(T).\noff_since(P)@next :- !turn_on, off_since(P).\noff_since(T)@next :- turn_off, now(T).\n\n% Input\nnow(X) :- #millis(X).\n#millis(?)@next.\n\n% Setup and Initialization\nsetup@0.\noff_since(0)@0.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n",
      "tsource": "/*\nProgram 1:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\noff_since(0)@0.\nsetup()@0.\nnow(X) :- _io_millis(X).\nturn_off() :- now(T), on_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\nturn_on() :- now(T), off_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\noff_since(P)@next :- off_since(P), !turn_on().\noff_since(T)@next :- now(T), turn_off().\non_since(P)@next :- on_since(P), !turn_off().\non_since(T)@next :- now(T), turn_on().\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"now\"]\n3: fromList [\"off_since\"]\n4: fromList [\"on_since\"]\n5: fromList [\"turn_off\"]\n6: fromList [\"turn_on\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 4\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_millis 1 + sizeof(unsigned long)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_now 1 + sizeof(unsigned long)\n#define _size_off_since 1 + sizeof(unsigned long)\n#define _size_on_since 1 + sizeof(unsigned long)\n#define _size_setup 1\n#define _size_turn_off 1\n#define _size_turn_on 1\nbyte _sizes[10] =\n  { 0, _size__io_digitalWrite, _size__io_millis, _size__io_pinOut, _size_now,\n_size_off_since, _size_on_since, _size_setup, _size_turn_off, _size_turn_on\n};\n\n#define _type__io_digitalWrite 1\n#define _type__io_millis 2\n#define _type__io_pinOut 3\n#define _type_now 4\n#define _type_off_since 5\n#define _type_on_since 6\n#define _type_setup 7\n#define _type_turn_off 8\n#define _type_turn_on 9\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline unsigned long\n_io_millis_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline unsigned long\nnow_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\noff_since_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\non_since_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_unsigned_long (byte *buf, byte type, unsigned long a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < unsigned long >(free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_now(buf, a1) _write_fact_unsigned_long(buf, _type_now, a1)\n#define write_off_since(buf, a1) _write_fact_unsigned_long(buf, _type_off_since, a1)\n#define write_on_since(buf, a1) _write_fact_unsigned_long(buf, _type_on_since, a1)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)\n#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)\n\nbyte *\n_io_millis_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__io_millis)) != 0)\n    {\n      if (_io_millis_1 (buf) != a1)\n        {\n          buf = buf + _size__io_millis;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define now_f(buf) _next__fact(buf,_type_now)\n\nbyte *\nnow_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_now)) != 0)\n    {\n      if (now_1 (buf) != a1)\n        {\n          buf = buf + _size_now;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define off_since_f(buf) _next__fact(buf,_type_off_since)\n\nbyte *\noff_since_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_off_since)) != 0)\n    {\n      if (off_since_1 (buf) != a1)\n        {\n          buf = buf + _size_off_since;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define on_since_f(buf) _next__fact(buf,_type_on_since)\n\nbyte *\non_since_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_on_since)) != 0)\n    {\n      if (on_since_1 (buf) != a1)\n        {\n          buf = buf + _size_on_since;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n#define turn_off_(buf) _next__fact(buf,_type_turn_off)\n\n#define turn_on_(buf) _next__fact(buf,_type_turn_on)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: now(X)=>_curr_state :- U{_io_millis(X)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_millis_f (_tuple1)) != 0)\n    {\n      unsigned long X = _io_millis_1 (_tuple1);\n      if (now_f (_curr_state, X) == 0)\n        {\n          write_now (_curr_state, X);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_millis;\n    }\n  return _added_facts;\n};\n\n// _inductive_rule_1: off_since(P)=>_next_state :- E{!turn_on()} U{off_since(P)}.\nvoid\n_inductive_rule_1 ()\n{\n  if (turn_on_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _curr_state;\n      while ((_tuple1 = off_since_f (_tuple1)) != 0)\n        {\n          unsigned long P = off_since_1 (_tuple1);\n          if (off_since_f (_next_state, P) == 0)\n            {\n              write_off_since (_next_state, P);\n            }\n          _tuple1 += _size_off_since;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: off_since(T)=>_next_state :- E{turn_off()} U{now(T)}.\nvoid\n_inductive_rule_2 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = now_f (_tuple2)) != 0)\n        {\n          unsigned long T = now_1 (_tuple2);\n          if (off_since_f (_next_state, T) == 0)\n            {\n              write_off_since (_next_state, T);\n            }\n          _tuple2 += _size_now;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: on_since(P)=>_next_state :- E{!turn_off()} U{on_since(P)}.\nvoid\n_inductive_rule_3 ()\n{\n  if (turn_off_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _curr_state;\n      while ((_tuple1 = on_since_f (_tuple1)) != 0)\n        {\n          unsigned long P = on_since_1 (_tuple1);\n          if (on_since_f (_next_state, P) == 0)\n            {\n              write_on_since (_next_state, P);\n            }\n          _tuple1 += _size_on_since;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: on_since(T)=>_next_state :- E{turn_on()} U{now(T)}.\nvoid\n_inductive_rule_4 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = now_f (_tuple2)) != 0)\n        {\n          unsigned long T = now_1 (_tuple2);\n          if (on_since_f (_next_state, T) == 0)\n            {\n              write_on_since (_next_state, T);\n            }\n          _tuple2 += _size_now;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _deductive_rule_2: turn_off()=>_curr_state :- E{now(T) on_since(P) ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\")}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = now_f (_tuple1)) != 0)\n    {\n      unsigned long T = now_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = on_since_f (_tuple2)) != 0)\n        {\n          unsigned long P = on_since_1 (_tuple2);\n          if (P + 1000 < T)\n            {\n              if (turn_off_ (_curr_state) == 0)\n                {\n                  write_turn_off (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size_on_since;\n        }\n      _tuple1 += _size_now;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_3: turn_on()=>_curr_state :- E{now(T) off_since(P) ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\")}.\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = now_f (_tuple1)) != 0)\n    {\n      unsigned long T = now_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = off_since_f (_tuple2)) != 0)\n        {\n          unsigned long P = off_since_1 (_tuple2);\n          if (P + 1000 < T)\n            {\n              if (turn_on_ (_curr_state) == 0)\n                {\n                  write_turn_on (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size_off_since;\n        }\n      _tuple1 += _size_now;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=>_next_state :- E{turn_on()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_digitalWrite(13, LOW)=>_next_state :- E{turn_off()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_millis(_)=>_next_state :- .\nvoid\n_inductive_rule_7 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_millis_f (_next_state)) == 0)\n    {\n// make io call\n      unsigned long X = millis ();\n      write__io_millis (_next_state, X);\n    }\n};\n\n// _inductive_rule_8: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_off_since (_curr_state, 0);\n  _added_facts = true;\n  write_setup (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n// stratum 2\n  _deductive_rule_1 ();\n\n\n// stratum 5\n  _deductive_rule_2 ();\n// stratum 6\n  _deductive_rule_3 ();\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n  _inductive_rule_6 ();\n  _inductive_rule_7 ();\n  _inductive_rule_8 ();\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">off_since(0)@0.</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">now(X) :- _io_millis(X).</span>\n<span class=\"cm\">turn_off() :- now(T), on_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">turn_on() :- now(T), off_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">off_since(P)@next :- off_since(P), !turn_on().</span>\n<span class=\"cm\">off_since(T)@next :- now(T), turn_off().</span>\n<span class=\"cm\">on_since(P)@next :- on_since(P), !turn_off().</span>\n<span class=\"cm\">on_since(T)@next :- now(T), turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;off_since&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;on_since&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;turn_off&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_millis 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_now 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_off_since 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_on_since 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"cp\">#define _size_turn_off 1</span>\n<span class=\"cp\">#define _size_turn_on 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">10</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">,</span>\n<span class=\"n\">_size_off_since</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_setup</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_on</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalWrite 1</span>\n<span class=\"cp\">#define _type__io_millis 2</span>\n<span class=\"cp\">#define _type__io_pinOut 3</span>\n<span class=\"cp\">#define _type_now 4</span>\n<span class=\"cp\">#define _type_off_since 5</span>\n<span class=\"cp\">#define _type_on_since 6</span>\n<span class=\"cp\">#define _type_setup 7</span>\n<span class=\"cp\">#define _type_turn_off 8</span>\n<span class=\"cp\">#define _type_turn_on 9</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_now(buf, a1) _write_fact_unsigned_long(buf, _type_now, a1)</span>\n<span class=\"cp\">#define write_off_since(buf, a1) _write_fact_unsigned_long(buf, _type_off_since, a1)</span>\n<span class=\"cp\">#define write_on_since(buf, a1) _write_fact_unsigned_long(buf, _type_on_since, a1)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n<span class=\"cp\">#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)</span>\n<span class=\"cp\">#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_millis_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_millis</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define now_f(buf) _next__fact(buf,_type_now)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">now_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_now</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define off_since_f(buf) _next__fact(buf,_type_off_since)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">off_since_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_off_since</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define on_since_f(buf) _next__fact(buf,_type_on_since)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">on_since_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_on_since</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n<span class=\"cp\">#define turn_off_(buf) _next__fact(buf,_type_turn_off)</span>\n\n<span class=\"cp\">#define turn_on_(buf) _next__fact(buf,_type_turn_on)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: now(X)=&gt;_curr_state :- U{_io_millis(X)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: off_since(P)=&gt;_next_state :- E{!turn_on()} U{off_since(P)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: off_since(T)=&gt;_next_state :- E{turn_off()} U{now(T)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: on_since(P)=&gt;_next_state :- E{!turn_off()} U{on_since(P)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: on_since(T)=&gt;_next_state :- E{turn_on()} U{now(T)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: turn_off()=&gt;_curr_state :- E{now(T) on_since(P) ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: turn_on()=&gt;_curr_state :- E{now(T) off_since(P) ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{turn_on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{turn_off()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_millis(_)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_millis</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"c1\">// stratum 5</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 6</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed.dl",
      "template": "lego ev3",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n#millis(X: unsigned long) = {unsigned long X = millis();}\n\n% Declarations\n.decl off_since(unsigned long)\n.decl setup\n.decl now(unsigned long)\n.decl on_since(unsigned long)\n.decl turn_off\n.decl turn_on\n\n% Deduction\nturn_off :- on_since(P), now(T), P+1000 < T.\nturn_on :- off_since(P), now(T), P+1000 < T.\n\n% Induction\non_since(P)@next :- !turn_off, on_since(P).\non_since(T)@next :- turn_on, now(T).\noff_since(P)@next :- !turn_on, off_since(P).\noff_since(T)@next :- turn_off, now(T).\n\n% Input\nnow(X) :- #millis(X).\n#millis(?)@next.\n\n% Setup and Initialization\nsetup@0.\noff_since(0)@0.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\noff_since(0)@0.\nnow(X) :- _io_millis(X).\nturn_off() :- now(T), on_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\nturn_on() :- now(T), off_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\noff_since(P)@next :- off_since(P), !turn_on().\noff_since(T)@next :- now(T), turn_off().\non_since(P)@next :- on_since(P), !turn_off().\non_since(T)@next :- now(T), turn_on().\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n\n\nProgram 3:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\nsetup()@0.\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"now\"]\n3: fromList [\"off_since\"]\n4: fromList [\"on_since\"]\n5: fromList [\"turn_off\"]\n6: fromList [\"turn_on\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm2_state = 3;\nbyte _fsm1_state = 1;\nunsigned long _fsm1_slot_1;\nunsigned long _fsm1_slot_2;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm2_state == 1)\n    {\n      {\n      _fsm2_trans1:\n        if (true)\n          {\n            _fsm2_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm2_state == 2)\n    {\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n        goto _fsm2_trans1;\n      }\n    }\n  else if (_fsm2_state == 3)\n    {\n      {\n      _fsm2_trans3:\n        if (true)\n          {\n            _fsm2_state = 2;\n          }\n        else;\n      }\n    }\n  else;\n  if (_fsm1_state == 5)\n    {\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_2 = X;\n      }\n      {\n      _fsm1_trans5:\n        if (_fsm1_slot_1 + 1000 < _fsm1_slot_2)\n          {\n            _fsm1_state = 6;\n          }\n        else if (_fsm1_slot_2 <= _fsm1_slot_1 + 1000)\n          {\n            _fsm1_state = 4;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 6)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_1 = X;\n      }\n      {\n      _fsm1_trans6:\n        if (_fsm1_slot_2 + 1000 < _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else if (_fsm1_slot_1 <= _fsm1_slot_2 + 1000)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_1 = X;\n      }\n      {\n      _fsm1_trans2:\n        if (1000 < _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else if (_fsm1_slot_1 <= 1000)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_1 = X;\n      }\n      {\n        goto _fsm1_trans6;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_2 = X;\n      }\n      {\n        goto _fsm1_trans5;\n      }\n    }\n  else if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">off_since(0)@0.</span>\n<span class=\"cm\">now(X) :- _io_millis(X).</span>\n<span class=\"cm\">turn_off() :- now(T), on_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">turn_on() :- now(T), off_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">off_since(P)@next :- off_since(P), !turn_on().</span>\n<span class=\"cm\">off_since(T)@next :- now(T), turn_off().</span>\n<span class=\"cm\">on_since(P)@next :- on_since(P), !turn_off().</span>\n<span class=\"cm\">on_since(T)@next :- now(T), turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;off_since&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;on_since&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;turn_off&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans5</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans6</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans5</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"n\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed.dl",
      "template": "lego ev3",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n#millis(X: unsigned long) = {unsigned long X = millis();}\n\n% Declarations\n.decl off_since(unsigned long)\n.decl setup\n.decl now(unsigned long)\n.decl on_since(unsigned long)\n.decl turn_off\n.decl turn_on\n\n% Deduction\nturn_off :- on_since(P), now(T), P+1000 < T.\nturn_on :- off_since(P), now(T), P+1000 < T.\n\n% Induction\non_since(P)@next :- !turn_off, on_since(P).\non_since(T)@next :- turn_on, now(T).\noff_since(P)@next :- !turn_on, off_since(P).\noff_since(T)@next :- turn_off, now(T).\n\n% Input\nnow(X) :- #millis(X).\n#millis(?)@next.\n\n% Setup and Initialization\nsetup@0.\noff_since(0)@0.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n",
      "tsource": "/*\nProgram 1:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\noff_since(0)@0.\nsetup()@0.\nnow(X) :- _io_millis(X).\nturn_off() :- now(T), on_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\nturn_on() :- now(T), off_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\noff_since(P)@next :- off_since(P), !turn_on().\noff_since(T)@next :- now(T), turn_off().\non_since(P)@next :- on_since(P), !turn_off().\non_since(T)@next :- now(T), turn_on().\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"now\"]\n3: fromList [\"off_since\"]\n4: fromList [\"on_since\"]\n5: fromList [\"turn_off\"]\n6: fromList [\"turn_on\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 4\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_millis 1 + sizeof(unsigned long)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_now 1 + sizeof(unsigned long)\n#define _size_off_since 1 + sizeof(unsigned long)\n#define _size_on_since 1 + sizeof(unsigned long)\n#define _size_setup 1\n#define _size_turn_off 1\n#define _size_turn_on 1\nbyte _sizes[10] =\n  { 0, _size__io_digitalWrite, _size__io_millis, _size__io_pinOut, _size_now,\n_size_off_since, _size_on_since, _size_setup, _size_turn_off, _size_turn_on\n};\n\n#define _type__io_digitalWrite 1\n#define _type__io_millis 2\n#define _type__io_pinOut 3\n#define _type_now 4\n#define _type_off_since 5\n#define _type_on_since 6\n#define _type_setup 7\n#define _type_turn_off 8\n#define _type_turn_on 9\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline unsigned long\n_io_millis_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline unsigned long\nnow_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\noff_since_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\non_since_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_unsigned_long (byte *buf, byte type, unsigned long a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < unsigned long >(free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_now(buf, a1) _write_fact_unsigned_long(buf, _type_now, a1)\n#define write_off_since(buf, a1) _write_fact_unsigned_long(buf, _type_off_since, a1)\n#define write_on_since(buf, a1) _write_fact_unsigned_long(buf, _type_on_since, a1)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)\n#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)\n\nbyte *\n_io_millis_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__io_millis)) != 0)\n    {\n      if (_io_millis_1 (buf) != a1)\n        {\n          buf = buf + _size__io_millis;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define now_f(buf) _next__fact(buf,_type_now)\n\nbyte *\nnow_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_now)) != 0)\n    {\n      if (now_1 (buf) != a1)\n        {\n          buf = buf + _size_now;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define off_since_f(buf) _next__fact(buf,_type_off_since)\n\nbyte *\noff_since_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_off_since)) != 0)\n    {\n      if (off_since_1 (buf) != a1)\n        {\n          buf = buf + _size_off_since;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define on_since_f(buf) _next__fact(buf,_type_on_since)\n\nbyte *\non_since_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_on_since)) != 0)\n    {\n      if (on_since_1 (buf) != a1)\n        {\n          buf = buf + _size_on_since;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n#define turn_off_(buf) _next__fact(buf,_type_turn_off)\n\n#define turn_on_(buf) _next__fact(buf,_type_turn_on)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: now(X)=>_curr_state :- U{_io_millis(X)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_millis_f (_tuple1)) != 0)\n    {\n      unsigned long X = _io_millis_1 (_tuple1);\n      if (now_f (_curr_state, X) == 0)\n        {\n          write_now (_curr_state, X);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_millis;\n    }\n  return _added_facts;\n};\n\n// _inductive_rule_1: off_since(P)=>_next_state :- E{!turn_on()} U{off_since(P)}.\nvoid\n_inductive_rule_1 ()\n{\n  if (turn_on_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _curr_state;\n      while ((_tuple1 = off_since_f (_tuple1)) != 0)\n        {\n          unsigned long P = off_since_1 (_tuple1);\n          if (off_since_f (_next_state, P) == 0)\n            {\n              write_off_since (_next_state, P);\n            }\n          _tuple1 += _size_off_since;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: off_since(T)=>_next_state :- E{turn_off()} U{now(T)}.\nvoid\n_inductive_rule_2 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = now_f (_tuple2)) != 0)\n        {\n          unsigned long T = now_1 (_tuple2);\n          if (off_since_f (_next_state, T) == 0)\n            {\n              write_off_since (_next_state, T);\n            }\n          _tuple2 += _size_now;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: on_since(P)=>_next_state :- E{!turn_off()} U{on_since(P)}.\nvoid\n_inductive_rule_3 ()\n{\n  if (turn_off_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _curr_state;\n      while ((_tuple1 = on_since_f (_tuple1)) != 0)\n        {\n          unsigned long P = on_since_1 (_tuple1);\n          if (on_since_f (_next_state, P) == 0)\n            {\n              write_on_since (_next_state, P);\n            }\n          _tuple1 += _size_on_since;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: on_since(T)=>_next_state :- E{turn_on()} U{now(T)}.\nvoid\n_inductive_rule_4 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = now_f (_tuple2)) != 0)\n        {\n          unsigned long T = now_1 (_tuple2);\n          if (on_since_f (_next_state, T) == 0)\n            {\n              write_on_since (_next_state, T);\n            }\n          _tuple2 += _size_now;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _deductive_rule_2: turn_off()=>_curr_state :- E{now(T) on_since(P) ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\")}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = now_f (_tuple1)) != 0)\n    {\n      unsigned long T = now_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = on_since_f (_tuple2)) != 0)\n        {\n          unsigned long P = on_since_1 (_tuple2);\n          if (P + 1000 < T)\n            {\n              if (turn_off_ (_curr_state) == 0)\n                {\n                  write_turn_off (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size_on_since;\n        }\n      _tuple1 += _size_now;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_3: turn_on()=>_curr_state :- E{now(T) off_since(P) ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\")}.\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = now_f (_tuple1)) != 0)\n    {\n      unsigned long T = now_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = off_since_f (_tuple2)) != 0)\n        {\n          unsigned long P = off_since_1 (_tuple2);\n          if (P + 1000 < T)\n            {\n              if (turn_on_ (_curr_state) == 0)\n                {\n                  write_turn_on (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size_off_since;\n        }\n      _tuple1 += _size_now;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=>_next_state :- E{turn_on()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_digitalWrite(13, LOW)=>_next_state :- E{turn_off()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_millis(_)=>_next_state :- .\nvoid\n_inductive_rule_7 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_millis_f (_next_state)) == 0)\n    {\n// make io call\n      unsigned long X = millis ();\n      write__io_millis (_next_state, X);\n    }\n};\n\n// _inductive_rule_8: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_off_since (_curr_state, 0);\n  _added_facts = true;\n  write_setup (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n// stratum 2\n  _deductive_rule_1 ();\n\n\n// stratum 5\n  _deductive_rule_2 ();\n// stratum 6\n  _deductive_rule_3 ();\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n  _inductive_rule_6 ();\n  _inductive_rule_7 ();\n  _inductive_rule_8 ();\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">off_since(0)@0.</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">now(X) :- _io_millis(X).</span>\n<span class=\"cm\">turn_off() :- now(T), on_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">turn_on() :- now(T), off_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">off_since(P)@next :- off_since(P), !turn_on().</span>\n<span class=\"cm\">off_since(T)@next :- now(T), turn_off().</span>\n<span class=\"cm\">on_since(P)@next :- on_since(P), !turn_off().</span>\n<span class=\"cm\">on_since(T)@next :- now(T), turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;off_since&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;on_since&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;turn_off&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_millis 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_now 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_off_since 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_on_since 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"cp\">#define _size_turn_off 1</span>\n<span class=\"cp\">#define _size_turn_on 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">10</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">,</span>\n<span class=\"n\">_size_off_since</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_setup</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_on</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalWrite 1</span>\n<span class=\"cp\">#define _type__io_millis 2</span>\n<span class=\"cp\">#define _type__io_pinOut 3</span>\n<span class=\"cp\">#define _type_now 4</span>\n<span class=\"cp\">#define _type_off_since 5</span>\n<span class=\"cp\">#define _type_on_since 6</span>\n<span class=\"cp\">#define _type_setup 7</span>\n<span class=\"cp\">#define _type_turn_off 8</span>\n<span class=\"cp\">#define _type_turn_on 9</span>\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_now(buf, a1) _write_fact_unsigned_long(buf, _type_now, a1)</span>\n<span class=\"cp\">#define write_off_since(buf, a1) _write_fact_unsigned_long(buf, _type_off_since, a1)</span>\n<span class=\"cp\">#define write_on_since(buf, a1) _write_fact_unsigned_long(buf, _type_on_since, a1)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n<span class=\"cp\">#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)</span>\n<span class=\"cp\">#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_millis_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_millis</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define now_f(buf) _next__fact(buf,_type_now)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">now_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_now</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define off_since_f(buf) _next__fact(buf,_type_off_since)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">off_since_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_off_since</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define on_since_f(buf) _next__fact(buf,_type_on_since)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">on_since_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_on_since</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n<span class=\"cp\">#define turn_off_(buf) _next__fact(buf,_type_turn_off)</span>\n\n<span class=\"cp\">#define turn_on_(buf) _next__fact(buf,_type_turn_on)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: now(X)=&gt;_curr_state :- U{_io_millis(X)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: off_since(P)=&gt;_next_state :- E{!turn_on()} U{off_since(P)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: off_since(T)=&gt;_next_state :- E{turn_off()} U{now(T)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: on_since(P)=&gt;_next_state :- E{!turn_off()} U{on_since(P)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: on_since(T)=&gt;_next_state :- E{turn_on()} U{now(T)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: turn_off()=&gt;_curr_state :- E{now(T) on_since(P) ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: turn_on()=&gt;_curr_state :- E{now(T) off_since(P) ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{turn_on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{turn_off()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_millis(_)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_millis</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"c1\">// stratum 5</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 6</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"nf\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_macro.dl",
      "template": "no runtime",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n[setup]#pinOut(13)@next.\n[delay:1000]turn_on :- turn_off.\n#digitalWrite(13, #HIGH)@next :- turn_on.\n\n[setup]turn_off.\n[delay:1000]turn_off :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n\n.decl turn_off\n.decl turn_on\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl _delayed1000turn_off/1(unsigned long)\n.decl _delayed1000turn_on/1(unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\n_now(0)@0.\n_setup()@0.\n_delayed1000turn_off(_Await) :- _now(_Await), turn_on().\n_delayed1000turn_on(_Await) :- _now(_Await), turn_off().\n_now(T) :- _io_millis(T).\nturn_off() :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\nturn_off() :- _setup().\nturn_on() :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\n_delayed1000turn_off(_Await)@next :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n_delayed1000turn_on(_Await)@next :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"_now\"]\n3: fromList [\"_setup\"]\n4: fromList [\"_delayed1000turn_off\",\"_delayed1000turn_on\",\"turn_off\",\"turn_on\"]\n*/\n\n#define _rulecount 0\n#define _bufsize 256\n\nbyte _fsm1_state = 4;\nunsigned long _fsm1_slot_1;\nunsigned long _fsm1_slot_2;\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n/* SETUP */\n\n\n/* LOOP */\n\nif (_fsm1_state == 5)\n  {\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_2 = _T;\n    }\n    {\n    _fsm1_trans5:\n      if (_fsm1_slot_2 < _fsm1_slot_1 + 1000)\n        {\n          _fsm1_state = 1;\n        }\n      else if (_fsm1_slot_1 + 1000 <= _fsm1_slot_2)\n        {\n          _fsm1_state = 6;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 1)\n  {\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_2 = _T;\n    }\n    {\n      goto _fsm1_trans5;\n    }\n  }\nelse if (_fsm1_state == 7)\n  {\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_1 = _T;\n    }\n    {\n      pinMode (13, OUTPUT);\n    }\n    {\n    _fsm1_trans7:\n      if (_fsm1_slot_1 < 1000)\n        {\n          _fsm1_state = 2;\n        }\n      else if (1000 <= _fsm1_slot_1)\n        {\n          _fsm1_state = 5;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 2)\n  {\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_1 = _T;\n    }\n    {\n      goto _fsm1_trans7;\n    }\n  }\nelse if (_fsm1_state == 6)\n  {\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_1 = _T;\n    }\n    {\n    _fsm1_trans6:\n      if (_fsm1_slot_1 < _fsm1_slot_2 + 1000)\n        {\n          _fsm1_state = 3;\n        }\n      else if (_fsm1_slot_2 + 1000 <= _fsm1_slot_1)\n        {\n          _fsm1_state = 5;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 3)\n  {\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_1 = _T;\n    }\n    {\n      goto _fsm1_trans6;\n    }\n  }\nelse if (_fsm1_state == 4)\n  {\n    {\n    _fsm1_trans4:\n      if (true)\n        {\n          _fsm1_state = 7;\n        }\n      else;\n    }\n  }\nelse;\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl _delayed1000turn_off/1(unsigned long)</span>\n<span class=\"cm\">.decl _delayed1000turn_on/1(unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">_now(0)@0.</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">_delayed1000turn_off(_Await) :- _now(_Await), turn_on().</span>\n<span class=\"cm\">_delayed1000turn_on(_Await) :- _now(_Await), turn_off().</span>\n<span class=\"cm\">_now(T) :- _io_millis(T).</span>\n<span class=\"cm\">turn_off() :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">turn_off() :- _setup().</span>\n<span class=\"cm\">turn_on() :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">_delayed1000turn_off(_Await)@next :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">_delayed1000turn_on(_Await)@next :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;_setup&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;_delayed1000turn_off&quot;,&quot;_delayed1000turn_on&quot;,&quot;turn_off&quot;,&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">;</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cm\">/* SETUP */</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans5</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans5</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans7</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans7</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans6</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans4</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_macro.dl",
      "template": "no runtime",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n[setup]#pinOut(13)@next.\n[delay:1000]turn_on :- turn_off.\n#digitalWrite(13, #HIGH)@next :- turn_on.\n\n[setup]turn_off.\n[delay:1000]turn_off :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n\n.decl turn_off\n.decl turn_on\n",
      "tsource": "/*\nProgram 1:\n.decl _delayed1000turn_off/1(unsigned long)\n.decl _delayed1000turn_on/1(unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\n_now(0)@0.\n_setup()@0.\n_delayed1000turn_off(_Await) :- _now(_Await), turn_on().\n_delayed1000turn_on(_Await) :- _now(_Await), turn_off().\n_now(T) :- _io_millis(T).\nturn_off() :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\nturn_off() :- _setup().\nturn_on() :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\n_delayed1000turn_off(_Await)@next :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n_delayed1000turn_on(_Await)@next :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"_now\"]\n3: fromList [\"_setup\"]\n4: fromList [\"_delayed1000turn_off\",\"_delayed1000turn_on\",\"turn_off\",\"turn_on\"]\n*/\n\n#define _rulecount 4\n#define _bufsize 256\n\n\n\n#define _size__delayed1000turn_off 1 + sizeof(unsigned long)\n#define _size__delayed1000turn_on 1 + sizeof(unsigned long)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_millis 1 + sizeof(unsigned long)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size__now 1 + sizeof(unsigned long)\n#define _size__setup 1\n#define _size_turn_off 1\n#define _size_turn_on 1\nbyte _sizes[10] =\n  { 0, _size__delayed1000turn_off, _size__delayed1000turn_on,\n_size__io_digitalWrite, _size__io_millis, _size__io_pinOut, _size__now, _size__setup,\n_size_turn_off, _size_turn_on\n};\n\n#define _type__delayed1000turn_off 1\n#define _type__delayed1000turn_on 2\n#define _type__io_digitalWrite 3\n#define _type__io_millis 4\n#define _type__io_pinOut 5\n#define _type__now 6\n#define _type__setup 7\n#define _type_turn_off 8\n#define _type_turn_on 9\n\n\n\ninline unsigned long\n_delayed1000turn_off_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\n_delayed1000turn_on_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline unsigned long\n_io_millis_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline unsigned long\n_now_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_unsigned_long (byte *buf, byte type, unsigned long a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < unsigned long >(free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__delayed1000turn_off(buf, a1) _write_fact_unsigned_long(buf, _type__delayed1000turn_off, a1)\n#define write__delayed1000turn_on(buf, a1) _write_fact_unsigned_long(buf, _type__delayed1000turn_on, a1)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write__now(buf, a1) _write_fact_unsigned_long(buf, _type__now, a1)\n#define write__setup(buf) _write_fact_(buf, _type__setup)\n#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)\n#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)\n\n#define _delayed1000turn_off_f(buf) _next__fact(buf,_type__delayed1000turn_off)\n\nbyte *\n_delayed1000turn_off_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000turn_off)) != 0)\n    {\n      if (_delayed1000turn_off_1 (buf) != a1)\n        {\n          buf = buf + _size__delayed1000turn_off;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _delayed1000turn_on_f(buf) _next__fact(buf,_type__delayed1000turn_on)\n\nbyte *\n_delayed1000turn_on_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000turn_on)) != 0)\n    {\n      if (_delayed1000turn_on_1 (buf) != a1)\n        {\n          buf = buf + _size__delayed1000turn_on;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)\n\nbyte *\n_io_millis_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__io_millis)) != 0)\n    {\n      if (_io_millis_1 (buf) != a1)\n        {\n          buf = buf + _size__io_millis;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _now_f(buf) _next__fact(buf,_type__now)\n\nbyte *\n_now_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__now)) != 0)\n    {\n      if (_now_1 (buf) != a1)\n        {\n          buf = buf + _size__now;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _setup_(buf) _next__fact(buf,_type__setup)\n\n#define turn_off_(buf) _next__fact(buf,_type_turn_off)\n\n#define turn_on_(buf) _next__fact(buf,_type_turn_on)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: _delayed1000turn_off(_Await)=>_curr_state :- E{turn_on()} U{_now(_Await)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Await = _now_1 (_tuple2);\n          if (_delayed1000turn_off_f (_curr_state, _Await) == 0)\n            {\n              write__delayed1000turn_off (_curr_state, _Await);\n              _added_facts = true;\n            }\n          _tuple2 += _size__now;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_1: _delayed1000turn_off(_Await)=>_next_state :- U{_delayed1000turn_off(_Await)} E{_now(_Curr) ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000)}.\nvoid\n_inductive_rule_1 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000turn_off_f (_tuple1)) != 0)\n    {\n      unsigned long _Await = _delayed1000turn_off_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Curr < _Await + 1000)\n            {\n              if (_delayed1000turn_off_f (_next_state, _Await) == 0)\n                {\n                  write__delayed1000turn_off (_next_state, _Await);\n                }\n              goto jmp1;\n            }\n          _tuple2 += _size__now;\n        }\n    jmp1:;\n      _tuple1 += _size__delayed1000turn_off;\n    }\n};\n\n// _deductive_rule_2: _delayed1000turn_on(_Await)=>_curr_state :- E{turn_off()} U{_now(_Await)}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Await = _now_1 (_tuple2);\n          if (_delayed1000turn_on_f (_curr_state, _Await) == 0)\n            {\n              write__delayed1000turn_on (_curr_state, _Await);\n              _added_facts = true;\n            }\n          _tuple2 += _size__now;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_2: _delayed1000turn_on(_Await)=>_next_state :- U{_delayed1000turn_on(_Await)} E{_now(_Curr) ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000)}.\nvoid\n_inductive_rule_2 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000turn_on_f (_tuple1)) != 0)\n    {\n      unsigned long _Await = _delayed1000turn_on_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Curr < _Await + 1000)\n            {\n              if (_delayed1000turn_on_f (_next_state, _Await) == 0)\n                {\n                  write__delayed1000turn_on (_next_state, _Await);\n                }\n              goto jmp1;\n            }\n          _tuple2 += _size__now;\n        }\n    jmp1:;\n      _tuple1 += _size__delayed1000turn_on;\n    }\n};\n\n// _deductive_rule_3: _now(T)=>_curr_state :- U{_io_millis(T)}.\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_millis_f (_tuple1)) != 0)\n    {\n      unsigned long T = _io_millis_1 (_tuple1);\n      if (_now_f (_curr_state, T) == 0)\n        {\n          write__now (_curr_state, T);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_millis;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_4: turn_off()=>_curr_state :- E{_delayed1000turn_off(_Await) _now(_Curr) ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\")}.\nbool\n_deductive_rule_4 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000turn_off_f (_tuple1)) != 0)\n    {\n      unsigned long _Await = _delayed1000turn_off_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Await + 1000 <= _Curr)\n            {\n              if (turn_off_ (_curr_state) == 0)\n                {\n                  write_turn_off (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size__now;\n        }\n      _tuple1 += _size__delayed1000turn_off;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_5: turn_off()=>_curr_state :- E{_setup()}.\nbool\n_deductive_rule_5 ()\n{\n  bool _added_facts = false;\n  if (_setup_ (_curr_state) != 0)\n    {\n      if (turn_off_ (_curr_state) == 0)\n        {\n          write_turn_off (_curr_state);\n          _added_facts = true;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_6: turn_on()=>_curr_state :- E{_delayed1000turn_on(_Await) _now(_Curr) ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\")}.\nbool\n_deductive_rule_6 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000turn_on_f (_tuple1)) != 0)\n    {\n      unsigned long _Await = _delayed1000turn_on_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Await + 1000 <= _Curr)\n            {\n              if (turn_on_ (_curr_state) == 0)\n                {\n                  write_turn_on (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size__now;\n        }\n      _tuple1 += _size__delayed1000turn_on;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_3: #_io_digitalWrite(13, HIGH)=>_next_state :- E{turn_on()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: #_io_digitalWrite(13, LOW)=>_next_state :- E{turn_off()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: #_io_millis(_)=>_next_state :- .\nvoid\n_inductive_rule_5 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_millis_f (_next_state)) == 0)\n    {\n// make io call\n      unsigned long _T = millis ();\n      write__io_millis (_next_state, _T);\n    }\n};\n\n// _inductive_rule_6: #_io_pinOut(13)=>_next_state :- E{_setup()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (_setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n/* SETUP */\nwrite__now (_curr_state, 0);\n_added_facts = true;\nwrite__setup (_curr_state);\n_added_facts = true;\n\n\n/* LOOP */\n\n\n\n// deductive phase\n\n// stratum 2\n_deductive_rule_3 ();\n\ndo\n  {                             // stratum 4\n    _added_facts = false;\n    _added_facts |= _deductive_rule_1 ();\n    _added_facts |= _deductive_rule_2 ();\n    _added_facts |= _deductive_rule_4 ();\n    _added_facts |= _deductive_rule_5 ();\n    _added_facts |= _deductive_rule_6 ();\n  }\nwhile (_added_facts);\n// inductive_phase\n_inductive_rule_1 ();\n_inductive_rule_2 ();\n_inductive_rule_3 ();\n_inductive_rule_4 ();\n_inductive_rule_5 ();\n_inductive_rule_6 ();\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl _delayed1000turn_off/1(unsigned long)</span>\n<span class=\"cm\">.decl _delayed1000turn_on/1(unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">_now(0)@0.</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">_delayed1000turn_off(_Await) :- _now(_Await), turn_on().</span>\n<span class=\"cm\">_delayed1000turn_on(_Await) :- _now(_Await), turn_off().</span>\n<span class=\"cm\">_now(T) :- _io_millis(T).</span>\n<span class=\"cm\">turn_off() :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">turn_off() :- _setup().</span>\n<span class=\"cm\">turn_on() :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">_delayed1000turn_off(_Await)@next :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">_delayed1000turn_on(_Await)@next :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;_setup&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;_delayed1000turn_off&quot;,&quot;_delayed1000turn_on&quot;,&quot;turn_off&quot;,&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n\n\n<span class=\"cp\">#define _size__delayed1000turn_off 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__delayed1000turn_on 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_millis 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__now 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__setup 1</span>\n<span class=\"cp\">#define _size_turn_off 1</span>\n<span class=\"cp\">#define _size_turn_on 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">10</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_on</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__setup</span><span class=\"p\">,</span>\n<span class=\"n\">_size_turn_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_on</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__delayed1000turn_off 1</span>\n<span class=\"cp\">#define _type__delayed1000turn_on 2</span>\n<span class=\"cp\">#define _type__io_digitalWrite 3</span>\n<span class=\"cp\">#define _type__io_millis 4</span>\n<span class=\"cp\">#define _type__io_pinOut 5</span>\n<span class=\"cp\">#define _type__now 6</span>\n<span class=\"cp\">#define _type__setup 7</span>\n<span class=\"cp\">#define _type_turn_off 8</span>\n<span class=\"cp\">#define _type_turn_on 9</span>\n\n\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">_delayed1000turn_off_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">_delayed1000turn_on_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__delayed1000turn_off(buf, a1) _write_fact_unsigned_long(buf, _type__delayed1000turn_off, a1)</span>\n<span class=\"cp\">#define write__delayed1000turn_on(buf, a1) _write_fact_unsigned_long(buf, _type__delayed1000turn_on, a1)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write__now(buf, a1) _write_fact_unsigned_long(buf, _type__now, a1)</span>\n<span class=\"cp\">#define write__setup(buf) _write_fact_(buf, _type__setup)</span>\n<span class=\"cp\">#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)</span>\n<span class=\"cp\">#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)</span>\n\n<span class=\"cp\">#define _delayed1000turn_off_f(buf) _next__fact(buf,_type__delayed1000turn_off)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_delayed1000turn_off_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000turn_off</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_off_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_off</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _delayed1000turn_on_f(buf) _next__fact(buf,_type__delayed1000turn_on)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_delayed1000turn_on_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000turn_on</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_on_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_on</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_millis_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_millis</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _now_f(buf) _next__fact(buf,_type__now)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_now_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__now</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _setup_(buf) _next__fact(buf,_type__setup)</span>\n\n<span class=\"cp\">#define turn_off_(buf) _next__fact(buf,_type_turn_off)</span>\n\n<span class=\"cp\">#define turn_on_(buf) _next__fact(buf,_type_turn_on)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: _delayed1000turn_off(_Await)=&gt;_curr_state :- E{turn_on()} U{_now(_Await)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_off_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write__delayed1000turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: _delayed1000turn_off(_Await)=&gt;_next_state :- U{_delayed1000turn_off(_Await)} E{_now(_Curr) ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_off_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_off_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_off_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write__delayed1000turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_off</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: _delayed1000turn_on(_Await)=&gt;_curr_state :- E{turn_off()} U{_now(_Await)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_on_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write__delayed1000turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: _delayed1000turn_on(_Await)=&gt;_next_state :- U{_delayed1000turn_on(_Await)} E{_now(_Curr) ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_on_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_on_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_on_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write__delayed1000turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_on</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: _now(T)=&gt;_curr_state :- U{_io_millis(T)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write__now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_4: turn_off()=&gt;_curr_state :- E{_delayed1000turn_off(_Await) _now(_Curr) ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_off_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_off_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_off</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_5: turn_off()=&gt;_curr_state :- E{_setup()}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_6: turn_on()=&gt;_curr_state :- E{_delayed1000turn_on(_Await) _now(_Curr) ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_on_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_on_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_on</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{turn_on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{turn_off()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_millis(_)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_millis</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_pinOut(13)=&gt;_next_state :- E{_setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cm\">/* SETUP */</span>\n<span class=\"n\">write__now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"n\">write__setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n\n\n<span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"k\">do</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\">                             </span><span class=\"c1\">// stratum 4</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_added_facts</span><span class=\"p\">);</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_macro.dl",
      "template": "arduino",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n[setup]#pinOut(13)@next.\n[delay:1000]turn_on :- turn_off.\n#digitalWrite(13, #HIGH)@next :- turn_on.\n\n[setup]turn_off.\n[delay:1000]turn_off :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n\n.decl turn_off\n.decl turn_on\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl _delayed1000turn_off/1(unsigned long)\n.decl _delayed1000turn_on/1(unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\n_now(0)@0.\n_setup()@0.\n_delayed1000turn_off(_Await) :- _now(_Await), turn_on().\n_delayed1000turn_on(_Await) :- _now(_Await), turn_off().\n_now(T) :- _io_millis(T).\nturn_off() :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\nturn_off() :- _setup().\nturn_on() :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\n_delayed1000turn_off(_Await)@next :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n_delayed1000turn_on(_Await)@next :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"_now\"]\n3: fromList [\"_setup\"]\n4: fromList [\"_delayed1000turn_off\",\"_delayed1000turn_on\",\"turn_off\",\"turn_on\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm1_state = 4;\nunsigned long _fsm1_slot_1;\nunsigned long _fsm1_slot_2;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm1_state == 5)\n    {\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_2 = _T;\n      }\n      {\n      _fsm1_trans5:\n        if (_fsm1_slot_2 < _fsm1_slot_1 + 1000)\n          {\n            _fsm1_state = 1;\n          }\n        else if (_fsm1_slot_1 + 1000 <= _fsm1_slot_2)\n          {\n            _fsm1_state = 6;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 1)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_2 = _T;\n      }\n      {\n        goto _fsm1_trans5;\n      }\n    }\n  else if (_fsm1_state == 7)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n      _fsm1_trans7:\n        if (_fsm1_slot_1 < 1000)\n          {\n            _fsm1_state = 2;\n          }\n        else if (1000 <= _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n        goto _fsm1_trans7;\n      }\n    }\n  else if (_fsm1_state == 6)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n      _fsm1_trans6:\n        if (_fsm1_slot_1 < _fsm1_slot_2 + 1000)\n          {\n            _fsm1_state = 3;\n          }\n        else if (_fsm1_slot_2 + 1000 <= _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n        goto _fsm1_trans6;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n      _fsm1_trans4:\n        if (true)\n          {\n            _fsm1_state = 7;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl _delayed1000turn_off/1(unsigned long)</span>\n<span class=\"cm\">.decl _delayed1000turn_on/1(unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">_now(0)@0.</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">_delayed1000turn_off(_Await) :- _now(_Await), turn_on().</span>\n<span class=\"cm\">_delayed1000turn_on(_Await) :- _now(_Await), turn_off().</span>\n<span class=\"cm\">_now(T) :- _io_millis(T).</span>\n<span class=\"cm\">turn_off() :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">turn_off() :- _setup().</span>\n<span class=\"cm\">turn_on() :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">_delayed1000turn_off(_Await)@next :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">_delayed1000turn_on(_Await)@next :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;_setup&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;_delayed1000turn_off&quot;,&quot;_delayed1000turn_on&quot;,&quot;turn_off&quot;,&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans5</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans5</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans7</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans7</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans6</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans4</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_macro.dl",
      "template": "arduino",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n[setup]#pinOut(13)@next.\n[delay:1000]turn_on :- turn_off.\n#digitalWrite(13, #HIGH)@next :- turn_on.\n\n[setup]turn_off.\n[delay:1000]turn_off :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n\n.decl turn_off\n.decl turn_on\n",
      "tsource": "/*\nProgram 1:\n.decl _delayed1000turn_off/1(unsigned long)\n.decl _delayed1000turn_on/1(unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\n_now(0)@0.\n_setup()@0.\n_delayed1000turn_off(_Await) :- _now(_Await), turn_on().\n_delayed1000turn_on(_Await) :- _now(_Await), turn_off().\n_now(T) :- _io_millis(T).\nturn_off() :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\nturn_off() :- _setup().\nturn_on() :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\n_delayed1000turn_off(_Await)@next :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n_delayed1000turn_on(_Await)@next :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"_now\"]\n3: fromList [\"_setup\"]\n4: fromList [\"_delayed1000turn_off\",\"_delayed1000turn_on\",\"turn_off\",\"turn_on\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 4\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__delayed1000turn_off 1 + sizeof(unsigned long)\n#define _size__delayed1000turn_on 1 + sizeof(unsigned long)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_millis 1 + sizeof(unsigned long)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size__now 1 + sizeof(unsigned long)\n#define _size__setup 1\n#define _size_turn_off 1\n#define _size_turn_on 1\nbyte _sizes[10] =\n  { 0, _size__delayed1000turn_off, _size__delayed1000turn_on,\n_size__io_digitalWrite, _size__io_millis, _size__io_pinOut, _size__now, _size__setup,\n_size_turn_off, _size_turn_on\n};\n\n#define _type__delayed1000turn_off 1\n#define _type__delayed1000turn_on 2\n#define _type__io_digitalWrite 3\n#define _type__io_millis 4\n#define _type__io_pinOut 5\n#define _type__now 6\n#define _type__setup 7\n#define _type_turn_off 8\n#define _type_turn_on 9\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline unsigned long\n_delayed1000turn_off_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\n_delayed1000turn_on_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline unsigned long\n_io_millis_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline unsigned long\n_now_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_unsigned_long (byte *buf, byte type, unsigned long a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < unsigned long >(free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__delayed1000turn_off(buf, a1) _write_fact_unsigned_long(buf, _type__delayed1000turn_off, a1)\n#define write__delayed1000turn_on(buf, a1) _write_fact_unsigned_long(buf, _type__delayed1000turn_on, a1)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write__now(buf, a1) _write_fact_unsigned_long(buf, _type__now, a1)\n#define write__setup(buf) _write_fact_(buf, _type__setup)\n#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)\n#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)\n\n#define _delayed1000turn_off_f(buf) _next__fact(buf,_type__delayed1000turn_off)\n\nbyte *\n_delayed1000turn_off_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000turn_off)) != 0)\n    {\n      if (_delayed1000turn_off_1 (buf) != a1)\n        {\n          buf = buf + _size__delayed1000turn_off;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _delayed1000turn_on_f(buf) _next__fact(buf,_type__delayed1000turn_on)\n\nbyte *\n_delayed1000turn_on_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000turn_on)) != 0)\n    {\n      if (_delayed1000turn_on_1 (buf) != a1)\n        {\n          buf = buf + _size__delayed1000turn_on;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)\n\nbyte *\n_io_millis_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__io_millis)) != 0)\n    {\n      if (_io_millis_1 (buf) != a1)\n        {\n          buf = buf + _size__io_millis;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _now_f(buf) _next__fact(buf,_type__now)\n\nbyte *\n_now_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__now)) != 0)\n    {\n      if (_now_1 (buf) != a1)\n        {\n          buf = buf + _size__now;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _setup_(buf) _next__fact(buf,_type__setup)\n\n#define turn_off_(buf) _next__fact(buf,_type_turn_off)\n\n#define turn_on_(buf) _next__fact(buf,_type_turn_on)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: _delayed1000turn_off(_Await)=>_curr_state :- E{turn_on()} U{_now(_Await)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Await = _now_1 (_tuple2);\n          if (_delayed1000turn_off_f (_curr_state, _Await) == 0)\n            {\n              write__delayed1000turn_off (_curr_state, _Await);\n              _added_facts = true;\n            }\n          _tuple2 += _size__now;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_1: _delayed1000turn_off(_Await)=>_next_state :- U{_delayed1000turn_off(_Await)} E{_now(_Curr) ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000)}.\nvoid\n_inductive_rule_1 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000turn_off_f (_tuple1)) != 0)\n    {\n      unsigned long _Await = _delayed1000turn_off_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Curr < _Await + 1000)\n            {\n              if (_delayed1000turn_off_f (_next_state, _Await) == 0)\n                {\n                  write__delayed1000turn_off (_next_state, _Await);\n                }\n              goto jmp1;\n            }\n          _tuple2 += _size__now;\n        }\n    jmp1:;\n      _tuple1 += _size__delayed1000turn_off;\n    }\n};\n\n// _deductive_rule_2: _delayed1000turn_on(_Await)=>_curr_state :- E{turn_off()} U{_now(_Await)}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Await = _now_1 (_tuple2);\n          if (_delayed1000turn_on_f (_curr_state, _Await) == 0)\n            {\n              write__delayed1000turn_on (_curr_state, _Await);\n              _added_facts = true;\n            }\n          _tuple2 += _size__now;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_2: _delayed1000turn_on(_Await)=>_next_state :- U{_delayed1000turn_on(_Await)} E{_now(_Curr) ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000)}.\nvoid\n_inductive_rule_2 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000turn_on_f (_tuple1)) != 0)\n    {\n      unsigned long _Await = _delayed1000turn_on_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Curr < _Await + 1000)\n            {\n              if (_delayed1000turn_on_f (_next_state, _Await) == 0)\n                {\n                  write__delayed1000turn_on (_next_state, _Await);\n                }\n              goto jmp1;\n            }\n          _tuple2 += _size__now;\n        }\n    jmp1:;\n      _tuple1 += _size__delayed1000turn_on;\n    }\n};\n\n// _deductive_rule_3: _now(T)=>_curr_state :- U{_io_millis(T)}.\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_millis_f (_tuple1)) != 0)\n    {\n      unsigned long T = _io_millis_1 (_tuple1);\n      if (_now_f (_curr_state, T) == 0)\n        {\n          write__now (_curr_state, T);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_millis;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_4: turn_off()=>_curr_state :- E{_delayed1000turn_off(_Await) _now(_Curr) ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\")}.\nbool\n_deductive_rule_4 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000turn_off_f (_tuple1)) != 0)\n    {\n      unsigned long _Await = _delayed1000turn_off_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Await + 1000 <= _Curr)\n            {\n              if (turn_off_ (_curr_state) == 0)\n                {\n                  write_turn_off (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size__now;\n        }\n      _tuple1 += _size__delayed1000turn_off;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_5: turn_off()=>_curr_state :- E{_setup()}.\nbool\n_deductive_rule_5 ()\n{\n  bool _added_facts = false;\n  if (_setup_ (_curr_state) != 0)\n    {\n      if (turn_off_ (_curr_state) == 0)\n        {\n          write_turn_off (_curr_state);\n          _added_facts = true;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_6: turn_on()=>_curr_state :- E{_delayed1000turn_on(_Await) _now(_Curr) ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\")}.\nbool\n_deductive_rule_6 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000turn_on_f (_tuple1)) != 0)\n    {\n      unsigned long _Await = _delayed1000turn_on_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Await + 1000 <= _Curr)\n            {\n              if (turn_on_ (_curr_state) == 0)\n                {\n                  write_turn_on (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size__now;\n        }\n      _tuple1 += _size__delayed1000turn_on;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_3: #_io_digitalWrite(13, HIGH)=>_next_state :- E{turn_on()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: #_io_digitalWrite(13, LOW)=>_next_state :- E{turn_off()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: #_io_millis(_)=>_next_state :- .\nvoid\n_inductive_rule_5 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_millis_f (_next_state)) == 0)\n    {\n// make io call\n      unsigned long _T = millis ();\n      write__io_millis (_next_state, _T);\n    }\n};\n\n// _inductive_rule_6: #_io_pinOut(13)=>_next_state :- E{_setup()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (_setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write__now (_curr_state, 0);\n  _added_facts = true;\n  write__setup (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n// stratum 2\n  _deductive_rule_3 ();\n\n  do\n    {                           // stratum 4\n      _added_facts = false;\n      _added_facts |= _deductive_rule_1 ();\n      _added_facts |= _deductive_rule_2 ();\n      _added_facts |= _deductive_rule_4 ();\n      _added_facts |= _deductive_rule_5 ();\n      _added_facts |= _deductive_rule_6 ();\n    }\n  while (_added_facts);\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n  _inductive_rule_6 ();\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl _delayed1000turn_off/1(unsigned long)</span>\n<span class=\"cm\">.decl _delayed1000turn_on/1(unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">_now(0)@0.</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">_delayed1000turn_off(_Await) :- _now(_Await), turn_on().</span>\n<span class=\"cm\">_delayed1000turn_on(_Await) :- _now(_Await), turn_off().</span>\n<span class=\"cm\">_now(T) :- _io_millis(T).</span>\n<span class=\"cm\">turn_off() :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">turn_off() :- _setup().</span>\n<span class=\"cm\">turn_on() :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">_delayed1000turn_off(_Await)@next :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">_delayed1000turn_on(_Await)@next :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;_setup&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;_delayed1000turn_off&quot;,&quot;_delayed1000turn_on&quot;,&quot;turn_off&quot;,&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__delayed1000turn_off 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__delayed1000turn_on 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_millis 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__now 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__setup 1</span>\n<span class=\"cp\">#define _size_turn_off 1</span>\n<span class=\"cp\">#define _size_turn_on 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">10</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_on</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__setup</span><span class=\"p\">,</span>\n<span class=\"n\">_size_turn_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_on</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__delayed1000turn_off 1</span>\n<span class=\"cp\">#define _type__delayed1000turn_on 2</span>\n<span class=\"cp\">#define _type__io_digitalWrite 3</span>\n<span class=\"cp\">#define _type__io_millis 4</span>\n<span class=\"cp\">#define _type__io_pinOut 5</span>\n<span class=\"cp\">#define _type__now 6</span>\n<span class=\"cp\">#define _type__setup 7</span>\n<span class=\"cp\">#define _type_turn_off 8</span>\n<span class=\"cp\">#define _type_turn_on 9</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_delayed1000turn_off_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_delayed1000turn_on_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__delayed1000turn_off(buf, a1) _write_fact_unsigned_long(buf, _type__delayed1000turn_off, a1)</span>\n<span class=\"cp\">#define write__delayed1000turn_on(buf, a1) _write_fact_unsigned_long(buf, _type__delayed1000turn_on, a1)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write__now(buf, a1) _write_fact_unsigned_long(buf, _type__now, a1)</span>\n<span class=\"cp\">#define write__setup(buf) _write_fact_(buf, _type__setup)</span>\n<span class=\"cp\">#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)</span>\n<span class=\"cp\">#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)</span>\n\n<span class=\"cp\">#define _delayed1000turn_off_f(buf) _next__fact(buf,_type__delayed1000turn_off)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_delayed1000turn_off_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000turn_off</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_off_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_off</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _delayed1000turn_on_f(buf) _next__fact(buf,_type__delayed1000turn_on)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_delayed1000turn_on_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000turn_on</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_on_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_on</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_millis_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_millis</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _now_f(buf) _next__fact(buf,_type__now)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_now_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__now</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _setup_(buf) _next__fact(buf,_type__setup)</span>\n\n<span class=\"cp\">#define turn_off_(buf) _next__fact(buf,_type_turn_off)</span>\n\n<span class=\"cp\">#define turn_on_(buf) _next__fact(buf,_type_turn_on)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: _delayed1000turn_off(_Await)=&gt;_curr_state :- E{turn_on()} U{_now(_Await)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_off_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write__delayed1000turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: _delayed1000turn_off(_Await)=&gt;_next_state :- U{_delayed1000turn_off(_Await)} E{_now(_Curr) ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_off_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_off_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_off_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write__delayed1000turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_off</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: _delayed1000turn_on(_Await)=&gt;_curr_state :- E{turn_off()} U{_now(_Await)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_on_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write__delayed1000turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: _delayed1000turn_on(_Await)=&gt;_next_state :- U{_delayed1000turn_on(_Await)} E{_now(_Curr) ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_on_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_on_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_on_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write__delayed1000turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_on</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: _now(T)=&gt;_curr_state :- U{_io_millis(T)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write__now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_4: turn_off()=&gt;_curr_state :- E{_delayed1000turn_off(_Await) _now(_Curr) ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_off_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_off_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_off</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_5: turn_off()=&gt;_curr_state :- E{_setup()}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_6: turn_on()=&gt;_curr_state :- E{_delayed1000turn_on(_Await) _now(_Curr) ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_on_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_on_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_on</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{turn_on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{turn_off()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_millis(_)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_millis</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_pinOut(13)=&gt;_next_state :- E{_setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write__now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">write__setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"k\">do</span>\n<span class=\"w\">    </span><span class=\"p\">{</span><span class=\"w\">                           </span><span class=\"c1\">// stratum 4</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_added_facts</span><span class=\"p\">);</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_macro.dl",
      "template": "lego ev3",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n[setup]#pinOut(13)@next.\n[delay:1000]turn_on :- turn_off.\n#digitalWrite(13, #HIGH)@next :- turn_on.\n\n[setup]turn_off.\n[delay:1000]turn_off :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n\n.decl turn_off\n.decl turn_on\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl _delayed1000turn_off/1(unsigned long)\n.decl _delayed1000turn_on/1(unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\n_now(0)@0.\n_setup()@0.\n_delayed1000turn_off(_Await) :- _now(_Await), turn_on().\n_delayed1000turn_on(_Await) :- _now(_Await), turn_off().\n_now(T) :- _io_millis(T).\nturn_off() :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\nturn_off() :- _setup().\nturn_on() :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\n_delayed1000turn_off(_Await)@next :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n_delayed1000turn_on(_Await)@next :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"_now\"]\n3: fromList [\"_setup\"]\n4: fromList [\"_delayed1000turn_off\",\"_delayed1000turn_on\",\"turn_off\",\"turn_on\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm1_state = 4;\nunsigned long _fsm1_slot_1;\nunsigned long _fsm1_slot_2;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm1_state == 5)\n    {\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_2 = _T;\n      }\n      {\n      _fsm1_trans5:\n        if (_fsm1_slot_2 < _fsm1_slot_1 + 1000)\n          {\n            _fsm1_state = 1;\n          }\n        else if (_fsm1_slot_1 + 1000 <= _fsm1_slot_2)\n          {\n            _fsm1_state = 6;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 1)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_2 = _T;\n      }\n      {\n        goto _fsm1_trans5;\n      }\n    }\n  else if (_fsm1_state == 7)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n      _fsm1_trans7:\n        if (_fsm1_slot_1 < 1000)\n          {\n            _fsm1_state = 2;\n          }\n        else if (1000 <= _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n        goto _fsm1_trans7;\n      }\n    }\n  else if (_fsm1_state == 6)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n      _fsm1_trans6:\n        if (_fsm1_slot_1 < _fsm1_slot_2 + 1000)\n          {\n            _fsm1_state = 3;\n          }\n        else if (_fsm1_slot_2 + 1000 <= _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n        goto _fsm1_trans6;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n      _fsm1_trans4:\n        if (true)\n          {\n            _fsm1_state = 7;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl _delayed1000turn_off/1(unsigned long)</span>\n<span class=\"cm\">.decl _delayed1000turn_on/1(unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">_now(0)@0.</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">_delayed1000turn_off(_Await) :- _now(_Await), turn_on().</span>\n<span class=\"cm\">_delayed1000turn_on(_Await) :- _now(_Await), turn_off().</span>\n<span class=\"cm\">_now(T) :- _io_millis(T).</span>\n<span class=\"cm\">turn_off() :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">turn_off() :- _setup().</span>\n<span class=\"cm\">turn_on() :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">_delayed1000turn_off(_Await)@next :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">_delayed1000turn_on(_Await)@next :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;_setup&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;_delayed1000turn_off&quot;,&quot;_delayed1000turn_on&quot;,&quot;turn_off&quot;,&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans5</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans5</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans7</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans7</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans6</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans4</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"n\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_macro.dl",
      "template": "lego ev3",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n[setup]#pinOut(13)@next.\n[delay:1000]turn_on :- turn_off.\n#digitalWrite(13, #HIGH)@next :- turn_on.\n\n[setup]turn_off.\n[delay:1000]turn_off :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n\n.decl turn_off\n.decl turn_on\n",
      "tsource": "/*\nProgram 1:\n.decl _delayed1000turn_off/1(unsigned long)\n.decl _delayed1000turn_on/1(unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\n_now(0)@0.\n_setup()@0.\n_delayed1000turn_off(_Await) :- _now(_Await), turn_on().\n_delayed1000turn_on(_Await) :- _now(_Await), turn_off().\n_now(T) :- _io_millis(T).\nturn_off() :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\nturn_off() :- _setup().\nturn_on() :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\n_delayed1000turn_off(_Await)@next :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n_delayed1000turn_on(_Await)@next :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"_now\"]\n3: fromList [\"_setup\"]\n4: fromList [\"_delayed1000turn_off\",\"_delayed1000turn_on\",\"turn_off\",\"turn_on\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 4\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__delayed1000turn_off 1 + sizeof(unsigned long)\n#define _size__delayed1000turn_on 1 + sizeof(unsigned long)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_millis 1 + sizeof(unsigned long)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size__now 1 + sizeof(unsigned long)\n#define _size__setup 1\n#define _size_turn_off 1\n#define _size_turn_on 1\nbyte _sizes[10] =\n  { 0, _size__delayed1000turn_off, _size__delayed1000turn_on,\n_size__io_digitalWrite, _size__io_millis, _size__io_pinOut, _size__now, _size__setup,\n_size_turn_off, _size_turn_on\n};\n\n#define _type__delayed1000turn_off 1\n#define _type__delayed1000turn_on 2\n#define _type__io_digitalWrite 3\n#define _type__io_millis 4\n#define _type__io_pinOut 5\n#define _type__now 6\n#define _type__setup 7\n#define _type_turn_off 8\n#define _type_turn_on 9\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline unsigned long\n_delayed1000turn_off_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\n_delayed1000turn_on_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline unsigned long\n_io_millis_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline unsigned long\n_now_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_unsigned_long (byte *buf, byte type, unsigned long a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < unsigned long >(free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__delayed1000turn_off(buf, a1) _write_fact_unsigned_long(buf, _type__delayed1000turn_off, a1)\n#define write__delayed1000turn_on(buf, a1) _write_fact_unsigned_long(buf, _type__delayed1000turn_on, a1)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write__now(buf, a1) _write_fact_unsigned_long(buf, _type__now, a1)\n#define write__setup(buf) _write_fact_(buf, _type__setup)\n#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)\n#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)\n\n#define _delayed1000turn_off_f(buf) _next__fact(buf,_type__delayed1000turn_off)\n\nbyte *\n_delayed1000turn_off_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000turn_off)) != 0)\n    {\n      if (_delayed1000turn_off_1 (buf) != a1)\n        {\n          buf = buf + _size__delayed1000turn_off;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _delayed1000turn_on_f(buf) _next__fact(buf,_type__delayed1000turn_on)\n\nbyte *\n_delayed1000turn_on_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000turn_on)) != 0)\n    {\n      if (_delayed1000turn_on_1 (buf) != a1)\n        {\n          buf = buf + _size__delayed1000turn_on;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)\n\nbyte *\n_io_millis_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__io_millis)) != 0)\n    {\n      if (_io_millis_1 (buf) != a1)\n        {\n          buf = buf + _size__io_millis;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _now_f(buf) _next__fact(buf,_type__now)\n\nbyte *\n_now_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__now)) != 0)\n    {\n      if (_now_1 (buf) != a1)\n        {\n          buf = buf + _size__now;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _setup_(buf) _next__fact(buf,_type__setup)\n\n#define turn_off_(buf) _next__fact(buf,_type_turn_off)\n\n#define turn_on_(buf) _next__fact(buf,_type_turn_on)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: _delayed1000turn_off(_Await)=>_curr_state :- E{turn_on()} U{_now(_Await)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Await = _now_1 (_tuple2);\n          if (_delayed1000turn_off_f (_curr_state, _Await) == 0)\n            {\n              write__delayed1000turn_off (_curr_state, _Await);\n              _added_facts = true;\n            }\n          _tuple2 += _size__now;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_1: _delayed1000turn_off(_Await)=>_next_state :- U{_delayed1000turn_off(_Await)} E{_now(_Curr) ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000)}.\nvoid\n_inductive_rule_1 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000turn_off_f (_tuple1)) != 0)\n    {\n      unsigned long _Await = _delayed1000turn_off_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Curr < _Await + 1000)\n            {\n              if (_delayed1000turn_off_f (_next_state, _Await) == 0)\n                {\n                  write__delayed1000turn_off (_next_state, _Await);\n                }\n              goto jmp1;\n            }\n          _tuple2 += _size__now;\n        }\n    jmp1:;\n      _tuple1 += _size__delayed1000turn_off;\n    }\n};\n\n// _deductive_rule_2: _delayed1000turn_on(_Await)=>_curr_state :- E{turn_off()} U{_now(_Await)}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Await = _now_1 (_tuple2);\n          if (_delayed1000turn_on_f (_curr_state, _Await) == 0)\n            {\n              write__delayed1000turn_on (_curr_state, _Await);\n              _added_facts = true;\n            }\n          _tuple2 += _size__now;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_2: _delayed1000turn_on(_Await)=>_next_state :- U{_delayed1000turn_on(_Await)} E{_now(_Curr) ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000)}.\nvoid\n_inductive_rule_2 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000turn_on_f (_tuple1)) != 0)\n    {\n      unsigned long _Await = _delayed1000turn_on_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Curr < _Await + 1000)\n            {\n              if (_delayed1000turn_on_f (_next_state, _Await) == 0)\n                {\n                  write__delayed1000turn_on (_next_state, _Await);\n                }\n              goto jmp1;\n            }\n          _tuple2 += _size__now;\n        }\n    jmp1:;\n      _tuple1 += _size__delayed1000turn_on;\n    }\n};\n\n// _deductive_rule_3: _now(T)=>_curr_state :- U{_io_millis(T)}.\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_millis_f (_tuple1)) != 0)\n    {\n      unsigned long T = _io_millis_1 (_tuple1);\n      if (_now_f (_curr_state, T) == 0)\n        {\n          write__now (_curr_state, T);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_millis;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_4: turn_off()=>_curr_state :- E{_delayed1000turn_off(_Await) _now(_Curr) ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\")}.\nbool\n_deductive_rule_4 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000turn_off_f (_tuple1)) != 0)\n    {\n      unsigned long _Await = _delayed1000turn_off_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Await + 1000 <= _Curr)\n            {\n              if (turn_off_ (_curr_state) == 0)\n                {\n                  write_turn_off (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size__now;\n        }\n      _tuple1 += _size__delayed1000turn_off;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_5: turn_off()=>_curr_state :- E{_setup()}.\nbool\n_deductive_rule_5 ()\n{\n  bool _added_facts = false;\n  if (_setup_ (_curr_state) != 0)\n    {\n      if (turn_off_ (_curr_state) == 0)\n        {\n          write_turn_off (_curr_state);\n          _added_facts = true;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_6: turn_on()=>_curr_state :- E{_delayed1000turn_on(_Await) _now(_Curr) ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\")}.\nbool\n_deductive_rule_6 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000turn_on_f (_tuple1)) != 0)\n    {\n      unsigned long _Await = _delayed1000turn_on_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Await + 1000 <= _Curr)\n            {\n              if (turn_on_ (_curr_state) == 0)\n                {\n                  write_turn_on (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size__now;\n        }\n      _tuple1 += _size__delayed1000turn_on;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_3: #_io_digitalWrite(13, HIGH)=>_next_state :- E{turn_on()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: #_io_digitalWrite(13, LOW)=>_next_state :- E{turn_off()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: #_io_millis(_)=>_next_state :- .\nvoid\n_inductive_rule_5 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_millis_f (_next_state)) == 0)\n    {\n// make io call\n      unsigned long _T = millis ();\n      write__io_millis (_next_state, _T);\n    }\n};\n\n// _inductive_rule_6: #_io_pinOut(13)=>_next_state :- E{_setup()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (_setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write__now (_curr_state, 0);\n  _added_facts = true;\n  write__setup (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n// stratum 2\n  _deductive_rule_3 ();\n\n  do\n    {                           // stratum 4\n      _added_facts = false;\n      _added_facts |= _deductive_rule_1 ();\n      _added_facts |= _deductive_rule_2 ();\n      _added_facts |= _deductive_rule_4 ();\n      _added_facts |= _deductive_rule_5 ();\n      _added_facts |= _deductive_rule_6 ();\n    }\n  while (_added_facts);\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n  _inductive_rule_6 ();\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl _delayed1000turn_off/1(unsigned long)</span>\n<span class=\"cm\">.decl _delayed1000turn_on/1(unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">_now(0)@0.</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">_delayed1000turn_off(_Await) :- _now(_Await), turn_on().</span>\n<span class=\"cm\">_delayed1000turn_on(_Await) :- _now(_Await), turn_off().</span>\n<span class=\"cm\">_now(T) :- _io_millis(T).</span>\n<span class=\"cm\">turn_off() :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">turn_off() :- _setup().</span>\n<span class=\"cm\">turn_on() :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">_delayed1000turn_off(_Await)@next :- _delayed1000turn_off(_Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">_delayed1000turn_on(_Await)@next :- _delayed1000turn_on(_Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;_setup&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;_delayed1000turn_off&quot;,&quot;_delayed1000turn_on&quot;,&quot;turn_off&quot;,&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__delayed1000turn_off 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__delayed1000turn_on 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_millis 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__now 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__setup 1</span>\n<span class=\"cp\">#define _size_turn_off 1</span>\n<span class=\"cp\">#define _size_turn_on 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">10</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_on</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__setup</span><span class=\"p\">,</span>\n<span class=\"n\">_size_turn_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_on</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__delayed1000turn_off 1</span>\n<span class=\"cp\">#define _type__delayed1000turn_on 2</span>\n<span class=\"cp\">#define _type__io_digitalWrite 3</span>\n<span class=\"cp\">#define _type__io_millis 4</span>\n<span class=\"cp\">#define _type__io_pinOut 5</span>\n<span class=\"cp\">#define _type__now 6</span>\n<span class=\"cp\">#define _type__setup 7</span>\n<span class=\"cp\">#define _type_turn_off 8</span>\n<span class=\"cp\">#define _type_turn_on 9</span>\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_delayed1000turn_off_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_delayed1000turn_on_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__delayed1000turn_off(buf, a1) _write_fact_unsigned_long(buf, _type__delayed1000turn_off, a1)</span>\n<span class=\"cp\">#define write__delayed1000turn_on(buf, a1) _write_fact_unsigned_long(buf, _type__delayed1000turn_on, a1)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write__now(buf, a1) _write_fact_unsigned_long(buf, _type__now, a1)</span>\n<span class=\"cp\">#define write__setup(buf) _write_fact_(buf, _type__setup)</span>\n<span class=\"cp\">#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)</span>\n<span class=\"cp\">#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)</span>\n\n<span class=\"cp\">#define _delayed1000turn_off_f(buf) _next__fact(buf,_type__delayed1000turn_off)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_delayed1000turn_off_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000turn_off</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_off_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_off</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _delayed1000turn_on_f(buf) _next__fact(buf,_type__delayed1000turn_on)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_delayed1000turn_on_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000turn_on</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_on_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_on</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_millis_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_millis</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _now_f(buf) _next__fact(buf,_type__now)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_now_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__now</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _setup_(buf) _next__fact(buf,_type__setup)</span>\n\n<span class=\"cp\">#define turn_off_(buf) _next__fact(buf,_type_turn_off)</span>\n\n<span class=\"cp\">#define turn_on_(buf) _next__fact(buf,_type_turn_on)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: _delayed1000turn_off(_Await)=&gt;_curr_state :- E{turn_on()} U{_now(_Await)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_off_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write__delayed1000turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: _delayed1000turn_off(_Await)=&gt;_next_state :- U{_delayed1000turn_off(_Await)} E{_now(_Curr) ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_off_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_off_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_off_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write__delayed1000turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_off</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: _delayed1000turn_on(_Await)=&gt;_curr_state :- E{turn_off()} U{_now(_Await)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_on_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write__delayed1000turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: _delayed1000turn_on(_Await)=&gt;_next_state :- U{_delayed1000turn_on(_Await)} E{_now(_Curr) ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_on_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_on_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000turn_on_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write__delayed1000turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_on</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: _now(T)=&gt;_curr_state :- U{_io_millis(T)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write__now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_4: turn_off()=&gt;_curr_state :- E{_delayed1000turn_off(_Await) _now(_Curr) ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_off_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_off_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_off</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_5: turn_off()=&gt;_curr_state :- E{_setup()}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_6: turn_on()=&gt;_curr_state :- E{_delayed1000turn_on(_Await) _now(_Curr) ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_on_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000turn_on_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000turn_on</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{turn_on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{turn_off()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_millis(_)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_millis</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_pinOut(13)=&gt;_next_state :- E{_setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write__now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">write__setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"k\">do</span>\n<span class=\"w\">    </span><span class=\"p\">{</span><span class=\"w\">                           </span><span class=\"c1\">// stratum 4</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_added_facts</span><span class=\"p\">);</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"nf\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_mini.dl",
      "template": "no runtime",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n[setup]#pinOut(13)@next.\n\n.decl switch(int)\n[delay:1000]switch(#HIGH) :- switch(#LOW).\n[delay:1000]switch(#LOW) :- switch(#HIGH).\n\nswitch(#LOW)@0.\n#digitalWrite(13, Value)@next :- switch(Value).\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl _delayed1000switch/2(int, unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl switch/1(int)\n_now(0)@0.\nswitch(LOW)@0.\n_delayed1000switch(HIGH, _Await) :- _now(_Await), switch(LOW).\n_delayed1000switch(LOW, _Await) :- _now(_Await), switch(HIGH).\n_now(T) :- _io_millis(T).\nswitch(HIGH) :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\nswitch(LOW) :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\n_delayed1000switch(HIGH, _Await)@next :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n_delayed1000switch(LOW, _Await)@next :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n#_io_digitalWrite(13, Value)@next :- switch(Value).\n#_io_millis(_)@next :- .\n\n\nProgram 3:\n.decl _delayed1000switch/2(int, unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl switch/1(int)\n_setup()@0.\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"_now\"]\n3: fromList [\"_delayed1000switch\",\"switch\"]\n*/\n\n#define _rulecount 0\n#define _bufsize 256\n\nbyte _fsm2_state = 3;\nbyte _fsm1_state = 6;\nunsigned long _fsm1_slot_1;\nunsigned long _fsm1_slot_2;\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n/* SETUP */\n\n\n/* LOOP */\n\nif (_fsm2_state == 1)\n  {\n    {\n    _fsm2_trans1:\n      if (true)\n        {\n          _fsm2_state = 1;\n        }\n      else;\n    }\n  }\nelse if (_fsm2_state == 2)\n  {\n    {\n      pinMode (13, OUTPUT);\n    }\n    {\n      goto _fsm2_trans1;\n    }\n  }\nelse if (_fsm2_state == 3)\n  {\n    {\n    _fsm2_trans3:\n      if (true)\n        {\n          _fsm2_state = 2;\n        }\n      else;\n    }\n  }\nelse;\nif (_fsm1_state == 7)\n  {\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_1 = _T;\n    }\n    {\n    _fsm1_trans7:\n      if (((_fsm1_slot_1 < 1000) && (0 != _fsm1_slot_1))\n          || (0 == _fsm1_slot_1))\n        {\n          _fsm1_state = 1;\n        }\n      else if ((1000 <= _fsm1_slot_1) && (HIGH == LOW))\n        {\n          _fsm1_state = 8;\n        }\n      else if ((1000 <= _fsm1_slot_1) && (HIGH != LOW))\n        {\n          _fsm1_state = 12;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 1)\n  {\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_1 = _T;\n    }\n    {\n      goto _fsm1_trans7;\n    }\n  }\nelse if (_fsm1_state == 8)\n  {\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_2 = _T;\n    }\n    {\n    _fsm1_trans8:\n      if (((_fsm1_slot_2 < _fsm1_slot_1 + 1000)\n           && (((HIGH == LOW) && (_fsm1_slot_1 != _fsm1_slot_2))\n               || (HIGH != LOW))) || ((HIGH == LOW)\n                                      && (_fsm1_slot_1 == _fsm1_slot_2)))\n        {\n          _fsm1_state = 2;\n        }\n      else if ((_fsm1_slot_1 + 1000 <= _fsm1_slot_2) && (HIGH == LOW))\n        {\n          _fsm1_state = 10;\n        }\n      else if ((_fsm1_slot_1 + 1000 <= _fsm1_slot_2) && (HIGH != LOW))\n        {\n          _fsm1_state = 13;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 9)\n  {\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_2 = _T;\n    }\n    {\n      goto _fsm1_trans8;\n    }\n  }\nelse if (_fsm1_state == 2)\n  {\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_2 = _T;\n    }\n    {\n      goto _fsm1_trans8;\n    }\n  }\nelse if (_fsm1_state == 10)\n  {\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_1 = _T;\n    }\n    {\n    _fsm1_trans10:\n      if (((_fsm1_slot_1 < _fsm1_slot_2 + 1000)\n           && (((HIGH == LOW) && (_fsm1_slot_1 != _fsm1_slot_2))\n               || (HIGH != LOW))) || ((HIGH == LOW)\n                                      && (_fsm1_slot_1 == _fsm1_slot_2)))\n        {\n          _fsm1_state = 3;\n        }\n      else if ((_fsm1_slot_2 + 1000 <= _fsm1_slot_1) && (HIGH == LOW))\n        {\n          _fsm1_state = 8;\n        }\n      else if ((_fsm1_slot_2 + 1000 <= _fsm1_slot_1) && (HIGH != LOW))\n        {\n          _fsm1_state = 12;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 11)\n  {\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_1 = _T;\n    }\n    {\n      goto _fsm1_trans10;\n    }\n  }\nelse if (_fsm1_state == 3)\n  {\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_1 = _T;\n    }\n    {\n      goto _fsm1_trans10;\n    }\n  }\nelse if (_fsm1_state == 12)\n  {\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_2 = _T;\n    }\n    {\n    _fsm1_trans12:\n      if ((_fsm1_slot_2 < _fsm1_slot_1 + 1000) && (HIGH == LOW))\n        {\n          _fsm1_state = 2;\n        }\n      else if ((_fsm1_slot_2 < _fsm1_slot_1 + 1000) && (HIGH != LOW))\n        {\n          _fsm1_state = 4;\n        }\n      else if ((_fsm1_slot_1 + 1000 <= _fsm1_slot_2) && (HIGH == LOW))\n        {\n          _fsm1_state = 10;\n        }\n      else if ((_fsm1_slot_1 + 1000 <= _fsm1_slot_2) && (HIGH != LOW))\n        {\n          _fsm1_state = 11;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 4)\n  {\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_2 = _T;\n    }\n    {\n      goto _fsm1_trans12;\n    }\n  }\nelse if (_fsm1_state == 13)\n  {\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_1 = _T;\n    }\n    {\n    _fsm1_trans13:\n      if ((_fsm1_slot_1 < _fsm1_slot_2 + 1000) && (HIGH == LOW))\n        {\n          _fsm1_state = 3;\n        }\n      else if ((_fsm1_slot_1 < _fsm1_slot_2 + 1000) && (HIGH != LOW))\n        {\n          _fsm1_state = 5;\n        }\n      else if ((_fsm1_slot_2 + 1000 <= _fsm1_slot_1) && (HIGH == LOW))\n        {\n          _fsm1_state = 8;\n        }\n      else if ((_fsm1_slot_2 + 1000 <= _fsm1_slot_1) && (HIGH != LOW))\n        {\n          _fsm1_state = 9;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 5)\n  {\n    {\n      unsigned long _T = millis ();\n      _fsm1_slot_1 = _T;\n    }\n    {\n      goto _fsm1_trans13;\n    }\n  }\nelse if (_fsm1_state == 6)\n  {\n    {\n    _fsm1_trans6:\n      if (true)\n        {\n          _fsm1_state = 7;\n        }\n      else;\n    }\n  }\nelse;\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl _delayed1000switch/2(int, unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl switch/1(int)</span>\n<span class=\"cm\">_now(0)@0.</span>\n<span class=\"cm\">switch(LOW)@0.</span>\n<span class=\"cm\">_delayed1000switch(HIGH, _Await) :- _now(_Await), switch(LOW).</span>\n<span class=\"cm\">_delayed1000switch(LOW, _Await) :- _now(_Await), switch(HIGH).</span>\n<span class=\"cm\">_now(T) :- _io_millis(T).</span>\n<span class=\"cm\">switch(HIGH) :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">switch(LOW) :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">_delayed1000switch(HIGH, _Await)@next :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">_delayed1000switch(LOW, _Await)@next :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">#_io_digitalWrite(13, Value)@next :- switch(Value).</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl _delayed1000switch/2(int, unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl switch/1(int)</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;_delayed1000switch&quot;,&quot;switch&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">;</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cm\">/* SETUP */</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm2_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans7</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans7</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans8</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">           </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">))</span>\n<span class=\"w\">               </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)))</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span>\n<span class=\"w\">                                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans8</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans8</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans10</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">           </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">))</span>\n<span class=\"w\">               </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)))</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span>\n<span class=\"w\">                                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans10</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans10</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans12</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans12</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans13</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans13</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_mini.dl",
      "template": "no runtime",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n[setup]#pinOut(13)@next.\n\n.decl switch(int)\n[delay:1000]switch(#HIGH) :- switch(#LOW).\n[delay:1000]switch(#LOW) :- switch(#HIGH).\n\nswitch(#LOW)@0.\n#digitalWrite(13, Value)@next :- switch(Value).\n",
      "tsource": "/*\nProgram 1:\n.decl _delayed1000switch/2(int, unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl switch/1(int)\n_now(0)@0.\n_setup()@0.\nswitch(LOW)@0.\n_delayed1000switch(HIGH, _Await) :- _now(_Await), switch(LOW).\n_delayed1000switch(LOW, _Await) :- _now(_Await), switch(HIGH).\n_now(T) :- _io_millis(T).\nswitch(HIGH) :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\nswitch(LOW) :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\n_delayed1000switch(HIGH, _Await)@next :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n_delayed1000switch(LOW, _Await)@next :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n#_io_digitalWrite(13, Value)@next :- switch(Value).\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"_now\"]\n3: fromList [\"_delayed1000switch\",\"switch\"]\n*/\n\n#define _rulecount 3\n#define _bufsize 256\n\n\n\n#define _size__delayed1000switch 1 + sizeof(int)+ sizeof(unsigned long)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_millis 1 + sizeof(unsigned long)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size__now 1 + sizeof(unsigned long)\n#define _size__setup 1\n#define _size_switch 1 + sizeof(int)\nbyte _sizes[8] =\n  { 0, _size__delayed1000switch, _size__io_digitalWrite, _size__io_millis,\n_size__io_pinOut, _size__now, _size__setup, _size_switch\n};\n\n#define _type__delayed1000switch 1\n#define _type__io_digitalWrite 2\n#define _type__io_millis 3\n#define _type__io_pinOut 4\n#define _type__now 5\n#define _type__setup 6\n#define _type_switch 7\n\n\n\ninline int\n_delayed1000switch_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline unsigned long\n_delayed1000switch_2 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1 + sizeof (int));\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline unsigned long\n_io_millis_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline unsigned long\n_now_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline int\nswitch_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_int (byte *buf, byte type, int a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < int >(free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_int_unsigned_long (byte *buf, byte type, int a1, unsigned long a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < int >(free, a1);\n  free = _write_data < unsigned long >(free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_unsigned_long (byte *buf, byte type, unsigned long a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < unsigned long >(free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__delayed1000switch(buf, a1, a2) _write_fact_int_unsigned_long(buf, _type__delayed1000switch, a1, a2)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write__now(buf, a1) _write_fact_unsigned_long(buf, _type__now, a1)\n#define write__setup(buf) _write_fact_(buf, _type__setup)\n#define write_switch(buf, a1) _write_fact_int(buf, _type_switch, a1)\n\n#define _delayed1000switch_ff(buf) _next__fact(buf,_type__delayed1000switch)\n\nbyte *\n_delayed1000switch_fb (byte *buf, unsigned long a2)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000switch)) != 0)\n    {\n      if (_delayed1000switch_2 (buf) != a2)\n        {\n          buf = buf + _size__delayed1000switch;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_delayed1000switch_bf (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000switch)) != 0)\n    {\n      if (_delayed1000switch_1 (buf) != a1)\n        {\n          buf = buf + _size__delayed1000switch;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_delayed1000switch_bb (byte *buf, int a1, unsigned long a2)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000switch)) != 0)\n    {\n      if (_delayed1000switch_1 (buf) != a1\n          || _delayed1000switch_2 (buf) != a2)\n        {\n          buf = buf + _size__delayed1000switch;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)\n\nbyte *\n_io_millis_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__io_millis)) != 0)\n    {\n      if (_io_millis_1 (buf) != a1)\n        {\n          buf = buf + _size__io_millis;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _now_f(buf) _next__fact(buf,_type__now)\n\nbyte *\n_now_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__now)) != 0)\n    {\n      if (_now_1 (buf) != a1)\n        {\n          buf = buf + _size__now;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _setup_(buf) _next__fact(buf,_type__setup)\n\n#define switch_f(buf) _next__fact(buf,_type_switch)\n\nbyte *\nswitch_b (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type_switch)) != 0)\n    {\n      if (switch_1 (buf) != a1)\n        {\n          buf = buf + _size_switch;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: _delayed1000switch(HIGH, _Await)=>_curr_state :- E{switch(LOW)} U{_now(_Await)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (switch_b (_curr_state, LOW) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Await = _now_1 (_tuple2);\n          if (_delayed1000switch_bf (_curr_state, HIGH, _Await) == 0)\n            {\n              write__delayed1000switch (_curr_state, HIGH, _Await);\n              _added_facts = true;\n            }\n          _tuple2 += _size__now;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_1: _delayed1000switch(HIGH, _Await)=>_next_state :- U{_delayed1000switch(HIGH, _Await)} E{_now(_Curr) ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000)}.\nvoid\n_inductive_rule_1 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000switch_bf (_tuple1, HIGH)) != 0)\n    {\n      unsigned long _Await = _delayed1000switch_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Curr < _Await + 1000)\n            {\n              if (_delayed1000switch_bf (_next_state, HIGH, _Await) == 0)\n                {\n                  write__delayed1000switch (_next_state, HIGH, _Await);\n                }\n              goto jmp1;\n            }\n          _tuple2 += _size__now;\n        }\n    jmp1:;\n      _tuple1 += _size__delayed1000switch;\n    }\n};\n\n// _deductive_rule_2: _delayed1000switch(LOW, _Await)=>_curr_state :- E{switch(HIGH)} U{_now(_Await)}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  if (switch_b (_curr_state, HIGH) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Await = _now_1 (_tuple2);\n          if (_delayed1000switch_bf (_curr_state, LOW, _Await) == 0)\n            {\n              write__delayed1000switch (_curr_state, LOW, _Await);\n              _added_facts = true;\n            }\n          _tuple2 += _size__now;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_2: _delayed1000switch(LOW, _Await)=>_next_state :- U{_delayed1000switch(LOW, _Await)} E{_now(_Curr) ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000)}.\nvoid\n_inductive_rule_2 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000switch_bf (_tuple1, LOW)) != 0)\n    {\n      unsigned long _Await = _delayed1000switch_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Curr < _Await + 1000)\n            {\n              if (_delayed1000switch_bf (_next_state, LOW, _Await) == 0)\n                {\n                  write__delayed1000switch (_next_state, LOW, _Await);\n                }\n              goto jmp1;\n            }\n          _tuple2 += _size__now;\n        }\n    jmp1:;\n      _tuple1 += _size__delayed1000switch;\n    }\n};\n\n// _deductive_rule_3: _now(T)=>_curr_state :- U{_io_millis(T)}.\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_millis_f (_tuple1)) != 0)\n    {\n      unsigned long T = _io_millis_1 (_tuple1);\n      if (_now_f (_curr_state, T) == 0)\n        {\n          write__now (_curr_state, T);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_millis;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_4: switch(HIGH)=>_curr_state :- E{_delayed1000switch(HIGH, _Await) _now(_Curr) ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\")}.\nbool\n_deductive_rule_4 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000switch_bf (_tuple1, HIGH)) != 0)\n    {\n      unsigned long _Await = _delayed1000switch_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Await + 1000 <= _Curr)\n            {\n              if (switch_b (_curr_state, HIGH) == 0)\n                {\n                  write_switch (_curr_state, HIGH);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size__now;\n        }\n      _tuple1 += _size__delayed1000switch;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_5: switch(LOW)=>_curr_state :- E{_delayed1000switch(LOW, _Await) _now(_Curr) ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\")}.\nbool\n_deductive_rule_5 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000switch_bf (_tuple1, LOW)) != 0)\n    {\n      unsigned long _Await = _delayed1000switch_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Await + 1000 <= _Curr)\n            {\n              if (switch_b (_curr_state, LOW) == 0)\n                {\n                  write_switch (_curr_state, LOW);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size__now;\n        }\n      _tuple1 += _size__delayed1000switch;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_3: #_io_digitalWrite(13, Value)=>_next_state :- U{switch(Value)}.\nvoid\n_inductive_rule_3 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = switch_f (_tuple1)) != 0)\n    {\n      int Value = switch_1 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, Value)) == 0)\n        {\n          // make io call\n          digitalWrite (13, Value);\n          write__io_digitalWrite (_next_state, 13, Value);\n        }\n      _tuple1 += _size_switch;\n    }\n};\n\n// _inductive_rule_4: #_io_millis(_)=>_next_state :- .\nvoid\n_inductive_rule_4 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_millis_f (_next_state)) == 0)\n    {\n// make io call\n      unsigned long _T = millis ();\n      write__io_millis (_next_state, _T);\n    }\n};\n\n// _inductive_rule_5: #_io_pinOut(13)=>_next_state :- E{_setup()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (_setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n/* SETUP */\nwrite__now (_curr_state, 0);\n_added_facts = true;\nwrite__setup (_curr_state);\n_added_facts = true;\nwrite_switch (_curr_state, LOW);\n_added_facts = true;\n\n\n/* LOOP */\n\n\n\n// deductive phase\n\n// stratum 2\n_deductive_rule_3 ();\ndo\n  {                             // stratum 3\n    _added_facts = false;\n    _added_facts |= _deductive_rule_1 ();\n    _added_facts |= _deductive_rule_2 ();\n    _added_facts |= _deductive_rule_4 ();\n    _added_facts |= _deductive_rule_5 ();\n  }\nwhile (_added_facts);\n// inductive_phase\n_inductive_rule_1 ();\n_inductive_rule_2 ();\n_inductive_rule_3 ();\n_inductive_rule_4 ();\n_inductive_rule_5 ();\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl _delayed1000switch/2(int, unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl switch/1(int)</span>\n<span class=\"cm\">_now(0)@0.</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">switch(LOW)@0.</span>\n<span class=\"cm\">_delayed1000switch(HIGH, _Await) :- _now(_Await), switch(LOW).</span>\n<span class=\"cm\">_delayed1000switch(LOW, _Await) :- _now(_Await), switch(HIGH).</span>\n<span class=\"cm\">_now(T) :- _io_millis(T).</span>\n<span class=\"cm\">switch(HIGH) :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">switch(LOW) :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">_delayed1000switch(HIGH, _Await)@next :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">_delayed1000switch(LOW, _Await)@next :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">#_io_digitalWrite(13, Value)@next :- switch(Value).</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;_delayed1000switch&quot;,&quot;switch&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 3</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n\n\n<span class=\"cp\">#define _size__delayed1000switch 1 + sizeof(int)+ sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_millis 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__now 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__setup 1</span>\n<span class=\"cp\">#define _size_switch 1 + sizeof(int)</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">8</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__setup</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_switch</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__delayed1000switch 1</span>\n<span class=\"cp\">#define _type__io_digitalWrite 2</span>\n<span class=\"cp\">#define _type__io_millis 3</span>\n<span class=\"cp\">#define _type__io_pinOut 4</span>\n<span class=\"cp\">#define _type__now 5</span>\n<span class=\"cp\">#define _type__setup 6</span>\n<span class=\"cp\">#define _type_switch 7</span>\n\n\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">_delayed1000switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_int_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__delayed1000switch(buf, a1, a2) _write_fact_int_unsigned_long(buf, _type__delayed1000switch, a1, a2)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write__now(buf, a1) _write_fact_unsigned_long(buf, _type__now, a1)</span>\n<span class=\"cp\">#define write__setup(buf) _write_fact_(buf, _type__setup)</span>\n<span class=\"cp\">#define write_switch(buf, a1) _write_fact_int(buf, _type_switch, a1)</span>\n\n<span class=\"cp\">#define _delayed1000switch_ff(buf) _next__fact(buf,_type__delayed1000switch)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_delayed1000switch_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000switch</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000switch</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_delayed1000switch_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000switch</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span>\n<span class=\"w\">          </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_millis_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_millis</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _now_f(buf) _next__fact(buf,_type__now)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_now_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__now</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _setup_(buf) _next__fact(buf,_type__setup)</span>\n\n<span class=\"cp\">#define switch_f(buf) _next__fact(buf,_type_switch)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_switch</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_switch</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: _delayed1000switch(HIGH, _Await)=&gt;_curr_state :- E{switch(LOW)} U{_now(_Await)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write__delayed1000switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: _delayed1000switch(HIGH, _Await)=&gt;_next_state :- U{_delayed1000switch(HIGH, _Await)} E{_now(_Curr) ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write__delayed1000switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: _delayed1000switch(LOW, _Await)=&gt;_curr_state :- E{switch(HIGH)} U{_now(_Await)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write__delayed1000switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: _delayed1000switch(LOW, _Await)=&gt;_next_state :- U{_delayed1000switch(LOW, _Await)} E{_now(_Curr) ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write__delayed1000switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: _now(T)=&gt;_curr_state :- U{_io_millis(T)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write__now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_4: switch(HIGH)=&gt;_curr_state :- E{_delayed1000switch(HIGH, _Await) _now(_Curr) ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_5: switch(LOW)=&gt;_curr_state :- E{_delayed1000switch(LOW, _Await) _now(_Curr) ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_digitalWrite(13, Value)=&gt;_next_state :- U{switch(Value)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">switch_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Value</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Value</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Value</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Value</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_millis(_)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_millis</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_pinOut(13)=&gt;_next_state :- E{_setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cm\">/* SETUP */</span>\n<span class=\"n\">write__now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"n\">write__setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"n\">write_switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n\n\n<span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"k\">do</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\">                             </span><span class=\"c1\">// stratum 3</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_added_facts</span><span class=\"p\">);</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_mini.dl",
      "template": "arduino",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n[setup]#pinOut(13)@next.\n\n.decl switch(int)\n[delay:1000]switch(#HIGH) :- switch(#LOW).\n[delay:1000]switch(#LOW) :- switch(#HIGH).\n\nswitch(#LOW)@0.\n#digitalWrite(13, Value)@next :- switch(Value).\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl _delayed1000switch/2(int, unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl switch/1(int)\n_now(0)@0.\nswitch(LOW)@0.\n_delayed1000switch(HIGH, _Await) :- _now(_Await), switch(LOW).\n_delayed1000switch(LOW, _Await) :- _now(_Await), switch(HIGH).\n_now(T) :- _io_millis(T).\nswitch(HIGH) :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\nswitch(LOW) :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\n_delayed1000switch(HIGH, _Await)@next :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n_delayed1000switch(LOW, _Await)@next :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n#_io_digitalWrite(13, Value)@next :- switch(Value).\n#_io_millis(_)@next :- .\n\n\nProgram 3:\n.decl _delayed1000switch/2(int, unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl switch/1(int)\n_setup()@0.\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"_now\"]\n3: fromList [\"_delayed1000switch\",\"switch\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm2_state = 3;\nbyte _fsm1_state = 6;\nunsigned long _fsm1_slot_1;\nunsigned long _fsm1_slot_2;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm2_state == 1)\n    {\n      {\n      _fsm2_trans1:\n        if (true)\n          {\n            _fsm2_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm2_state == 2)\n    {\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n        goto _fsm2_trans1;\n      }\n    }\n  else if (_fsm2_state == 3)\n    {\n      {\n      _fsm2_trans3:\n        if (true)\n          {\n            _fsm2_state = 2;\n          }\n        else;\n      }\n    }\n  else;\n  if (_fsm1_state == 7)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n      _fsm1_trans7:\n        if (((_fsm1_slot_1 < 1000) && (0 != _fsm1_slot_1))\n            || (0 == _fsm1_slot_1))\n          {\n            _fsm1_state = 1;\n          }\n        else if ((1000 <= _fsm1_slot_1) && (HIGH == LOW))\n          {\n            _fsm1_state = 8;\n          }\n        else if ((1000 <= _fsm1_slot_1) && (HIGH != LOW))\n          {\n            _fsm1_state = 12;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 1)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n        goto _fsm1_trans7;\n      }\n    }\n  else if (_fsm1_state == 8)\n    {\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_2 = _T;\n      }\n      {\n      _fsm1_trans8:\n        if (((_fsm1_slot_2 < _fsm1_slot_1 + 1000)\n             && (((HIGH == LOW) && (_fsm1_slot_1 != _fsm1_slot_2))\n                 || (HIGH != LOW))) || ((HIGH == LOW)\n                                        && (_fsm1_slot_1 == _fsm1_slot_2)))\n          {\n            _fsm1_state = 2;\n          }\n        else if ((_fsm1_slot_1 + 1000 <= _fsm1_slot_2) && (HIGH == LOW))\n          {\n            _fsm1_state = 10;\n          }\n        else if ((_fsm1_slot_1 + 1000 <= _fsm1_slot_2) && (HIGH != LOW))\n          {\n            _fsm1_state = 13;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 9)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_2 = _T;\n      }\n      {\n        goto _fsm1_trans8;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_2 = _T;\n      }\n      {\n        goto _fsm1_trans8;\n      }\n    }\n  else if (_fsm1_state == 10)\n    {\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n      _fsm1_trans10:\n        if (((_fsm1_slot_1 < _fsm1_slot_2 + 1000)\n             && (((HIGH == LOW) && (_fsm1_slot_1 != _fsm1_slot_2))\n                 || (HIGH != LOW))) || ((HIGH == LOW)\n                                        && (_fsm1_slot_1 == _fsm1_slot_2)))\n          {\n            _fsm1_state = 3;\n          }\n        else if ((_fsm1_slot_2 + 1000 <= _fsm1_slot_1) && (HIGH == LOW))\n          {\n            _fsm1_state = 8;\n          }\n        else if ((_fsm1_slot_2 + 1000 <= _fsm1_slot_1) && (HIGH != LOW))\n          {\n            _fsm1_state = 12;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 11)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n        goto _fsm1_trans10;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n        goto _fsm1_trans10;\n      }\n    }\n  else if (_fsm1_state == 12)\n    {\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_2 = _T;\n      }\n      {\n      _fsm1_trans12:\n        if ((_fsm1_slot_2 < _fsm1_slot_1 + 1000) && (HIGH == LOW))\n          {\n            _fsm1_state = 2;\n          }\n        else if ((_fsm1_slot_2 < _fsm1_slot_1 + 1000) && (HIGH != LOW))\n          {\n            _fsm1_state = 4;\n          }\n        else if ((_fsm1_slot_1 + 1000 <= _fsm1_slot_2) && (HIGH == LOW))\n          {\n            _fsm1_state = 10;\n          }\n        else if ((_fsm1_slot_1 + 1000 <= _fsm1_slot_2) && (HIGH != LOW))\n          {\n            _fsm1_state = 11;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_2 = _T;\n      }\n      {\n        goto _fsm1_trans12;\n      }\n    }\n  else if (_fsm1_state == 13)\n    {\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n      _fsm1_trans13:\n        if ((_fsm1_slot_1 < _fsm1_slot_2 + 1000) && (HIGH == LOW))\n          {\n            _fsm1_state = 3;\n          }\n        else if ((_fsm1_slot_1 < _fsm1_slot_2 + 1000) && (HIGH != LOW))\n          {\n            _fsm1_state = 5;\n          }\n        else if ((_fsm1_slot_2 + 1000 <= _fsm1_slot_1) && (HIGH == LOW))\n          {\n            _fsm1_state = 8;\n          }\n        else if ((_fsm1_slot_2 + 1000 <= _fsm1_slot_1) && (HIGH != LOW))\n          {\n            _fsm1_state = 9;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 5)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n        goto _fsm1_trans13;\n      }\n    }\n  else if (_fsm1_state == 6)\n    {\n      {\n      _fsm1_trans6:\n        if (true)\n          {\n            _fsm1_state = 7;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl _delayed1000switch/2(int, unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl switch/1(int)</span>\n<span class=\"cm\">_now(0)@0.</span>\n<span class=\"cm\">switch(LOW)@0.</span>\n<span class=\"cm\">_delayed1000switch(HIGH, _Await) :- _now(_Await), switch(LOW).</span>\n<span class=\"cm\">_delayed1000switch(LOW, _Await) :- _now(_Await), switch(HIGH).</span>\n<span class=\"cm\">_now(T) :- _io_millis(T).</span>\n<span class=\"cm\">switch(HIGH) :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">switch(LOW) :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">_delayed1000switch(HIGH, _Await)@next :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">_delayed1000switch(LOW, _Await)@next :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">#_io_digitalWrite(13, Value)@next :- switch(Value).</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl _delayed1000switch/2(int, unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl switch/1(int)</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;_delayed1000switch&quot;,&quot;switch&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans7</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">))</span>\n<span class=\"w\">            </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans7</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans8</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">             </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">))</span>\n<span class=\"w\">                 </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)))</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span>\n<span class=\"w\">                                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans8</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans8</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans10</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">             </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">))</span>\n<span class=\"w\">                 </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)))</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span>\n<span class=\"w\">                                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans10</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans10</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans12</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans12</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans13</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans13</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_mini.dl",
      "template": "arduino",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n[setup]#pinOut(13)@next.\n\n.decl switch(int)\n[delay:1000]switch(#HIGH) :- switch(#LOW).\n[delay:1000]switch(#LOW) :- switch(#HIGH).\n\nswitch(#LOW)@0.\n#digitalWrite(13, Value)@next :- switch(Value).\n",
      "tsource": "/*\nProgram 1:\n.decl _delayed1000switch/2(int, unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl switch/1(int)\n_now(0)@0.\n_setup()@0.\nswitch(LOW)@0.\n_delayed1000switch(HIGH, _Await) :- _now(_Await), switch(LOW).\n_delayed1000switch(LOW, _Await) :- _now(_Await), switch(HIGH).\n_now(T) :- _io_millis(T).\nswitch(HIGH) :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\nswitch(LOW) :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\n_delayed1000switch(HIGH, _Await)@next :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n_delayed1000switch(LOW, _Await)@next :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n#_io_digitalWrite(13, Value)@next :- switch(Value).\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"_now\"]\n3: fromList [\"_delayed1000switch\",\"switch\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 3\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__delayed1000switch 1 + sizeof(int)+ sizeof(unsigned long)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_millis 1 + sizeof(unsigned long)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size__now 1 + sizeof(unsigned long)\n#define _size__setup 1\n#define _size_switch 1 + sizeof(int)\nbyte _sizes[8] =\n  { 0, _size__delayed1000switch, _size__io_digitalWrite, _size__io_millis,\n_size__io_pinOut, _size__now, _size__setup, _size_switch\n};\n\n#define _type__delayed1000switch 1\n#define _type__io_digitalWrite 2\n#define _type__io_millis 3\n#define _type__io_pinOut 4\n#define _type__now 5\n#define _type__setup 6\n#define _type_switch 7\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline int\n_delayed1000switch_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline unsigned long\n_delayed1000switch_2 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1 + sizeof (int));\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline unsigned long\n_io_millis_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline unsigned long\n_now_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline int\nswitch_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_int (byte *buf, byte type, int a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < int >(free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_int_unsigned_long (byte *buf, byte type, int a1, unsigned long a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < int >(free, a1);\n  free = _write_data < unsigned long >(free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_unsigned_long (byte *buf, byte type, unsigned long a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < unsigned long >(free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__delayed1000switch(buf, a1, a2) _write_fact_int_unsigned_long(buf, _type__delayed1000switch, a1, a2)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write__now(buf, a1) _write_fact_unsigned_long(buf, _type__now, a1)\n#define write__setup(buf) _write_fact_(buf, _type__setup)\n#define write_switch(buf, a1) _write_fact_int(buf, _type_switch, a1)\n\n#define _delayed1000switch_ff(buf) _next__fact(buf,_type__delayed1000switch)\n\nbyte *\n_delayed1000switch_fb (byte *buf, unsigned long a2)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000switch)) != 0)\n    {\n      if (_delayed1000switch_2 (buf) != a2)\n        {\n          buf = buf + _size__delayed1000switch;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_delayed1000switch_bf (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000switch)) != 0)\n    {\n      if (_delayed1000switch_1 (buf) != a1)\n        {\n          buf = buf + _size__delayed1000switch;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_delayed1000switch_bb (byte *buf, int a1, unsigned long a2)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000switch)) != 0)\n    {\n      if (_delayed1000switch_1 (buf) != a1\n          || _delayed1000switch_2 (buf) != a2)\n        {\n          buf = buf + _size__delayed1000switch;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)\n\nbyte *\n_io_millis_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__io_millis)) != 0)\n    {\n      if (_io_millis_1 (buf) != a1)\n        {\n          buf = buf + _size__io_millis;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _now_f(buf) _next__fact(buf,_type__now)\n\nbyte *\n_now_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__now)) != 0)\n    {\n      if (_now_1 (buf) != a1)\n        {\n          buf = buf + _size__now;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _setup_(buf) _next__fact(buf,_type__setup)\n\n#define switch_f(buf) _next__fact(buf,_type_switch)\n\nbyte *\nswitch_b (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type_switch)) != 0)\n    {\n      if (switch_1 (buf) != a1)\n        {\n          buf = buf + _size_switch;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: _delayed1000switch(HIGH, _Await)=>_curr_state :- E{switch(LOW)} U{_now(_Await)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (switch_b (_curr_state, LOW) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Await = _now_1 (_tuple2);\n          if (_delayed1000switch_bf (_curr_state, HIGH, _Await) == 0)\n            {\n              write__delayed1000switch (_curr_state, HIGH, _Await);\n              _added_facts = true;\n            }\n          _tuple2 += _size__now;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_1: _delayed1000switch(HIGH, _Await)=>_next_state :- U{_delayed1000switch(HIGH, _Await)} E{_now(_Curr) ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000)}.\nvoid\n_inductive_rule_1 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000switch_bf (_tuple1, HIGH)) != 0)\n    {\n      unsigned long _Await = _delayed1000switch_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Curr < _Await + 1000)\n            {\n              if (_delayed1000switch_bf (_next_state, HIGH, _Await) == 0)\n                {\n                  write__delayed1000switch (_next_state, HIGH, _Await);\n                }\n              goto jmp1;\n            }\n          _tuple2 += _size__now;\n        }\n    jmp1:;\n      _tuple1 += _size__delayed1000switch;\n    }\n};\n\n// _deductive_rule_2: _delayed1000switch(LOW, _Await)=>_curr_state :- E{switch(HIGH)} U{_now(_Await)}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  if (switch_b (_curr_state, HIGH) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Await = _now_1 (_tuple2);\n          if (_delayed1000switch_bf (_curr_state, LOW, _Await) == 0)\n            {\n              write__delayed1000switch (_curr_state, LOW, _Await);\n              _added_facts = true;\n            }\n          _tuple2 += _size__now;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_2: _delayed1000switch(LOW, _Await)=>_next_state :- U{_delayed1000switch(LOW, _Await)} E{_now(_Curr) ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000)}.\nvoid\n_inductive_rule_2 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000switch_bf (_tuple1, LOW)) != 0)\n    {\n      unsigned long _Await = _delayed1000switch_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Curr < _Await + 1000)\n            {\n              if (_delayed1000switch_bf (_next_state, LOW, _Await) == 0)\n                {\n                  write__delayed1000switch (_next_state, LOW, _Await);\n                }\n              goto jmp1;\n            }\n          _tuple2 += _size__now;\n        }\n    jmp1:;\n      _tuple1 += _size__delayed1000switch;\n    }\n};\n\n// _deductive_rule_3: _now(T)=>_curr_state :- U{_io_millis(T)}.\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_millis_f (_tuple1)) != 0)\n    {\n      unsigned long T = _io_millis_1 (_tuple1);\n      if (_now_f (_curr_state, T) == 0)\n        {\n          write__now (_curr_state, T);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_millis;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_4: switch(HIGH)=>_curr_state :- E{_delayed1000switch(HIGH, _Await) _now(_Curr) ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\")}.\nbool\n_deductive_rule_4 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000switch_bf (_tuple1, HIGH)) != 0)\n    {\n      unsigned long _Await = _delayed1000switch_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Await + 1000 <= _Curr)\n            {\n              if (switch_b (_curr_state, HIGH) == 0)\n                {\n                  write_switch (_curr_state, HIGH);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size__now;\n        }\n      _tuple1 += _size__delayed1000switch;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_5: switch(LOW)=>_curr_state :- E{_delayed1000switch(LOW, _Await) _now(_Curr) ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\")}.\nbool\n_deductive_rule_5 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000switch_bf (_tuple1, LOW)) != 0)\n    {\n      unsigned long _Await = _delayed1000switch_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Await + 1000 <= _Curr)\n            {\n              if (switch_b (_curr_state, LOW) == 0)\n                {\n                  write_switch (_curr_state, LOW);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size__now;\n        }\n      _tuple1 += _size__delayed1000switch;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_3: #_io_digitalWrite(13, Value)=>_next_state :- U{switch(Value)}.\nvoid\n_inductive_rule_3 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = switch_f (_tuple1)) != 0)\n    {\n      int Value = switch_1 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, Value)) == 0)\n        {\n          // make io call\n          digitalWrite (13, Value);\n          write__io_digitalWrite (_next_state, 13, Value);\n        }\n      _tuple1 += _size_switch;\n    }\n};\n\n// _inductive_rule_4: #_io_millis(_)=>_next_state :- .\nvoid\n_inductive_rule_4 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_millis_f (_next_state)) == 0)\n    {\n// make io call\n      unsigned long _T = millis ();\n      write__io_millis (_next_state, _T);\n    }\n};\n\n// _inductive_rule_5: #_io_pinOut(13)=>_next_state :- E{_setup()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (_setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write__now (_curr_state, 0);\n  _added_facts = true;\n  write__setup (_curr_state);\n  _added_facts = true;\n  write_switch (_curr_state, LOW);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n// stratum 2\n  _deductive_rule_3 ();\n  do\n    {                           // stratum 3\n      _added_facts = false;\n      _added_facts |= _deductive_rule_1 ();\n      _added_facts |= _deductive_rule_2 ();\n      _added_facts |= _deductive_rule_4 ();\n      _added_facts |= _deductive_rule_5 ();\n    }\n  while (_added_facts);\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl _delayed1000switch/2(int, unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl switch/1(int)</span>\n<span class=\"cm\">_now(0)@0.</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">switch(LOW)@0.</span>\n<span class=\"cm\">_delayed1000switch(HIGH, _Await) :- _now(_Await), switch(LOW).</span>\n<span class=\"cm\">_delayed1000switch(LOW, _Await) :- _now(_Await), switch(HIGH).</span>\n<span class=\"cm\">_now(T) :- _io_millis(T).</span>\n<span class=\"cm\">switch(HIGH) :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">switch(LOW) :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">_delayed1000switch(HIGH, _Await)@next :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">_delayed1000switch(LOW, _Await)@next :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">#_io_digitalWrite(13, Value)@next :- switch(Value).</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;_delayed1000switch&quot;,&quot;switch&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 3</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__delayed1000switch 1 + sizeof(int)+ sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_millis 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__now 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__setup 1</span>\n<span class=\"cp\">#define _size_switch 1 + sizeof(int)</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">8</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__setup</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_switch</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__delayed1000switch 1</span>\n<span class=\"cp\">#define _type__io_digitalWrite 2</span>\n<span class=\"cp\">#define _type__io_millis 3</span>\n<span class=\"cp\">#define _type__io_pinOut 4</span>\n<span class=\"cp\">#define _type__now 5</span>\n<span class=\"cp\">#define _type__setup 6</span>\n<span class=\"cp\">#define _type_switch 7</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_delayed1000switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_int_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__delayed1000switch(buf, a1, a2) _write_fact_int_unsigned_long(buf, _type__delayed1000switch, a1, a2)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write__now(buf, a1) _write_fact_unsigned_long(buf, _type__now, a1)</span>\n<span class=\"cp\">#define write__setup(buf) _write_fact_(buf, _type__setup)</span>\n<span class=\"cp\">#define write_switch(buf, a1) _write_fact_int(buf, _type_switch, a1)</span>\n\n<span class=\"cp\">#define _delayed1000switch_ff(buf) _next__fact(buf,_type__delayed1000switch)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_delayed1000switch_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000switch</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000switch</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_delayed1000switch_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000switch</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span>\n<span class=\"w\">          </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_millis_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_millis</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _now_f(buf) _next__fact(buf,_type__now)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_now_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__now</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _setup_(buf) _next__fact(buf,_type__setup)</span>\n\n<span class=\"cp\">#define switch_f(buf) _next__fact(buf,_type_switch)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_switch</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_switch</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: _delayed1000switch(HIGH, _Await)=&gt;_curr_state :- E{switch(LOW)} U{_now(_Await)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write__delayed1000switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: _delayed1000switch(HIGH, _Await)=&gt;_next_state :- U{_delayed1000switch(HIGH, _Await)} E{_now(_Curr) ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write__delayed1000switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: _delayed1000switch(LOW, _Await)=&gt;_curr_state :- E{switch(HIGH)} U{_now(_Await)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write__delayed1000switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: _delayed1000switch(LOW, _Await)=&gt;_next_state :- U{_delayed1000switch(LOW, _Await)} E{_now(_Curr) ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write__delayed1000switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: _now(T)=&gt;_curr_state :- U{_io_millis(T)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write__now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_4: switch(HIGH)=&gt;_curr_state :- E{_delayed1000switch(HIGH, _Await) _now(_Curr) ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_5: switch(LOW)=&gt;_curr_state :- E{_delayed1000switch(LOW, _Await) _now(_Curr) ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_digitalWrite(13, Value)=&gt;_next_state :- U{switch(Value)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">switch_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Value</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Value</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Value</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Value</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_millis(_)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_millis</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_pinOut(13)=&gt;_next_state :- E{_setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write__now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">write__setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">write_switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">do</span>\n<span class=\"w\">    </span><span class=\"p\">{</span><span class=\"w\">                           </span><span class=\"c1\">// stratum 3</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_added_facts</span><span class=\"p\">);</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_mini.dl",
      "template": "lego ev3",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n[setup]#pinOut(13)@next.\n\n.decl switch(int)\n[delay:1000]switch(#HIGH) :- switch(#LOW).\n[delay:1000]switch(#LOW) :- switch(#HIGH).\n\nswitch(#LOW)@0.\n#digitalWrite(13, Value)@next :- switch(Value).\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl _delayed1000switch/2(int, unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl switch/1(int)\n_now(0)@0.\nswitch(LOW)@0.\n_delayed1000switch(HIGH, _Await) :- _now(_Await), switch(LOW).\n_delayed1000switch(LOW, _Await) :- _now(_Await), switch(HIGH).\n_now(T) :- _io_millis(T).\nswitch(HIGH) :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\nswitch(LOW) :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\n_delayed1000switch(HIGH, _Await)@next :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n_delayed1000switch(LOW, _Await)@next :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n#_io_digitalWrite(13, Value)@next :- switch(Value).\n#_io_millis(_)@next :- .\n\n\nProgram 3:\n.decl _delayed1000switch/2(int, unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl switch/1(int)\n_setup()@0.\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"_now\"]\n3: fromList [\"_delayed1000switch\",\"switch\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm2_state = 3;\nbyte _fsm1_state = 6;\nunsigned long _fsm1_slot_1;\nunsigned long _fsm1_slot_2;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm2_state == 1)\n    {\n      {\n      _fsm2_trans1:\n        if (true)\n          {\n            _fsm2_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm2_state == 2)\n    {\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n        goto _fsm2_trans1;\n      }\n    }\n  else if (_fsm2_state == 3)\n    {\n      {\n      _fsm2_trans3:\n        if (true)\n          {\n            _fsm2_state = 2;\n          }\n        else;\n      }\n    }\n  else;\n  if (_fsm1_state == 7)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n      _fsm1_trans7:\n        if (((_fsm1_slot_1 < 1000) && (0 != _fsm1_slot_1))\n            || (0 == _fsm1_slot_1))\n          {\n            _fsm1_state = 1;\n          }\n        else if ((1000 <= _fsm1_slot_1) && (HIGH == LOW))\n          {\n            _fsm1_state = 8;\n          }\n        else if ((1000 <= _fsm1_slot_1) && (HIGH != LOW))\n          {\n            _fsm1_state = 12;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 1)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n        goto _fsm1_trans7;\n      }\n    }\n  else if (_fsm1_state == 8)\n    {\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_2 = _T;\n      }\n      {\n      _fsm1_trans8:\n        if (((_fsm1_slot_2 < _fsm1_slot_1 + 1000)\n             && (((HIGH == LOW) && (_fsm1_slot_1 != _fsm1_slot_2))\n                 || (HIGH != LOW))) || ((HIGH == LOW)\n                                        && (_fsm1_slot_1 == _fsm1_slot_2)))\n          {\n            _fsm1_state = 2;\n          }\n        else if ((_fsm1_slot_1 + 1000 <= _fsm1_slot_2) && (HIGH == LOW))\n          {\n            _fsm1_state = 10;\n          }\n        else if ((_fsm1_slot_1 + 1000 <= _fsm1_slot_2) && (HIGH != LOW))\n          {\n            _fsm1_state = 13;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 9)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_2 = _T;\n      }\n      {\n        goto _fsm1_trans8;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_2 = _T;\n      }\n      {\n        goto _fsm1_trans8;\n      }\n    }\n  else if (_fsm1_state == 10)\n    {\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n      _fsm1_trans10:\n        if (((_fsm1_slot_1 < _fsm1_slot_2 + 1000)\n             && (((HIGH == LOW) && (_fsm1_slot_1 != _fsm1_slot_2))\n                 || (HIGH != LOW))) || ((HIGH == LOW)\n                                        && (_fsm1_slot_1 == _fsm1_slot_2)))\n          {\n            _fsm1_state = 3;\n          }\n        else if ((_fsm1_slot_2 + 1000 <= _fsm1_slot_1) && (HIGH == LOW))\n          {\n            _fsm1_state = 8;\n          }\n        else if ((_fsm1_slot_2 + 1000 <= _fsm1_slot_1) && (HIGH != LOW))\n          {\n            _fsm1_state = 12;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 11)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n        goto _fsm1_trans10;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n        goto _fsm1_trans10;\n      }\n    }\n  else if (_fsm1_state == 12)\n    {\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_2 = _T;\n      }\n      {\n      _fsm1_trans12:\n        if ((_fsm1_slot_2 < _fsm1_slot_1 + 1000) && (HIGH == LOW))\n          {\n            _fsm1_state = 2;\n          }\n        else if ((_fsm1_slot_2 < _fsm1_slot_1 + 1000) && (HIGH != LOW))\n          {\n            _fsm1_state = 4;\n          }\n        else if ((_fsm1_slot_1 + 1000 <= _fsm1_slot_2) && (HIGH == LOW))\n          {\n            _fsm1_state = 10;\n          }\n        else if ((_fsm1_slot_1 + 1000 <= _fsm1_slot_2) && (HIGH != LOW))\n          {\n            _fsm1_state = 11;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_2 = _T;\n      }\n      {\n        goto _fsm1_trans12;\n      }\n    }\n  else if (_fsm1_state == 13)\n    {\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n      _fsm1_trans13:\n        if ((_fsm1_slot_1 < _fsm1_slot_2 + 1000) && (HIGH == LOW))\n          {\n            _fsm1_state = 3;\n          }\n        else if ((_fsm1_slot_1 < _fsm1_slot_2 + 1000) && (HIGH != LOW))\n          {\n            _fsm1_state = 5;\n          }\n        else if ((_fsm1_slot_2 + 1000 <= _fsm1_slot_1) && (HIGH == LOW))\n          {\n            _fsm1_state = 8;\n          }\n        else if ((_fsm1_slot_2 + 1000 <= _fsm1_slot_1) && (HIGH != LOW))\n          {\n            _fsm1_state = 9;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 5)\n    {\n      {\n        unsigned long _T = millis ();\n        _fsm1_slot_1 = _T;\n      }\n      {\n        goto _fsm1_trans13;\n      }\n    }\n  else if (_fsm1_state == 6)\n    {\n      {\n      _fsm1_trans6:\n        if (true)\n          {\n            _fsm1_state = 7;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl _delayed1000switch/2(int, unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl switch/1(int)</span>\n<span class=\"cm\">_now(0)@0.</span>\n<span class=\"cm\">switch(LOW)@0.</span>\n<span class=\"cm\">_delayed1000switch(HIGH, _Await) :- _now(_Await), switch(LOW).</span>\n<span class=\"cm\">_delayed1000switch(LOW, _Await) :- _now(_Await), switch(HIGH).</span>\n<span class=\"cm\">_now(T) :- _io_millis(T).</span>\n<span class=\"cm\">switch(HIGH) :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">switch(LOW) :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">_delayed1000switch(HIGH, _Await)@next :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">_delayed1000switch(LOW, _Await)@next :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">#_io_digitalWrite(13, Value)@next :- switch(Value).</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl _delayed1000switch/2(int, unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl switch/1(int)</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;_delayed1000switch&quot;,&quot;switch&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans7</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">))</span>\n<span class=\"w\">            </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans7</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans8</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">             </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">))</span>\n<span class=\"w\">                 </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)))</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span>\n<span class=\"w\">                                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans8</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans8</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans10</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">             </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">))</span>\n<span class=\"w\">                 </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)))</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span>\n<span class=\"w\">                                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans10</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans10</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans12</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans12</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans13</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans13</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"n\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_mini.dl",
      "template": "lego ev3",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n[setup]#pinOut(13)@next.\n\n.decl switch(int)\n[delay:1000]switch(#HIGH) :- switch(#LOW).\n[delay:1000]switch(#LOW) :- switch(#HIGH).\n\nswitch(#LOW)@0.\n#digitalWrite(13, Value)@next :- switch(Value).\n",
      "tsource": "/*\nProgram 1:\n.decl _delayed1000switch/2(int, unsigned long)\n.decl _now/1(unsigned long)\n.decl _setup/0()\n.decl switch/1(int)\n_now(0)@0.\n_setup()@0.\nswitch(LOW)@0.\n_delayed1000switch(HIGH, _Await) :- _now(_Await), switch(LOW).\n_delayed1000switch(LOW, _Await) :- _now(_Await), switch(HIGH).\n_now(T) :- _io_millis(T).\nswitch(HIGH) :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\nswitch(LOW) :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\").\n_delayed1000switch(HIGH, _Await)@next :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n_delayed1000switch(LOW, _Await)@next :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000).\n#_io_digitalWrite(13, Value)@next :- switch(Value).\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"_now\"]\n3: fromList [\"_delayed1000switch\",\"switch\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 3\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__delayed1000switch 1 + sizeof(int)+ sizeof(unsigned long)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_millis 1 + sizeof(unsigned long)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size__now 1 + sizeof(unsigned long)\n#define _size__setup 1\n#define _size_switch 1 + sizeof(int)\nbyte _sizes[8] =\n  { 0, _size__delayed1000switch, _size__io_digitalWrite, _size__io_millis,\n_size__io_pinOut, _size__now, _size__setup, _size_switch\n};\n\n#define _type__delayed1000switch 1\n#define _type__io_digitalWrite 2\n#define _type__io_millis 3\n#define _type__io_pinOut 4\n#define _type__now 5\n#define _type__setup 6\n#define _type_switch 7\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline int\n_delayed1000switch_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline unsigned long\n_delayed1000switch_2 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1 + sizeof (int));\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline unsigned long\n_io_millis_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline unsigned long\n_now_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline int\nswitch_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_int (byte *buf, byte type, int a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < int >(free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_int_unsigned_long (byte *buf, byte type, int a1, unsigned long a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < int >(free, a1);\n  free = _write_data < unsigned long >(free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_unsigned_long (byte *buf, byte type, unsigned long a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < unsigned long >(free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__delayed1000switch(buf, a1, a2) _write_fact_int_unsigned_long(buf, _type__delayed1000switch, a1, a2)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write__now(buf, a1) _write_fact_unsigned_long(buf, _type__now, a1)\n#define write__setup(buf) _write_fact_(buf, _type__setup)\n#define write_switch(buf, a1) _write_fact_int(buf, _type_switch, a1)\n\n#define _delayed1000switch_ff(buf) _next__fact(buf,_type__delayed1000switch)\n\nbyte *\n_delayed1000switch_fb (byte *buf, unsigned long a2)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000switch)) != 0)\n    {\n      if (_delayed1000switch_2 (buf) != a2)\n        {\n          buf = buf + _size__delayed1000switch;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_delayed1000switch_bf (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000switch)) != 0)\n    {\n      if (_delayed1000switch_1 (buf) != a1)\n        {\n          buf = buf + _size__delayed1000switch;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_delayed1000switch_bb (byte *buf, int a1, unsigned long a2)\n{\n  while ((buf = _next__fact (buf, _type__delayed1000switch)) != 0)\n    {\n      if (_delayed1000switch_1 (buf) != a1\n          || _delayed1000switch_2 (buf) != a2)\n        {\n          buf = buf + _size__delayed1000switch;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)\n\nbyte *\n_io_millis_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__io_millis)) != 0)\n    {\n      if (_io_millis_1 (buf) != a1)\n        {\n          buf = buf + _size__io_millis;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _now_f(buf) _next__fact(buf,_type__now)\n\nbyte *\n_now_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__now)) != 0)\n    {\n      if (_now_1 (buf) != a1)\n        {\n          buf = buf + _size__now;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _setup_(buf) _next__fact(buf,_type__setup)\n\n#define switch_f(buf) _next__fact(buf,_type_switch)\n\nbyte *\nswitch_b (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type_switch)) != 0)\n    {\n      if (switch_1 (buf) != a1)\n        {\n          buf = buf + _size_switch;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: _delayed1000switch(HIGH, _Await)=>_curr_state :- E{switch(LOW)} U{_now(_Await)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (switch_b (_curr_state, LOW) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Await = _now_1 (_tuple2);\n          if (_delayed1000switch_bf (_curr_state, HIGH, _Await) == 0)\n            {\n              write__delayed1000switch (_curr_state, HIGH, _Await);\n              _added_facts = true;\n            }\n          _tuple2 += _size__now;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_1: _delayed1000switch(HIGH, _Await)=>_next_state :- U{_delayed1000switch(HIGH, _Await)} E{_now(_Curr) ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000)}.\nvoid\n_inductive_rule_1 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000switch_bf (_tuple1, HIGH)) != 0)\n    {\n      unsigned long _Await = _delayed1000switch_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Curr < _Await + 1000)\n            {\n              if (_delayed1000switch_bf (_next_state, HIGH, _Await) == 0)\n                {\n                  write__delayed1000switch (_next_state, HIGH, _Await);\n                }\n              goto jmp1;\n            }\n          _tuple2 += _size__now;\n        }\n    jmp1:;\n      _tuple1 += _size__delayed1000switch;\n    }\n};\n\n// _deductive_rule_2: _delayed1000switch(LOW, _Await)=>_curr_state :- E{switch(HIGH)} U{_now(_Await)}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  if (switch_b (_curr_state, HIGH) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Await = _now_1 (_tuple2);\n          if (_delayed1000switch_bf (_curr_state, LOW, _Await) == 0)\n            {\n              write__delayed1000switch (_curr_state, LOW, _Await);\n              _added_facts = true;\n            }\n          _tuple2 += _size__now;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_2: _delayed1000switch(LOW, _Await)=>_next_state :- U{_delayed1000switch(LOW, _Await)} E{_now(_Curr) ArithComp (ArithLT \"_Curr\" \"_Await\"+ConstInt 1000)}.\nvoid\n_inductive_rule_2 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000switch_bf (_tuple1, LOW)) != 0)\n    {\n      unsigned long _Await = _delayed1000switch_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Curr < _Await + 1000)\n            {\n              if (_delayed1000switch_bf (_next_state, LOW, _Await) == 0)\n                {\n                  write__delayed1000switch (_next_state, LOW, _Await);\n                }\n              goto jmp1;\n            }\n          _tuple2 += _size__now;\n        }\n    jmp1:;\n      _tuple1 += _size__delayed1000switch;\n    }\n};\n\n// _deductive_rule_3: _now(T)=>_curr_state :- U{_io_millis(T)}.\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_millis_f (_tuple1)) != 0)\n    {\n      unsigned long T = _io_millis_1 (_tuple1);\n      if (_now_f (_curr_state, T) == 0)\n        {\n          write__now (_curr_state, T);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_millis;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_4: switch(HIGH)=>_curr_state :- E{_delayed1000switch(HIGH, _Await) _now(_Curr) ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\")}.\nbool\n_deductive_rule_4 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000switch_bf (_tuple1, HIGH)) != 0)\n    {\n      unsigned long _Await = _delayed1000switch_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Await + 1000 <= _Curr)\n            {\n              if (switch_b (_curr_state, HIGH) == 0)\n                {\n                  write_switch (_curr_state, HIGH);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size__now;\n        }\n      _tuple1 += _size__delayed1000switch;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_5: switch(LOW)=>_curr_state :- E{_delayed1000switch(LOW, _Await) _now(_Curr) ArithComp (ArithLEQ \"_Await\"+ConstInt 1000 \"_Curr\")}.\nbool\n_deductive_rule_5 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _delayed1000switch_bf (_tuple1, LOW)) != 0)\n    {\n      unsigned long _Await = _delayed1000switch_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = _now_f (_tuple2)) != 0)\n        {\n          unsigned long _Curr = _now_1 (_tuple2);\n          if (_Await + 1000 <= _Curr)\n            {\n              if (switch_b (_curr_state, LOW) == 0)\n                {\n                  write_switch (_curr_state, LOW);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size__now;\n        }\n      _tuple1 += _size__delayed1000switch;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_3: #_io_digitalWrite(13, Value)=>_next_state :- U{switch(Value)}.\nvoid\n_inductive_rule_3 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = switch_f (_tuple1)) != 0)\n    {\n      int Value = switch_1 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, Value)) == 0)\n        {\n          // make io call\n          digitalWrite (13, Value);\n          write__io_digitalWrite (_next_state, 13, Value);\n        }\n      _tuple1 += _size_switch;\n    }\n};\n\n// _inductive_rule_4: #_io_millis(_)=>_next_state :- .\nvoid\n_inductive_rule_4 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_millis_f (_next_state)) == 0)\n    {\n// make io call\n      unsigned long _T = millis ();\n      write__io_millis (_next_state, _T);\n    }\n};\n\n// _inductive_rule_5: #_io_pinOut(13)=>_next_state :- E{_setup()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (_setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write__now (_curr_state, 0);\n  _added_facts = true;\n  write__setup (_curr_state);\n  _added_facts = true;\n  write_switch (_curr_state, LOW);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n// stratum 2\n  _deductive_rule_3 ();\n  do\n    {                           // stratum 3\n      _added_facts = false;\n      _added_facts |= _deductive_rule_1 ();\n      _added_facts |= _deductive_rule_2 ();\n      _added_facts |= _deductive_rule_4 ();\n      _added_facts |= _deductive_rule_5 ();\n    }\n  while (_added_facts);\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl _delayed1000switch/2(int, unsigned long)</span>\n<span class=\"cm\">.decl _now/1(unsigned long)</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl switch/1(int)</span>\n<span class=\"cm\">_now(0)@0.</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">switch(LOW)@0.</span>\n<span class=\"cm\">_delayed1000switch(HIGH, _Await) :- _now(_Await), switch(LOW).</span>\n<span class=\"cm\">_delayed1000switch(LOW, _Await) :- _now(_Await), switch(HIGH).</span>\n<span class=\"cm\">_now(T) :- _io_millis(T).</span>\n<span class=\"cm\">switch(HIGH) :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">switch(LOW) :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;).</span>\n<span class=\"cm\">_delayed1000switch(HIGH, _Await)@next :- _delayed1000switch(HIGH, _Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">_delayed1000switch(LOW, _Await)@next :- _delayed1000switch(LOW, _Await), _now(_Curr), ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000).</span>\n<span class=\"cm\">#_io_digitalWrite(13, Value)@next :- switch(Value).</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;_delayed1000switch&quot;,&quot;switch&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 3</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__delayed1000switch 1 + sizeof(int)+ sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_millis 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__now 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__setup 1</span>\n<span class=\"cp\">#define _size_switch 1 + sizeof(int)</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">8</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__setup</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_switch</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__delayed1000switch 1</span>\n<span class=\"cp\">#define _type__io_digitalWrite 2</span>\n<span class=\"cp\">#define _type__io_millis 3</span>\n<span class=\"cp\">#define _type__io_pinOut 4</span>\n<span class=\"cp\">#define _type__now 5</span>\n<span class=\"cp\">#define _type__setup 6</span>\n<span class=\"cp\">#define _type_switch 7</span>\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_delayed1000switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_int_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__delayed1000switch(buf, a1, a2) _write_fact_int_unsigned_long(buf, _type__delayed1000switch, a1, a2)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write__now(buf, a1) _write_fact_unsigned_long(buf, _type__now, a1)</span>\n<span class=\"cp\">#define write__setup(buf) _write_fact_(buf, _type__setup)</span>\n<span class=\"cp\">#define write_switch(buf, a1) _write_fact_int(buf, _type_switch, a1)</span>\n\n<span class=\"cp\">#define _delayed1000switch_ff(buf) _next__fact(buf,_type__delayed1000switch)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_delayed1000switch_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000switch</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000switch</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_delayed1000switch_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__delayed1000switch</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span>\n<span class=\"w\">          </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_millis_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_millis</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _now_f(buf) _next__fact(buf,_type__now)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_now_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__now</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _setup_(buf) _next__fact(buf,_type__setup)</span>\n\n<span class=\"cp\">#define switch_f(buf) _next__fact(buf,_type_switch)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_switch</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_switch</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: _delayed1000switch(HIGH, _Await)=&gt;_curr_state :- E{switch(LOW)} U{_now(_Await)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write__delayed1000switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: _delayed1000switch(HIGH, _Await)=&gt;_next_state :- U{_delayed1000switch(HIGH, _Await)} E{_now(_Curr) ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write__delayed1000switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: _delayed1000switch(LOW, _Await)=&gt;_curr_state :- E{switch(HIGH)} U{_now(_Await)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write__delayed1000switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: _delayed1000switch(LOW, _Await)=&gt;_next_state :- U{_delayed1000switch(LOW, _Await)} E{_now(_Curr) ArithComp (ArithLT &quot;_Curr&quot; &quot;_Await&quot;+ConstInt 1000)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write__delayed1000switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"p\">);</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: _now(T)=&gt;_curr_state :- U{_io_millis(T)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write__now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_4: switch(HIGH)=&gt;_curr_state :- E{_delayed1000switch(HIGH, _Await) _now(_Curr) ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_5: switch(LOW)=&gt;_curr_state :- E{_delayed1000switch(LOW, _Await) _now(_Curr) ArithComp (ArithLEQ &quot;_Await&quot;+ConstInt 1000 &quot;_Curr&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_delayed1000switch_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_Await</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_Curr</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">switch_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__delayed1000switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_digitalWrite(13, Value)=&gt;_next_state :- U{switch(Value)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">switch_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Value</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">switch_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Value</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Value</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Value</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_switch</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_millis(_)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_millis</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_T</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_pinOut(13)=&gt;_next_state :- E{_setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write__now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">write__setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">write_switch</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">do</span>\n<span class=\"w\">    </span><span class=\"p\">{</span><span class=\"w\">                           </span><span class=\"c1\">// stratum 3</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_added_facts</span><span class=\"p\">);</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"nf\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_small.dl",
      "template": "no runtime",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n#millis(X: unsigned long) = {unsigned long X = millis();}\n\n% Declarations\n.decl off_since(unsigned long)\n.decl setup\n.decl now(unsigned long)\n.decl on_since(unsigned long)\n.decl turn_off\n.decl turn_on\n\n% Deduction\nturn_off :- on_since(P), now(T), P+1000 < T.\nturn_on :- off_since(P), now(T), P+1000 < T.\n\n% Induction\non_since(P)@next :- !turn_off, on_since(P).\non_since(T)@next :- turn_on, now(T).\noff_since(P)@next :- !turn_on, off_since(P).\noff_since(T)@next :- turn_off, now(T).\n\n% Input\nnow(X) :- #millis(X).\n#millis(?)@next.\n\n% Setup and Initialization\nsetup@0.\noff_since(0)@0.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\noff_since(0)@0.\nnow(X) :- _io_millis(X).\nturn_off() :- now(T), on_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\nturn_on() :- now(T), off_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\noff_since(P)@next :- off_since(P), !turn_on().\noff_since(T)@next :- now(T), turn_off().\non_since(P)@next :- on_since(P), !turn_off().\non_since(T)@next :- now(T), turn_on().\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n\n\nProgram 3:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\nsetup()@0.\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"now\"]\n3: fromList [\"off_since\"]\n4: fromList [\"on_since\"]\n5: fromList [\"turn_off\"]\n6: fromList [\"turn_on\"]\n*/\n\n#define _rulecount 0\n#define _bufsize 256\n\nbyte _fsm2_state = 3;\nbyte _fsm1_state = 1;\nunsigned long _fsm1_slot_1;\nunsigned long _fsm1_slot_2;\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n/* SETUP */\n\n\n/* LOOP */\n\nif (_fsm2_state == 1)\n  {\n    {\n    _fsm2_trans1:\n      if (true)\n        {\n          _fsm2_state = 1;\n        }\n      else;\n    }\n  }\nelse if (_fsm2_state == 2)\n  {\n    {\n      pinMode (13, OUTPUT);\n    }\n    {\n      goto _fsm2_trans1;\n    }\n  }\nelse if (_fsm2_state == 3)\n  {\n    {\n    _fsm2_trans3:\n      if (true)\n        {\n          _fsm2_state = 2;\n        }\n      else;\n    }\n  }\nelse;\nif (_fsm1_state == 5)\n  {\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n      unsigned long X = millis ();\n      _fsm1_slot_2 = X;\n    }\n    {\n    _fsm1_trans5:\n      if (_fsm1_slot_1 + 1000 < _fsm1_slot_2)\n        {\n          _fsm1_state = 6;\n        }\n      else if (_fsm1_slot_2 <= _fsm1_slot_1 + 1000)\n        {\n          _fsm1_state = 4;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 6)\n  {\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      unsigned long X = millis ();\n      _fsm1_slot_1 = X;\n    }\n    {\n    _fsm1_trans6:\n      if (_fsm1_slot_2 + 1000 < _fsm1_slot_1)\n        {\n          _fsm1_state = 5;\n        }\n      else if (_fsm1_slot_1 <= _fsm1_slot_2 + 1000)\n        {\n          _fsm1_state = 3;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 2)\n  {\n    {\n      unsigned long X = millis ();\n      _fsm1_slot_1 = X;\n    }\n    {\n    _fsm1_trans2:\n      if (1000 < _fsm1_slot_1)\n        {\n          _fsm1_state = 5;\n        }\n      else if (_fsm1_slot_1 <= 1000)\n        {\n          _fsm1_state = 2;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 3)\n  {\n    {\n      unsigned long X = millis ();\n      _fsm1_slot_1 = X;\n    }\n    {\n      goto _fsm1_trans6;\n    }\n  }\nelse if (_fsm1_state == 4)\n  {\n    {\n      unsigned long X = millis ();\n      _fsm1_slot_2 = X;\n    }\n    {\n      goto _fsm1_trans5;\n    }\n  }\nelse if (_fsm1_state == 1)\n  {\n    {\n    _fsm1_trans1:\n      if (true)\n        {\n          _fsm1_state = 2;\n        }\n      else;\n    }\n  }\nelse;\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">off_since(0)@0.</span>\n<span class=\"cm\">now(X) :- _io_millis(X).</span>\n<span class=\"cm\">turn_off() :- now(T), on_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">turn_on() :- now(T), off_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">off_since(P)@next :- off_since(P), !turn_on().</span>\n<span class=\"cm\">off_since(T)@next :- now(T), turn_off().</span>\n<span class=\"cm\">on_since(P)@next :- on_since(P), !turn_off().</span>\n<span class=\"cm\">on_since(T)@next :- now(T), turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;off_since&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;on_since&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;turn_off&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">;</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cm\">/* SETUP */</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm2_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans5</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans6</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans5</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_small.dl",
      "template": "no runtime",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n#millis(X: unsigned long) = {unsigned long X = millis();}\n\n% Declarations\n.decl off_since(unsigned long)\n.decl setup\n.decl now(unsigned long)\n.decl on_since(unsigned long)\n.decl turn_off\n.decl turn_on\n\n% Deduction\nturn_off :- on_since(P), now(T), P+1000 < T.\nturn_on :- off_since(P), now(T), P+1000 < T.\n\n% Induction\non_since(P)@next :- !turn_off, on_since(P).\non_since(T)@next :- turn_on, now(T).\noff_since(P)@next :- !turn_on, off_since(P).\noff_since(T)@next :- turn_off, now(T).\n\n% Input\nnow(X) :- #millis(X).\n#millis(?)@next.\n\n% Setup and Initialization\nsetup@0.\noff_since(0)@0.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n",
      "tsource": "/*\nProgram 1:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\noff_since(0)@0.\nsetup()@0.\nnow(X) :- _io_millis(X).\nturn_off() :- now(T), on_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\nturn_on() :- now(T), off_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\noff_since(P)@next :- off_since(P), !turn_on().\noff_since(T)@next :- now(T), turn_off().\non_since(P)@next :- on_since(P), !turn_off().\non_since(T)@next :- now(T), turn_on().\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"now\"]\n3: fromList [\"off_since\"]\n4: fromList [\"on_since\"]\n5: fromList [\"turn_off\"]\n6: fromList [\"turn_on\"]\n*/\n\n#define _rulecount 4\n#define _bufsize 256\n\n\n\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_millis 1 + sizeof(unsigned long)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_now 1 + sizeof(unsigned long)\n#define _size_off_since 1 + sizeof(unsigned long)\n#define _size_on_since 1 + sizeof(unsigned long)\n#define _size_setup 1\n#define _size_turn_off 1\n#define _size_turn_on 1\nbyte _sizes[10] =\n  { 0, _size__io_digitalWrite, _size__io_millis, _size__io_pinOut, _size_now,\n_size_off_since, _size_on_since, _size_setup, _size_turn_off, _size_turn_on\n};\n\n#define _type__io_digitalWrite 1\n#define _type__io_millis 2\n#define _type__io_pinOut 3\n#define _type_now 4\n#define _type_off_since 5\n#define _type_on_since 6\n#define _type_setup 7\n#define _type_turn_off 8\n#define _type_turn_on 9\n\n\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline unsigned long\n_io_millis_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline unsigned long\nnow_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\noff_since_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\non_since_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_unsigned_long (byte *buf, byte type, unsigned long a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < unsigned long >(free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_now(buf, a1) _write_fact_unsigned_long(buf, _type_now, a1)\n#define write_off_since(buf, a1) _write_fact_unsigned_long(buf, _type_off_since, a1)\n#define write_on_since(buf, a1) _write_fact_unsigned_long(buf, _type_on_since, a1)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)\n#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)\n\nbyte *\n_io_millis_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__io_millis)) != 0)\n    {\n      if (_io_millis_1 (buf) != a1)\n        {\n          buf = buf + _size__io_millis;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define now_f(buf) _next__fact(buf,_type_now)\n\nbyte *\nnow_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_now)) != 0)\n    {\n      if (now_1 (buf) != a1)\n        {\n          buf = buf + _size_now;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define off_since_f(buf) _next__fact(buf,_type_off_since)\n\nbyte *\noff_since_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_off_since)) != 0)\n    {\n      if (off_since_1 (buf) != a1)\n        {\n          buf = buf + _size_off_since;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define on_since_f(buf) _next__fact(buf,_type_on_since)\n\nbyte *\non_since_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_on_since)) != 0)\n    {\n      if (on_since_1 (buf) != a1)\n        {\n          buf = buf + _size_on_since;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n#define turn_off_(buf) _next__fact(buf,_type_turn_off)\n\n#define turn_on_(buf) _next__fact(buf,_type_turn_on)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: now(X)=>_curr_state :- U{_io_millis(X)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_millis_f (_tuple1)) != 0)\n    {\n      unsigned long X = _io_millis_1 (_tuple1);\n      if (now_f (_curr_state, X) == 0)\n        {\n          write_now (_curr_state, X);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_millis;\n    }\n  return _added_facts;\n};\n\n// _inductive_rule_1: off_since(P)=>_next_state :- E{!turn_on()} U{off_since(P)}.\nvoid\n_inductive_rule_1 ()\n{\n  if (turn_on_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _curr_state;\n      while ((_tuple1 = off_since_f (_tuple1)) != 0)\n        {\n          unsigned long P = off_since_1 (_tuple1);\n          if (off_since_f (_next_state, P) == 0)\n            {\n              write_off_since (_next_state, P);\n            }\n          _tuple1 += _size_off_since;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: off_since(T)=>_next_state :- E{turn_off()} U{now(T)}.\nvoid\n_inductive_rule_2 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = now_f (_tuple2)) != 0)\n        {\n          unsigned long T = now_1 (_tuple2);\n          if (off_since_f (_next_state, T) == 0)\n            {\n              write_off_since (_next_state, T);\n            }\n          _tuple2 += _size_now;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: on_since(P)=>_next_state :- E{!turn_off()} U{on_since(P)}.\nvoid\n_inductive_rule_3 ()\n{\n  if (turn_off_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _curr_state;\n      while ((_tuple1 = on_since_f (_tuple1)) != 0)\n        {\n          unsigned long P = on_since_1 (_tuple1);\n          if (on_since_f (_next_state, P) == 0)\n            {\n              write_on_since (_next_state, P);\n            }\n          _tuple1 += _size_on_since;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: on_since(T)=>_next_state :- E{turn_on()} U{now(T)}.\nvoid\n_inductive_rule_4 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = now_f (_tuple2)) != 0)\n        {\n          unsigned long T = now_1 (_tuple2);\n          if (on_since_f (_next_state, T) == 0)\n            {\n              write_on_since (_next_state, T);\n            }\n          _tuple2 += _size_now;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _deductive_rule_2: turn_off()=>_curr_state :- E{now(T) on_since(P) ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\")}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = now_f (_tuple1)) != 0)\n    {\n      unsigned long T = now_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = on_since_f (_tuple2)) != 0)\n        {\n          unsigned long P = on_since_1 (_tuple2);\n          if (P + 1000 < T)\n            {\n              if (turn_off_ (_curr_state) == 0)\n                {\n                  write_turn_off (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size_on_since;\n        }\n      _tuple1 += _size_now;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_3: turn_on()=>_curr_state :- E{now(T) off_since(P) ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\")}.\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = now_f (_tuple1)) != 0)\n    {\n      unsigned long T = now_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = off_since_f (_tuple2)) != 0)\n        {\n          unsigned long P = off_since_1 (_tuple2);\n          if (P + 1000 < T)\n            {\n              if (turn_on_ (_curr_state) == 0)\n                {\n                  write_turn_on (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size_off_since;\n        }\n      _tuple1 += _size_now;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=>_next_state :- E{turn_on()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_digitalWrite(13, LOW)=>_next_state :- E{turn_off()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_millis(_)=>_next_state :- .\nvoid\n_inductive_rule_7 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_millis_f (_next_state)) == 0)\n    {\n// make io call\n      unsigned long X = millis ();\n      write__io_millis (_next_state, X);\n    }\n};\n\n// _inductive_rule_8: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n/* SETUP */\nwrite_off_since (_curr_state, 0);\n_added_facts = true;\nwrite_setup (_curr_state);\n_added_facts = true;\n\n\n/* LOOP */\n\n\n\n// deductive phase\n\n// stratum 2\n_deductive_rule_1 ();\n\n\n// stratum 5\n_deductive_rule_2 ();\n// stratum 6\n_deductive_rule_3 ();\n// inductive_phase\n_inductive_rule_1 ();\n_inductive_rule_2 ();\n_inductive_rule_3 ();\n_inductive_rule_4 ();\n_inductive_rule_5 ();\n_inductive_rule_6 ();\n_inductive_rule_7 ();\n_inductive_rule_8 ();\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">off_since(0)@0.</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">now(X) :- _io_millis(X).</span>\n<span class=\"cm\">turn_off() :- now(T), on_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">turn_on() :- now(T), off_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">off_since(P)@next :- off_since(P), !turn_on().</span>\n<span class=\"cm\">off_since(T)@next :- now(T), turn_off().</span>\n<span class=\"cm\">on_since(P)@next :- on_since(P), !turn_off().</span>\n<span class=\"cm\">on_since(T)@next :- now(T), turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;off_since&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;on_since&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;turn_off&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n\n\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_millis 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_now 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_off_since 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_on_since 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"cp\">#define _size_turn_off 1</span>\n<span class=\"cp\">#define _size_turn_on 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">10</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">,</span>\n<span class=\"n\">_size_off_since</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_setup</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_on</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalWrite 1</span>\n<span class=\"cp\">#define _type__io_millis 2</span>\n<span class=\"cp\">#define _type__io_pinOut 3</span>\n<span class=\"cp\">#define _type_now 4</span>\n<span class=\"cp\">#define _type_off_since 5</span>\n<span class=\"cp\">#define _type_on_since 6</span>\n<span class=\"cp\">#define _type_setup 7</span>\n<span class=\"cp\">#define _type_turn_off 8</span>\n<span class=\"cp\">#define _type_turn_on 9</span>\n\n\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"nf\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_now(buf, a1) _write_fact_unsigned_long(buf, _type_now, a1)</span>\n<span class=\"cp\">#define write_off_since(buf, a1) _write_fact_unsigned_long(buf, _type_off_since, a1)</span>\n<span class=\"cp\">#define write_on_since(buf, a1) _write_fact_unsigned_long(buf, _type_on_since, a1)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n<span class=\"cp\">#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)</span>\n<span class=\"cp\">#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_millis_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_millis</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define now_f(buf) _next__fact(buf,_type_now)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">now_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_now</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define off_since_f(buf) _next__fact(buf,_type_off_since)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">off_since_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_off_since</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define on_since_f(buf) _next__fact(buf,_type_on_since)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">on_since_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_on_since</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n<span class=\"cp\">#define turn_off_(buf) _next__fact(buf,_type_turn_off)</span>\n\n<span class=\"cp\">#define turn_on_(buf) _next__fact(buf,_type_turn_on)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: now(X)=&gt;_curr_state :- U{_io_millis(X)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: off_since(P)=&gt;_next_state :- E{!turn_on()} U{off_since(P)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: off_since(T)=&gt;_next_state :- E{turn_off()} U{now(T)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: on_since(P)=&gt;_next_state :- E{!turn_off()} U{on_since(P)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: on_since(T)=&gt;_next_state :- E{turn_on()} U{now(T)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: turn_off()=&gt;_curr_state :- E{now(T) on_since(P) ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: turn_on()=&gt;_curr_state :- E{now(T) off_since(P) ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{turn_on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{turn_off()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_millis(_)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_millis</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cm\">/* SETUP */</span>\n<span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n\n\n<span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"c1\">// stratum 5</span>\n<span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 6</span>\n<span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_small.dl",
      "template": "arduino",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n#millis(X: unsigned long) = {unsigned long X = millis();}\n\n% Declarations\n.decl off_since(unsigned long)\n.decl setup\n.decl now(unsigned long)\n.decl on_since(unsigned long)\n.decl turn_off\n.decl turn_on\n\n% Deduction\nturn_off :- on_since(P), now(T), P+1000 < T.\nturn_on :- off_since(P), now(T), P+1000 < T.\n\n% Induction\non_since(P)@next :- !turn_off, on_since(P).\non_since(T)@next :- turn_on, now(T).\noff_since(P)@next :- !turn_on, off_since(P).\noff_since(T)@next :- turn_off, now(T).\n\n% Input\nnow(X) :- #millis(X).\n#millis(?)@next.\n\n% Setup and Initialization\nsetup@0.\noff_since(0)@0.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\noff_since(0)@0.\nnow(X) :- _io_millis(X).\nturn_off() :- now(T), on_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\nturn_on() :- now(T), off_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\noff_since(P)@next :- off_since(P), !turn_on().\noff_since(T)@next :- now(T), turn_off().\non_since(P)@next :- on_since(P), !turn_off().\non_since(T)@next :- now(T), turn_on().\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n\n\nProgram 3:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\nsetup()@0.\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"now\"]\n3: fromList [\"off_since\"]\n4: fromList [\"on_since\"]\n5: fromList [\"turn_off\"]\n6: fromList [\"turn_on\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm2_state = 3;\nbyte _fsm1_state = 1;\nunsigned long _fsm1_slot_1;\nunsigned long _fsm1_slot_2;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm2_state == 1)\n    {\n      {\n      _fsm2_trans1:\n        if (true)\n          {\n            _fsm2_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm2_state == 2)\n    {\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n        goto _fsm2_trans1;\n      }\n    }\n  else if (_fsm2_state == 3)\n    {\n      {\n      _fsm2_trans3:\n        if (true)\n          {\n            _fsm2_state = 2;\n          }\n        else;\n      }\n    }\n  else;\n  if (_fsm1_state == 5)\n    {\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_2 = X;\n      }\n      {\n      _fsm1_trans5:\n        if (_fsm1_slot_1 + 1000 < _fsm1_slot_2)\n          {\n            _fsm1_state = 6;\n          }\n        else if (_fsm1_slot_2 <= _fsm1_slot_1 + 1000)\n          {\n            _fsm1_state = 4;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 6)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_1 = X;\n      }\n      {\n      _fsm1_trans6:\n        if (_fsm1_slot_2 + 1000 < _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else if (_fsm1_slot_1 <= _fsm1_slot_2 + 1000)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_1 = X;\n      }\n      {\n      _fsm1_trans2:\n        if (1000 < _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else if (_fsm1_slot_1 <= 1000)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_1 = X;\n      }\n      {\n        goto _fsm1_trans6;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_2 = X;\n      }\n      {\n        goto _fsm1_trans5;\n      }\n    }\n  else if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">off_since(0)@0.</span>\n<span class=\"cm\">now(X) :- _io_millis(X).</span>\n<span class=\"cm\">turn_off() :- now(T), on_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">turn_on() :- now(T), off_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">off_since(P)@next :- off_since(P), !turn_on().</span>\n<span class=\"cm\">off_since(T)@next :- now(T), turn_off().</span>\n<span class=\"cm\">on_since(P)@next :- on_since(P), !turn_off().</span>\n<span class=\"cm\">on_since(T)@next :- now(T), turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;off_since&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;on_since&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;turn_off&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans5</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans6</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans5</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_small.dl",
      "template": "arduino",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n#millis(X: unsigned long) = {unsigned long X = millis();}\n\n% Declarations\n.decl off_since(unsigned long)\n.decl setup\n.decl now(unsigned long)\n.decl on_since(unsigned long)\n.decl turn_off\n.decl turn_on\n\n% Deduction\nturn_off :- on_since(P), now(T), P+1000 < T.\nturn_on :- off_since(P), now(T), P+1000 < T.\n\n% Induction\non_since(P)@next :- !turn_off, on_since(P).\non_since(T)@next :- turn_on, now(T).\noff_since(P)@next :- !turn_on, off_since(P).\noff_since(T)@next :- turn_off, now(T).\n\n% Input\nnow(X) :- #millis(X).\n#millis(?)@next.\n\n% Setup and Initialization\nsetup@0.\noff_since(0)@0.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n",
      "tsource": "/*\nProgram 1:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\noff_since(0)@0.\nsetup()@0.\nnow(X) :- _io_millis(X).\nturn_off() :- now(T), on_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\nturn_on() :- now(T), off_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\noff_since(P)@next :- off_since(P), !turn_on().\noff_since(T)@next :- now(T), turn_off().\non_since(P)@next :- on_since(P), !turn_off().\non_since(T)@next :- now(T), turn_on().\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"now\"]\n3: fromList [\"off_since\"]\n4: fromList [\"on_since\"]\n5: fromList [\"turn_off\"]\n6: fromList [\"turn_on\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 4\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_millis 1 + sizeof(unsigned long)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_now 1 + sizeof(unsigned long)\n#define _size_off_since 1 + sizeof(unsigned long)\n#define _size_on_since 1 + sizeof(unsigned long)\n#define _size_setup 1\n#define _size_turn_off 1\n#define _size_turn_on 1\nbyte _sizes[10] =\n  { 0, _size__io_digitalWrite, _size__io_millis, _size__io_pinOut, _size_now,\n_size_off_since, _size_on_since, _size_setup, _size_turn_off, _size_turn_on\n};\n\n#define _type__io_digitalWrite 1\n#define _type__io_millis 2\n#define _type__io_pinOut 3\n#define _type_now 4\n#define _type_off_since 5\n#define _type_on_since 6\n#define _type_setup 7\n#define _type_turn_off 8\n#define _type_turn_on 9\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline unsigned long\n_io_millis_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline unsigned long\nnow_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\noff_since_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\non_since_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_unsigned_long (byte *buf, byte type, unsigned long a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < unsigned long >(free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_now(buf, a1) _write_fact_unsigned_long(buf, _type_now, a1)\n#define write_off_since(buf, a1) _write_fact_unsigned_long(buf, _type_off_since, a1)\n#define write_on_since(buf, a1) _write_fact_unsigned_long(buf, _type_on_since, a1)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)\n#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)\n\nbyte *\n_io_millis_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__io_millis)) != 0)\n    {\n      if (_io_millis_1 (buf) != a1)\n        {\n          buf = buf + _size__io_millis;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define now_f(buf) _next__fact(buf,_type_now)\n\nbyte *\nnow_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_now)) != 0)\n    {\n      if (now_1 (buf) != a1)\n        {\n          buf = buf + _size_now;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define off_since_f(buf) _next__fact(buf,_type_off_since)\n\nbyte *\noff_since_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_off_since)) != 0)\n    {\n      if (off_since_1 (buf) != a1)\n        {\n          buf = buf + _size_off_since;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define on_since_f(buf) _next__fact(buf,_type_on_since)\n\nbyte *\non_since_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_on_since)) != 0)\n    {\n      if (on_since_1 (buf) != a1)\n        {\n          buf = buf + _size_on_since;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n#define turn_off_(buf) _next__fact(buf,_type_turn_off)\n\n#define turn_on_(buf) _next__fact(buf,_type_turn_on)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: now(X)=>_curr_state :- U{_io_millis(X)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_millis_f (_tuple1)) != 0)\n    {\n      unsigned long X = _io_millis_1 (_tuple1);\n      if (now_f (_curr_state, X) == 0)\n        {\n          write_now (_curr_state, X);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_millis;\n    }\n  return _added_facts;\n};\n\n// _inductive_rule_1: off_since(P)=>_next_state :- E{!turn_on()} U{off_since(P)}.\nvoid\n_inductive_rule_1 ()\n{\n  if (turn_on_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _curr_state;\n      while ((_tuple1 = off_since_f (_tuple1)) != 0)\n        {\n          unsigned long P = off_since_1 (_tuple1);\n          if (off_since_f (_next_state, P) == 0)\n            {\n              write_off_since (_next_state, P);\n            }\n          _tuple1 += _size_off_since;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: off_since(T)=>_next_state :- E{turn_off()} U{now(T)}.\nvoid\n_inductive_rule_2 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = now_f (_tuple2)) != 0)\n        {\n          unsigned long T = now_1 (_tuple2);\n          if (off_since_f (_next_state, T) == 0)\n            {\n              write_off_since (_next_state, T);\n            }\n          _tuple2 += _size_now;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: on_since(P)=>_next_state :- E{!turn_off()} U{on_since(P)}.\nvoid\n_inductive_rule_3 ()\n{\n  if (turn_off_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _curr_state;\n      while ((_tuple1 = on_since_f (_tuple1)) != 0)\n        {\n          unsigned long P = on_since_1 (_tuple1);\n          if (on_since_f (_next_state, P) == 0)\n            {\n              write_on_since (_next_state, P);\n            }\n          _tuple1 += _size_on_since;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: on_since(T)=>_next_state :- E{turn_on()} U{now(T)}.\nvoid\n_inductive_rule_4 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = now_f (_tuple2)) != 0)\n        {\n          unsigned long T = now_1 (_tuple2);\n          if (on_since_f (_next_state, T) == 0)\n            {\n              write_on_since (_next_state, T);\n            }\n          _tuple2 += _size_now;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _deductive_rule_2: turn_off()=>_curr_state :- E{now(T) on_since(P) ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\")}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = now_f (_tuple1)) != 0)\n    {\n      unsigned long T = now_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = on_since_f (_tuple2)) != 0)\n        {\n          unsigned long P = on_since_1 (_tuple2);\n          if (P + 1000 < T)\n            {\n              if (turn_off_ (_curr_state) == 0)\n                {\n                  write_turn_off (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size_on_since;\n        }\n      _tuple1 += _size_now;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_3: turn_on()=>_curr_state :- E{now(T) off_since(P) ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\")}.\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = now_f (_tuple1)) != 0)\n    {\n      unsigned long T = now_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = off_since_f (_tuple2)) != 0)\n        {\n          unsigned long P = off_since_1 (_tuple2);\n          if (P + 1000 < T)\n            {\n              if (turn_on_ (_curr_state) == 0)\n                {\n                  write_turn_on (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size_off_since;\n        }\n      _tuple1 += _size_now;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=>_next_state :- E{turn_on()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_digitalWrite(13, LOW)=>_next_state :- E{turn_off()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_millis(_)=>_next_state :- .\nvoid\n_inductive_rule_7 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_millis_f (_next_state)) == 0)\n    {\n// make io call\n      unsigned long X = millis ();\n      write__io_millis (_next_state, X);\n    }\n};\n\n// _inductive_rule_8: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_off_since (_curr_state, 0);\n  _added_facts = true;\n  write_setup (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n// stratum 2\n  _deductive_rule_1 ();\n\n\n// stratum 5\n  _deductive_rule_2 ();\n// stratum 6\n  _deductive_rule_3 ();\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n  _inductive_rule_6 ();\n  _inductive_rule_7 ();\n  _inductive_rule_8 ();\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">off_since(0)@0.</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">now(X) :- _io_millis(X).</span>\n<span class=\"cm\">turn_off() :- now(T), on_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">turn_on() :- now(T), off_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">off_since(P)@next :- off_since(P), !turn_on().</span>\n<span class=\"cm\">off_since(T)@next :- now(T), turn_off().</span>\n<span class=\"cm\">on_since(P)@next :- on_since(P), !turn_off().</span>\n<span class=\"cm\">on_since(T)@next :- now(T), turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;off_since&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;on_since&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;turn_off&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_millis 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_now 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_off_since 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_on_since 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"cp\">#define _size_turn_off 1</span>\n<span class=\"cp\">#define _size_turn_on 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">10</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">,</span>\n<span class=\"n\">_size_off_since</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_setup</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_on</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalWrite 1</span>\n<span class=\"cp\">#define _type__io_millis 2</span>\n<span class=\"cp\">#define _type__io_pinOut 3</span>\n<span class=\"cp\">#define _type_now 4</span>\n<span class=\"cp\">#define _type_off_since 5</span>\n<span class=\"cp\">#define _type_on_since 6</span>\n<span class=\"cp\">#define _type_setup 7</span>\n<span class=\"cp\">#define _type_turn_off 8</span>\n<span class=\"cp\">#define _type_turn_on 9</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_now(buf, a1) _write_fact_unsigned_long(buf, _type_now, a1)</span>\n<span class=\"cp\">#define write_off_since(buf, a1) _write_fact_unsigned_long(buf, _type_off_since, a1)</span>\n<span class=\"cp\">#define write_on_since(buf, a1) _write_fact_unsigned_long(buf, _type_on_since, a1)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n<span class=\"cp\">#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)</span>\n<span class=\"cp\">#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_millis_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_millis</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define now_f(buf) _next__fact(buf,_type_now)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">now_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_now</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define off_since_f(buf) _next__fact(buf,_type_off_since)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">off_since_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_off_since</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define on_since_f(buf) _next__fact(buf,_type_on_since)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">on_since_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_on_since</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n<span class=\"cp\">#define turn_off_(buf) _next__fact(buf,_type_turn_off)</span>\n\n<span class=\"cp\">#define turn_on_(buf) _next__fact(buf,_type_turn_on)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: now(X)=&gt;_curr_state :- U{_io_millis(X)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: off_since(P)=&gt;_next_state :- E{!turn_on()} U{off_since(P)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: off_since(T)=&gt;_next_state :- E{turn_off()} U{now(T)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: on_since(P)=&gt;_next_state :- E{!turn_off()} U{on_since(P)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: on_since(T)=&gt;_next_state :- E{turn_on()} U{now(T)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: turn_off()=&gt;_curr_state :- E{now(T) on_since(P) ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: turn_on()=&gt;_curr_state :- E{now(T) off_since(P) ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{turn_on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{turn_off()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_millis(_)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_millis</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"c1\">// stratum 5</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 6</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_small.dl",
      "template": "lego ev3",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n#millis(X: unsigned long) = {unsigned long X = millis();}\n\n% Declarations\n.decl off_since(unsigned long)\n.decl setup\n.decl now(unsigned long)\n.decl on_since(unsigned long)\n.decl turn_off\n.decl turn_on\n\n% Deduction\nturn_off :- on_since(P), now(T), P+1000 < T.\nturn_on :- off_since(P), now(T), P+1000 < T.\n\n% Induction\non_since(P)@next :- !turn_off, on_since(P).\non_since(T)@next :- turn_on, now(T).\noff_since(P)@next :- !turn_on, off_since(P).\noff_since(T)@next :- turn_off, now(T).\n\n% Input\nnow(X) :- #millis(X).\n#millis(?)@next.\n\n% Setup and Initialization\nsetup@0.\noff_since(0)@0.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\noff_since(0)@0.\nnow(X) :- _io_millis(X).\nturn_off() :- now(T), on_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\nturn_on() :- now(T), off_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\noff_since(P)@next :- off_since(P), !turn_on().\noff_since(T)@next :- now(T), turn_off().\non_since(P)@next :- on_since(P), !turn_off().\non_since(T)@next :- now(T), turn_on().\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n\n\nProgram 3:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\nsetup()@0.\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"now\"]\n3: fromList [\"off_since\"]\n4: fromList [\"on_since\"]\n5: fromList [\"turn_off\"]\n6: fromList [\"turn_on\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm2_state = 3;\nbyte _fsm1_state = 1;\nunsigned long _fsm1_slot_1;\nunsigned long _fsm1_slot_2;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm2_state == 1)\n    {\n      {\n      _fsm2_trans1:\n        if (true)\n          {\n            _fsm2_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm2_state == 2)\n    {\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n        goto _fsm2_trans1;\n      }\n    }\n  else if (_fsm2_state == 3)\n    {\n      {\n      _fsm2_trans3:\n        if (true)\n          {\n            _fsm2_state = 2;\n          }\n        else;\n      }\n    }\n  else;\n  if (_fsm1_state == 5)\n    {\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_2 = X;\n      }\n      {\n      _fsm1_trans5:\n        if (_fsm1_slot_1 + 1000 < _fsm1_slot_2)\n          {\n            _fsm1_state = 6;\n          }\n        else if (_fsm1_slot_2 <= _fsm1_slot_1 + 1000)\n          {\n            _fsm1_state = 4;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 6)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_1 = X;\n      }\n      {\n      _fsm1_trans6:\n        if (_fsm1_slot_2 + 1000 < _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else if (_fsm1_slot_1 <= _fsm1_slot_2 + 1000)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_1 = X;\n      }\n      {\n      _fsm1_trans2:\n        if (1000 < _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else if (_fsm1_slot_1 <= 1000)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_1 = X;\n      }\n      {\n        goto _fsm1_trans6;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        unsigned long X = millis ();\n        _fsm1_slot_2 = X;\n      }\n      {\n        goto _fsm1_trans5;\n      }\n    }\n  else if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">off_since(0)@0.</span>\n<span class=\"cm\">now(X) :- _io_millis(X).</span>\n<span class=\"cm\">turn_off() :- now(T), on_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">turn_on() :- now(T), off_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">off_since(P)@next :- off_since(P), !turn_on().</span>\n<span class=\"cm\">off_since(T)@next :- now(T), turn_off().</span>\n<span class=\"cm\">on_since(P)@next :- on_since(P), !turn_off().</span>\n<span class=\"cm\">on_since(T)@next :- now(T), turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;off_since&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;on_since&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;turn_off&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n<span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans5</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans6</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans5</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"n\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/blink_timed_small.dl",
      "template": "lego ev3",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n#millis(X: unsigned long) = {unsigned long X = millis();}\n\n% Declarations\n.decl off_since(unsigned long)\n.decl setup\n.decl now(unsigned long)\n.decl on_since(unsigned long)\n.decl turn_off\n.decl turn_on\n\n% Deduction\nturn_off :- on_since(P), now(T), P+1000 < T.\nturn_on :- off_since(P), now(T), P+1000 < T.\n\n% Induction\non_since(P)@next :- !turn_off, on_since(P).\non_since(T)@next :- turn_on, now(T).\noff_since(P)@next :- !turn_on, off_since(P).\noff_since(T)@next :- turn_off, now(T).\n\n% Input\nnow(X) :- #millis(X).\n#millis(?)@next.\n\n% Setup and Initialization\nsetup@0.\noff_since(0)@0.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- turn_on.\n#digitalWrite(13, #LOW)@next :- turn_off.\n",
      "tsource": "/*\nProgram 1:\n.decl now/1(unsigned long)\n.decl off_since/1(unsigned long)\n.decl on_since/1(unsigned long)\n.decl setup/0()\n.decl turn_off/0()\n.decl turn_on/0()\noff_since(0)@0.\nsetup()@0.\nnow(X) :- _io_millis(X).\nturn_off() :- now(T), on_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\nturn_on() :- now(T), off_since(P), ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\").\noff_since(P)@next :- off_since(P), !turn_on().\noff_since(T)@next :- now(T), turn_off().\non_since(P)@next :- on_since(P), !turn_off().\non_since(T)@next :- now(T), turn_on().\n#_io_digitalWrite(13, HIGH)@next :- turn_on().\n#_io_digitalWrite(13, LOW)@next :- turn_off().\n#_io_millis(_)@next :- .\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_millis\"]\n2: fromList [\"now\"]\n3: fromList [\"off_since\"]\n4: fromList [\"on_since\"]\n5: fromList [\"turn_off\"]\n6: fromList [\"turn_on\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 4\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_millis 1 + sizeof(unsigned long)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_now 1 + sizeof(unsigned long)\n#define _size_off_since 1 + sizeof(unsigned long)\n#define _size_on_since 1 + sizeof(unsigned long)\n#define _size_setup 1\n#define _size_turn_off 1\n#define _size_turn_on 1\nbyte _sizes[10] =\n  { 0, _size__io_digitalWrite, _size__io_millis, _size__io_pinOut, _size_now,\n_size_off_since, _size_on_since, _size_setup, _size_turn_off, _size_turn_on\n};\n\n#define _type__io_digitalWrite 1\n#define _type__io_millis 2\n#define _type__io_pinOut 3\n#define _type_now 4\n#define _type_off_since 5\n#define _type_on_since 6\n#define _type_setup 7\n#define _type_turn_off 8\n#define _type_turn_on 9\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline unsigned long\n_io_millis_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline unsigned long\nnow_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\noff_since_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\ninline unsigned long\non_since_1 (byte *buf)\n{\n  return _read_data < unsigned long >(buf + 1);\n}\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_unsigned_long (byte *buf, byte type, unsigned long a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < unsigned long >(free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_now(buf, a1) _write_fact_unsigned_long(buf, _type_now, a1)\n#define write_off_since(buf, a1) _write_fact_unsigned_long(buf, _type_off_since, a1)\n#define write_on_since(buf, a1) _write_fact_unsigned_long(buf, _type_on_since, a1)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)\n#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)\n\nbyte *\n_io_millis_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type__io_millis)) != 0)\n    {\n      if (_io_millis_1 (buf) != a1)\n        {\n          buf = buf + _size__io_millis;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define now_f(buf) _next__fact(buf,_type_now)\n\nbyte *\nnow_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_now)) != 0)\n    {\n      if (now_1 (buf) != a1)\n        {\n          buf = buf + _size_now;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define off_since_f(buf) _next__fact(buf,_type_off_since)\n\nbyte *\noff_since_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_off_since)) != 0)\n    {\n      if (off_since_1 (buf) != a1)\n        {\n          buf = buf + _size_off_since;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define on_since_f(buf) _next__fact(buf,_type_on_since)\n\nbyte *\non_since_b (byte *buf, unsigned long a1)\n{\n  while ((buf = _next__fact (buf, _type_on_since)) != 0)\n    {\n      if (on_since_1 (buf) != a1)\n        {\n          buf = buf + _size_on_since;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n#define turn_off_(buf) _next__fact(buf,_type_turn_off)\n\n#define turn_on_(buf) _next__fact(buf,_type_turn_on)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: now(X)=>_curr_state :- U{_io_millis(X)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_millis_f (_tuple1)) != 0)\n    {\n      unsigned long X = _io_millis_1 (_tuple1);\n      if (now_f (_curr_state, X) == 0)\n        {\n          write_now (_curr_state, X);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_millis;\n    }\n  return _added_facts;\n};\n\n// _inductive_rule_1: off_since(P)=>_next_state :- E{!turn_on()} U{off_since(P)}.\nvoid\n_inductive_rule_1 ()\n{\n  if (turn_on_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _curr_state;\n      while ((_tuple1 = off_since_f (_tuple1)) != 0)\n        {\n          unsigned long P = off_since_1 (_tuple1);\n          if (off_since_f (_next_state, P) == 0)\n            {\n              write_off_since (_next_state, P);\n            }\n          _tuple1 += _size_off_since;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: off_since(T)=>_next_state :- E{turn_off()} U{now(T)}.\nvoid\n_inductive_rule_2 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = now_f (_tuple2)) != 0)\n        {\n          unsigned long T = now_1 (_tuple2);\n          if (off_since_f (_next_state, T) == 0)\n            {\n              write_off_since (_next_state, T);\n            }\n          _tuple2 += _size_now;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: on_since(P)=>_next_state :- E{!turn_off()} U{on_since(P)}.\nvoid\n_inductive_rule_3 ()\n{\n  if (turn_off_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _curr_state;\n      while ((_tuple1 = on_since_f (_tuple1)) != 0)\n        {\n          unsigned long P = on_since_1 (_tuple1);\n          if (on_since_f (_next_state, P) == 0)\n            {\n              write_on_since (_next_state, P);\n            }\n          _tuple1 += _size_on_since;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: on_since(T)=>_next_state :- E{turn_on()} U{now(T)}.\nvoid\n_inductive_rule_4 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = now_f (_tuple2)) != 0)\n        {\n          unsigned long T = now_1 (_tuple2);\n          if (on_since_f (_next_state, T) == 0)\n            {\n              write_on_since (_next_state, T);\n            }\n          _tuple2 += _size_now;\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _deductive_rule_2: turn_off()=>_curr_state :- E{now(T) on_since(P) ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\")}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = now_f (_tuple1)) != 0)\n    {\n      unsigned long T = now_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = on_since_f (_tuple2)) != 0)\n        {\n          unsigned long P = on_since_1 (_tuple2);\n          if (P + 1000 < T)\n            {\n              if (turn_off_ (_curr_state) == 0)\n                {\n                  write_turn_off (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size_on_since;\n        }\n      _tuple1 += _size_now;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_3: turn_on()=>_curr_state :- E{now(T) off_since(P) ArithComp (ArithLT \"P\"+ConstInt 1000 \"T\")}.\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = now_f (_tuple1)) != 0)\n    {\n      unsigned long T = now_1 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = off_since_f (_tuple2)) != 0)\n        {\n          unsigned long P = off_since_1 (_tuple2);\n          if (P + 1000 < T)\n            {\n              if (turn_on_ (_curr_state) == 0)\n                {\n                  write_turn_on (_curr_state);\n                  _added_facts = true;\n                }\n              goto jmp0;\n            }\n          _tuple2 += _size_off_since;\n        }\n      _tuple1 += _size_now;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=>_next_state :- E{turn_on()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (turn_on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_digitalWrite(13, LOW)=>_next_state :- E{turn_off()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (turn_off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_millis(_)=>_next_state :- .\nvoid\n_inductive_rule_7 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_millis_f (_next_state)) == 0)\n    {\n// make io call\n      unsigned long X = millis ();\n      write__io_millis (_next_state, X);\n    }\n};\n\n// _inductive_rule_8: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_off_since (_curr_state, 0);\n  _added_facts = true;\n  write_setup (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n// stratum 2\n  _deductive_rule_1 ();\n\n\n// stratum 5\n  _deductive_rule_2 ();\n// stratum 6\n  _deductive_rule_3 ();\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n  _inductive_rule_6 ();\n  _inductive_rule_7 ();\n  _inductive_rule_8 ();\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl now/1(unsigned long)</span>\n<span class=\"cm\">.decl off_since/1(unsigned long)</span>\n<span class=\"cm\">.decl on_since/1(unsigned long)</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">.decl turn_off/0()</span>\n<span class=\"cm\">.decl turn_on/0()</span>\n<span class=\"cm\">off_since(0)@0.</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">now(X) :- _io_millis(X).</span>\n<span class=\"cm\">turn_off() :- now(T), on_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">turn_on() :- now(T), off_since(P), ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;).</span>\n<span class=\"cm\">off_since(P)@next :- off_since(P), !turn_on().</span>\n<span class=\"cm\">off_since(T)@next :- now(T), turn_off().</span>\n<span class=\"cm\">on_since(P)@next :- on_since(P), !turn_off().</span>\n<span class=\"cm\">on_since(T)@next :- now(T), turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- turn_on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- turn_off().</span>\n<span class=\"cm\">#_io_millis(_)@next :- .</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_millis&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;now&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;off_since&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;on_since&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;turn_off&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;turn_on&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_millis 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_now 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_off_since 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_on_since 1 + sizeof(unsigned long)</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"cp\">#define _size_turn_off 1</span>\n<span class=\"cp\">#define _size_turn_on 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">10</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">,</span>\n<span class=\"n\">_size_off_since</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_setup</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_turn_on</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalWrite 1</span>\n<span class=\"cp\">#define _type__io_millis 2</span>\n<span class=\"cp\">#define _type__io_pinOut 3</span>\n<span class=\"cp\">#define _type_now 4</span>\n<span class=\"cp\">#define _type_off_since 5</span>\n<span class=\"cp\">#define _type_on_since 6</span>\n<span class=\"cp\">#define _type_setup 7</span>\n<span class=\"cp\">#define _type_turn_off 8</span>\n<span class=\"cp\">#define _type_turn_on 9</span>\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span>\n<span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_unsigned_long</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_millis(buf, a1) _write_fact_unsigned_long(buf, _type__io_millis, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_now(buf, a1) _write_fact_unsigned_long(buf, _type_now, a1)</span>\n<span class=\"cp\">#define write_off_since(buf, a1) _write_fact_unsigned_long(buf, _type_off_since, a1)</span>\n<span class=\"cp\">#define write_on_since(buf, a1) _write_fact_unsigned_long(buf, _type_on_since, a1)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n<span class=\"cp\">#define write_turn_off(buf) _write_fact_(buf, _type_turn_off)</span>\n<span class=\"cp\">#define write_turn_on(buf) _write_fact_(buf, _type_turn_on)</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_millis_f(buf) _next__fact(buf,_type__io_millis)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_millis_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_millis</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define now_f(buf) _next__fact(buf,_type_now)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">now_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_now</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define off_since_f(buf) _next__fact(buf,_type_off_since)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">off_since_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_off_since</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define on_since_f(buf) _next__fact(buf,_type_on_since)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">on_since_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_on_since</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n<span class=\"cp\">#define turn_off_(buf) _next__fact(buf,_type_turn_off)</span>\n\n<span class=\"cp\">#define turn_on_(buf) _next__fact(buf,_type_turn_on)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: now(X)=&gt;_curr_state :- U{_io_millis(X)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_now</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_millis</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: off_since(P)=&gt;_next_state :- E{!turn_on()} U{off_since(P)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: off_since(T)=&gt;_next_state :- E{turn_off()} U{now(T)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: on_since(P)=&gt;_next_state :- E{!turn_off()} U{on_since(P)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: on_since(T)=&gt;_next_state :- E{turn_on()} U{now(T)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: turn_off()=&gt;_curr_state :- E{now(T) on_since(P) ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">on_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_on_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: turn_on()=&gt;_curr_state :- E{now(T) off_since(P) ArithComp (ArithLT &quot;P&quot;+ConstInt 1000 &quot;T&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">now_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">off_since_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">P</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1000</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_turn_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_off_since</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_now</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{turn_on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{turn_off()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">turn_off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_millis(_)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_millis_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">unsigned</span><span class=\"w\"> </span><span class=\"kr\">long</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">millis</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_millis</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">X</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_off_since</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"c1\">// stratum 5</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 6</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"nf\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press.dl",
      "template": "no runtime",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Predicates\n.decl setup\n.decl pressed\n.decl on\n.decl off\n\n% Input\npressed@next :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\noff@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- on.\n#digitalWrite(13, #LOW)@next :- off.\non@next :- off, pressed.\non@next :- on, !pressed.\noff@next :- on, pressed.\noff@next :- off, !pressed.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl setup/0()\noff()@0.\noff()@next :- off(), !pressed().\noff()@next :- on(), pressed().\non()@next :- off(), pressed().\non()@next :- on(), !pressed().\npressed()@next :- _io_digitalRead(12, HIGH).\n#_io_digitalWrite(13, HIGH)@next :- on().\n#_io_digitalWrite(13, LOW)@next :- off().\n\n\nProgram 3:\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl setup/0()\nsetup()@0.\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\nError: Predicate \"_io_digitalRead\" not found in fromList [(\"_io_digitalWrite\",2),(\"_io_pinIn\",1),(\"_io_pinOut\",1),(\"off\",0),(\"on\",0),(\"pressed\",0),(\"setup\",0)]\nStrata:\n*/\n\n#define _rulecount 0\n#define _bufsize 256\n\nbyte _fsm2_state = 2;\nbyte _fsm1_state = 1;\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n/* SETUP */\n\n\n/* LOOP */\n\nif (_fsm2_state == 1)\n  {\n    {\n    _fsm2_trans1:\n      if (true)\n        {\n          _fsm2_state = 1;\n        }\n      else;\n    }\n  }\nelse if (_fsm2_state == 3)\n  {\n    {\n      pinMode (12, INPUT);\n    }\n    {\n      pinMode (13, OUTPUT);\n    }\n    {\n      goto _fsm2_trans1;\n    }\n  }\nelse if (_fsm2_state == 2)\n  {\n    {\n    _fsm2_trans2:\n      if (true)\n        {\n          _fsm2_state = 3;\n        }\n      else;\n    }\n  }\nelse;\nif (_fsm1_state == 2)\n  {\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n    _fsm1_trans2:\n      if (true)\n        {\n          _fsm1_state = 2;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 1)\n  {\n    {\n      goto _fsm1_trans2;\n    }\n  }\nelse;\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">off()@0.</span>\n<span class=\"cm\">off()@next :- off(), !pressed().</span>\n<span class=\"cm\">off()@next :- on(), pressed().</span>\n<span class=\"cm\">on()@next :- off(), pressed().</span>\n<span class=\"cm\">on()@next :- on(), !pressed().</span>\n<span class=\"cm\">pressed()@next :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- off().</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n<span class=\"cm\">Error: Predicate &quot;_io_digitalRead&quot; not found in fromList [(&quot;_io_digitalWrite&quot;,2),(&quot;_io_pinIn&quot;,1),(&quot;_io_pinOut&quot;,1),(&quot;off&quot;,0),(&quot;on&quot;,0),(&quot;pressed&quot;,0),(&quot;setup&quot;,0)]</span>\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cm\">/* SETUP */</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm2_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans2</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press.dl",
      "template": "no runtime",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Predicates\n.decl setup\n.decl pressed\n.decl on\n.decl off\n\n% Input\npressed@next :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\noff@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- on.\n#digitalWrite(13, #LOW)@next :- off.\non@next :- off, pressed.\non@next :- on, !pressed.\noff@next :- on, pressed.\noff@next :- off, !pressed.\n",
      "tsource": "/*\nProgram 1:\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl setup/0()\noff()@0.\nsetup()@0.\noff()@next :- off(), !pressed().\noff()@next :- on(), pressed().\non()@next :- off(), pressed().\non()@next :- on(), !pressed().\npressed()@next :- _io_digitalRead(12, HIGH).\n#_io_digitalWrite(13, HIGH)@next :- on().\n#_io_digitalWrite(13, LOW)@next :- off().\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\nError: Predicate \"_io_digitalRead\" not found in fromList [(\"_io_digitalWrite\",2),(\"_io_pinIn\",1),(\"_io_pinOut\",1),(\"off\",0),(\"on\",0),(\"pressed\",0),(\"setup\",0)]\nStrata:\n*/\n\n#define _rulecount 4\n#define _bufsize 256\n\n\n\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_pinIn 1 + sizeof(byte)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_off 1\n#define _size_on 1\n#define _size_pressed 1\n#define _size_setup 1\nbyte _sizes[8] =\n  { 0, _size__io_digitalWrite, _size__io_pinIn, _size__io_pinOut, _size_off,\n_size_on, _size_pressed, _size_setup\n};\n\n#define _type__io_digitalWrite 1\n#define _type__io_pinIn 2\n#define _type__io_pinOut 3\n#define _type_off 4\n#define _type_on 5\n#define _type_pressed 6\n#define _type_setup 7\n\n\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_pinIn_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_off(buf) _write_fact_(buf, _type_off)\n#define write_on(buf) _write_fact_(buf, _type_on)\n#define write_pressed(buf) _write_fact_(buf, _type_pressed)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)\n\nbyte *\n_io_pinIn_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinIn)) != 0)\n    {\n      if (_io_pinIn_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinIn;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define off_(buf) _next__fact(buf,_type_off)\n\n#define on_(buf) _next__fact(buf,_type_on)\n\n#define pressed_(buf) _next__fact(buf,_type_pressed)\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: off()=>_next_state :- E{off()} E{!pressed()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          if (off_ (_next_state) == 0)\n            {\n              write_off (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: off()=>_next_state :- E{on()} E{pressed()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) != 0)\n        {\n          if (off_ (_next_state) == 0)\n            {\n              write_off (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: on()=>_next_state :- E{off()} E{pressed()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) != 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: on()=>_next_state :- E{on()} E{!pressed()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: pressed()=>_next_state :- E{_io_digitalRead(12, HIGH)}.\nvoid\n_inductive_rule_5 ()\n{\n  if (_io_digitalRead_bb (_curr_state, 12, HIGH) != 0)\n    {\n      if (pressed_ (_next_state) == 0)\n        {\n          write_pressed (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_digitalWrite(13, HIGH)=>_next_state :- E{on()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_digitalWrite(13, LOW)=>_next_state :- E{off()}.\nvoid\n_inductive_rule_7 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_8: #_io_pinIn(12)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinIn_b (_next_state, 12)) == 0)\n        {\n          // make io call\n          pinMode (12, INPUT);\n          write__io_pinIn (_next_state, 12);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_9: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_9 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n/* SETUP */\nwrite_off (_curr_state);\n_added_facts = true;\nwrite_setup (_curr_state);\n_added_facts = true;\n\n\n/* LOOP */\n\n\n\n\n// inductive_phase\n_inductive_rule_1 ();\n_inductive_rule_2 ();\n_inductive_rule_3 ();\n_inductive_rule_4 ();\n_inductive_rule_5 ();\n_inductive_rule_6 ();\n_inductive_rule_7 ();\n_inductive_rule_8 ();\n_inductive_rule_9 ();\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">off()@0.</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">off()@next :- off(), !pressed().</span>\n<span class=\"cm\">off()@next :- on(), pressed().</span>\n<span class=\"cm\">on()@next :- off(), pressed().</span>\n<span class=\"cm\">on()@next :- on(), !pressed().</span>\n<span class=\"cm\">pressed()@next :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- off().</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n<span class=\"cm\">Error: Predicate &quot;_io_digitalRead&quot; not found in fromList [(&quot;_io_digitalWrite&quot;,2),(&quot;_io_pinIn&quot;,1),(&quot;_io_pinOut&quot;,1),(&quot;off&quot;,0),(&quot;on&quot;,0),(&quot;pressed&quot;,0),(&quot;setup&quot;,0)]</span>\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n\n\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinIn 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_off 1</span>\n<span class=\"cp\">#define _size_on 1</span>\n<span class=\"cp\">#define _size_pressed 1</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">8</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_off</span><span class=\"p\">,</span>\n<span class=\"n\">_size_on</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_pressed</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_setup</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalWrite 1</span>\n<span class=\"cp\">#define _type__io_pinIn 2</span>\n<span class=\"cp\">#define _type__io_pinOut 3</span>\n<span class=\"cp\">#define _type_off 4</span>\n<span class=\"cp\">#define _type_on 5</span>\n<span class=\"cp\">#define _type_pressed 6</span>\n<span class=\"cp\">#define _type_setup 7</span>\n\n\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_off(buf) _write_fact_(buf, _type_off)</span>\n<span class=\"cp\">#define write_on(buf) _write_fact_(buf, _type_on)</span>\n<span class=\"cp\">#define write_pressed(buf) _write_fact_(buf, _type_pressed)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinIn</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define off_(buf) _next__fact(buf,_type_off)</span>\n\n<span class=\"cp\">#define on_(buf) _next__fact(buf,_type_on)</span>\n\n<span class=\"cp\">#define pressed_(buf) _next__fact(buf,_type_pressed)</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: off()=&gt;_next_state :- E{off()} E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: off()=&gt;_next_state :- E{on()} E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: on()=&gt;_next_state :- E{off()} E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: on()=&gt;_next_state :- E{on()} E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: pressed()=&gt;_next_state :- E{_io_digitalRead(12, HIGH)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{off()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_pinIn(12)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinIn</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_9: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cm\">/* SETUP */</span>\n<span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n\n\n\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">();</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press.dl",
      "template": "arduino",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Predicates\n.decl setup\n.decl pressed\n.decl on\n.decl off\n\n% Input\npressed@next :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\noff@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- on.\n#digitalWrite(13, #LOW)@next :- off.\non@next :- off, pressed.\non@next :- on, !pressed.\noff@next :- on, pressed.\noff@next :- off, !pressed.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl setup/0()\noff()@0.\noff()@next :- off(), !pressed().\noff()@next :- on(), pressed().\non()@next :- off(), pressed().\non()@next :- on(), !pressed().\npressed()@next :- _io_digitalRead(12, HIGH).\n#_io_digitalWrite(13, HIGH)@next :- on().\n#_io_digitalWrite(13, LOW)@next :- off().\n\n\nProgram 3:\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl setup/0()\nsetup()@0.\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\nError: Predicate \"_io_digitalRead\" not found in fromList [(\"_io_digitalWrite\",2),(\"_io_pinIn\",1),(\"_io_pinOut\",1),(\"off\",0),(\"on\",0),(\"pressed\",0),(\"setup\",0)]\nStrata:\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm2_state = 2;\nbyte _fsm1_state = 1;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm2_state == 1)\n    {\n      {\n      _fsm2_trans1:\n        if (true)\n          {\n            _fsm2_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm2_state == 3)\n    {\n      {\n        pinMode (12, INPUT);\n      }\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n        goto _fsm2_trans1;\n      }\n    }\n  else if (_fsm2_state == 2)\n    {\n      {\n      _fsm2_trans2:\n        if (true)\n          {\n            _fsm2_state = 3;\n          }\n        else;\n      }\n    }\n  else;\n  if (_fsm1_state == 2)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n      _fsm1_trans2:\n        if (true)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 1)\n    {\n      {\n        goto _fsm1_trans2;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">off()@0.</span>\n<span class=\"cm\">off()@next :- off(), !pressed().</span>\n<span class=\"cm\">off()@next :- on(), pressed().</span>\n<span class=\"cm\">on()@next :- off(), pressed().</span>\n<span class=\"cm\">on()@next :- on(), !pressed().</span>\n<span class=\"cm\">pressed()@next :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- off().</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n<span class=\"cm\">Error: Predicate &quot;_io_digitalRead&quot; not found in fromList [(&quot;_io_digitalWrite&quot;,2),(&quot;_io_pinIn&quot;,1),(&quot;_io_pinOut&quot;,1),(&quot;off&quot;,0),(&quot;on&quot;,0),(&quot;pressed&quot;,0),(&quot;setup&quot;,0)]</span>\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans2</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press.dl",
      "template": "arduino",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Predicates\n.decl setup\n.decl pressed\n.decl on\n.decl off\n\n% Input\npressed@next :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\noff@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- on.\n#digitalWrite(13, #LOW)@next :- off.\non@next :- off, pressed.\non@next :- on, !pressed.\noff@next :- on, pressed.\noff@next :- off, !pressed.\n",
      "tsource": "/*\nProgram 1:\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl setup/0()\noff()@0.\nsetup()@0.\noff()@next :- off(), !pressed().\noff()@next :- on(), pressed().\non()@next :- off(), pressed().\non()@next :- on(), !pressed().\npressed()@next :- _io_digitalRead(12, HIGH).\n#_io_digitalWrite(13, HIGH)@next :- on().\n#_io_digitalWrite(13, LOW)@next :- off().\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\nError: Predicate \"_io_digitalRead\" not found in fromList [(\"_io_digitalWrite\",2),(\"_io_pinIn\",1),(\"_io_pinOut\",1),(\"off\",0),(\"on\",0),(\"pressed\",0),(\"setup\",0)]\nStrata:\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 4\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_pinIn 1 + sizeof(byte)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_off 1\n#define _size_on 1\n#define _size_pressed 1\n#define _size_setup 1\nbyte _sizes[8] =\n  { 0, _size__io_digitalWrite, _size__io_pinIn, _size__io_pinOut, _size_off,\n_size_on, _size_pressed, _size_setup\n};\n\n#define _type__io_digitalWrite 1\n#define _type__io_pinIn 2\n#define _type__io_pinOut 3\n#define _type_off 4\n#define _type_on 5\n#define _type_pressed 6\n#define _type_setup 7\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_pinIn_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_off(buf) _write_fact_(buf, _type_off)\n#define write_on(buf) _write_fact_(buf, _type_on)\n#define write_pressed(buf) _write_fact_(buf, _type_pressed)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)\n\nbyte *\n_io_pinIn_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinIn)) != 0)\n    {\n      if (_io_pinIn_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinIn;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define off_(buf) _next__fact(buf,_type_off)\n\n#define on_(buf) _next__fact(buf,_type_on)\n\n#define pressed_(buf) _next__fact(buf,_type_pressed)\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: off()=>_next_state :- E{off()} E{!pressed()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          if (off_ (_next_state) == 0)\n            {\n              write_off (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: off()=>_next_state :- E{on()} E{pressed()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) != 0)\n        {\n          if (off_ (_next_state) == 0)\n            {\n              write_off (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: on()=>_next_state :- E{off()} E{pressed()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) != 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: on()=>_next_state :- E{on()} E{!pressed()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: pressed()=>_next_state :- E{_io_digitalRead(12, HIGH)}.\nvoid\n_inductive_rule_5 ()\n{\n  if (_io_digitalRead_bb (_curr_state, 12, HIGH) != 0)\n    {\n      if (pressed_ (_next_state) == 0)\n        {\n          write_pressed (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_digitalWrite(13, HIGH)=>_next_state :- E{on()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_digitalWrite(13, LOW)=>_next_state :- E{off()}.\nvoid\n_inductive_rule_7 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_8: #_io_pinIn(12)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinIn_b (_next_state, 12)) == 0)\n        {\n          // make io call\n          pinMode (12, INPUT);\n          write__io_pinIn (_next_state, 12);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_9: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_9 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_off (_curr_state);\n  _added_facts = true;\n  write_setup (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n  _inductive_rule_6 ();\n  _inductive_rule_7 ();\n  _inductive_rule_8 ();\n  _inductive_rule_9 ();\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">off()@0.</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">off()@next :- off(), !pressed().</span>\n<span class=\"cm\">off()@next :- on(), pressed().</span>\n<span class=\"cm\">on()@next :- off(), pressed().</span>\n<span class=\"cm\">on()@next :- on(), !pressed().</span>\n<span class=\"cm\">pressed()@next :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- off().</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n<span class=\"cm\">Error: Predicate &quot;_io_digitalRead&quot; not found in fromList [(&quot;_io_digitalWrite&quot;,2),(&quot;_io_pinIn&quot;,1),(&quot;_io_pinOut&quot;,1),(&quot;off&quot;,0),(&quot;on&quot;,0),(&quot;pressed&quot;,0),(&quot;setup&quot;,0)]</span>\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinIn 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_off 1</span>\n<span class=\"cp\">#define _size_on 1</span>\n<span class=\"cp\">#define _size_pressed 1</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">8</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_off</span><span class=\"p\">,</span>\n<span class=\"n\">_size_on</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_pressed</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_setup</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalWrite 1</span>\n<span class=\"cp\">#define _type__io_pinIn 2</span>\n<span class=\"cp\">#define _type__io_pinOut 3</span>\n<span class=\"cp\">#define _type_off 4</span>\n<span class=\"cp\">#define _type_on 5</span>\n<span class=\"cp\">#define _type_pressed 6</span>\n<span class=\"cp\">#define _type_setup 7</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_off(buf) _write_fact_(buf, _type_off)</span>\n<span class=\"cp\">#define write_on(buf) _write_fact_(buf, _type_on)</span>\n<span class=\"cp\">#define write_pressed(buf) _write_fact_(buf, _type_pressed)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinIn</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define off_(buf) _next__fact(buf,_type_off)</span>\n\n<span class=\"cp\">#define on_(buf) _next__fact(buf,_type_on)</span>\n\n<span class=\"cp\">#define pressed_(buf) _next__fact(buf,_type_pressed)</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: off()=&gt;_next_state :- E{off()} E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: off()=&gt;_next_state :- E{on()} E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: on()=&gt;_next_state :- E{off()} E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: on()=&gt;_next_state :- E{on()} E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: pressed()=&gt;_next_state :- E{_io_digitalRead(12, HIGH)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{off()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_pinIn(12)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinIn</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_9: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press.dl",
      "template": "lego ev3",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Predicates\n.decl setup\n.decl pressed\n.decl on\n.decl off\n\n% Input\npressed@next :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\noff@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- on.\n#digitalWrite(13, #LOW)@next :- off.\non@next :- off, pressed.\non@next :- on, !pressed.\noff@next :- on, pressed.\noff@next :- off, !pressed.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl setup/0()\noff()@0.\noff()@next :- off(), !pressed().\noff()@next :- on(), pressed().\non()@next :- off(), pressed().\non()@next :- on(), !pressed().\npressed()@next :- _io_digitalRead(12, HIGH).\n#_io_digitalWrite(13, HIGH)@next :- on().\n#_io_digitalWrite(13, LOW)@next :- off().\n\n\nProgram 3:\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl setup/0()\nsetup()@0.\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\nError: Predicate \"_io_digitalRead\" not found in fromList [(\"_io_digitalWrite\",2),(\"_io_pinIn\",1),(\"_io_pinOut\",1),(\"off\",0),(\"on\",0),(\"pressed\",0),(\"setup\",0)]\nStrata:\n*/\n#include \"brick.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm2_state = 2;\nbyte _fsm1_state = 1;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm2_state == 1)\n    {\n      {\n      _fsm2_trans1:\n        if (true)\n          {\n            _fsm2_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm2_state == 3)\n    {\n      {\n        pinMode (12, INPUT);\n      }\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n        goto _fsm2_trans1;\n      }\n    }\n  else if (_fsm2_state == 2)\n    {\n      {\n      _fsm2_trans2:\n        if (true)\n          {\n            _fsm2_state = 3;\n          }\n        else;\n      }\n    }\n  else;\n  if (_fsm1_state == 2)\n    {\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n      _fsm1_trans2:\n        if (true)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 1)\n    {\n      {\n        goto _fsm1_trans2;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">off()@0.</span>\n<span class=\"cm\">off()@next :- off(), !pressed().</span>\n<span class=\"cm\">off()@next :- on(), pressed().</span>\n<span class=\"cm\">on()@next :- off(), pressed().</span>\n<span class=\"cm\">on()@next :- on(), !pressed().</span>\n<span class=\"cm\">pressed()@next :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- off().</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n<span class=\"cm\">Error: Predicate &quot;_io_digitalRead&quot; not found in fromList [(&quot;_io_digitalWrite&quot;,2),(&quot;_io_pinIn&quot;,1),(&quot;_io_pinOut&quot;,1),(&quot;off&quot;,0),(&quot;on&quot;,0),(&quot;pressed&quot;,0),(&quot;setup&quot;,0)]</span>\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans2</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"n\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press.dl",
      "template": "lego ev3",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Predicates\n.decl setup\n.decl pressed\n.decl on\n.decl off\n\n% Input\npressed@next :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\noff@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- on.\n#digitalWrite(13, #LOW)@next :- off.\non@next :- off, pressed.\non@next :- on, !pressed.\noff@next :- on, pressed.\noff@next :- off, !pressed.\n",
      "tsource": "/*\nProgram 1:\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl setup/0()\noff()@0.\nsetup()@0.\noff()@next :- off(), !pressed().\noff()@next :- on(), pressed().\non()@next :- off(), pressed().\non()@next :- on(), !pressed().\npressed()@next :- _io_digitalRead(12, HIGH).\n#_io_digitalWrite(13, HIGH)@next :- on().\n#_io_digitalWrite(13, LOW)@next :- off().\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\nError: Predicate \"_io_digitalRead\" not found in fromList [(\"_io_digitalWrite\",2),(\"_io_pinIn\",1),(\"_io_pinOut\",1),(\"off\",0),(\"on\",0),(\"pressed\",0),(\"setup\",0)]\nStrata:\n*/\n#include \"brick.h\"\n\n#define _rulecount 4\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_pinIn 1 + sizeof(byte)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_off 1\n#define _size_on 1\n#define _size_pressed 1\n#define _size_setup 1\nbyte _sizes[8] =\n  { 0, _size__io_digitalWrite, _size__io_pinIn, _size__io_pinOut, _size_off,\n_size_on, _size_pressed, _size_setup\n};\n\n#define _type__io_digitalWrite 1\n#define _type__io_pinIn 2\n#define _type__io_pinOut 3\n#define _type_off 4\n#define _type_on 5\n#define _type_pressed 6\n#define _type_setup 7\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_pinIn_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_off(buf) _write_fact_(buf, _type_off)\n#define write_on(buf) _write_fact_(buf, _type_on)\n#define write_pressed(buf) _write_fact_(buf, _type_pressed)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)\n\nbyte *\n_io_pinIn_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinIn)) != 0)\n    {\n      if (_io_pinIn_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinIn;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define off_(buf) _next__fact(buf,_type_off)\n\n#define on_(buf) _next__fact(buf,_type_on)\n\n#define pressed_(buf) _next__fact(buf,_type_pressed)\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: off()=>_next_state :- E{off()} E{!pressed()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          if (off_ (_next_state) == 0)\n            {\n              write_off (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: off()=>_next_state :- E{on()} E{pressed()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) != 0)\n        {\n          if (off_ (_next_state) == 0)\n            {\n              write_off (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: on()=>_next_state :- E{off()} E{pressed()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) != 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: on()=>_next_state :- E{on()} E{!pressed()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: pressed()=>_next_state :- E{_io_digitalRead(12, HIGH)}.\nvoid\n_inductive_rule_5 ()\n{\n  if (_io_digitalRead_bb (_curr_state, 12, HIGH) != 0)\n    {\n      if (pressed_ (_next_state) == 0)\n        {\n          write_pressed (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_digitalWrite(13, HIGH)=>_next_state :- E{on()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_digitalWrite(13, LOW)=>_next_state :- E{off()}.\nvoid\n_inductive_rule_7 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_8: #_io_pinIn(12)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinIn_b (_next_state, 12)) == 0)\n        {\n          // make io call\n          pinMode (12, INPUT);\n          write__io_pinIn (_next_state, 12);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_9: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_9 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_off (_curr_state);\n  _added_facts = true;\n  write_setup (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n  _inductive_rule_6 ();\n  _inductive_rule_7 ();\n  _inductive_rule_8 ();\n  _inductive_rule_9 ();\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">off()@0.</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">off()@next :- off(), !pressed().</span>\n<span class=\"cm\">off()@next :- on(), pressed().</span>\n<span class=\"cm\">on()@next :- off(), pressed().</span>\n<span class=\"cm\">on()@next :- on(), !pressed().</span>\n<span class=\"cm\">pressed()@next :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- off().</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n<span class=\"cm\">Error: Predicate &quot;_io_digitalRead&quot; not found in fromList [(&quot;_io_digitalWrite&quot;,2),(&quot;_io_pinIn&quot;,1),(&quot;_io_pinOut&quot;,1),(&quot;off&quot;,0),(&quot;on&quot;,0),(&quot;pressed&quot;,0),(&quot;setup&quot;,0)]</span>\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinIn 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_off 1</span>\n<span class=\"cp\">#define _size_on 1</span>\n<span class=\"cp\">#define _size_pressed 1</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">8</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_off</span><span class=\"p\">,</span>\n<span class=\"n\">_size_on</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_pressed</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_setup</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalWrite 1</span>\n<span class=\"cp\">#define _type__io_pinIn 2</span>\n<span class=\"cp\">#define _type__io_pinOut 3</span>\n<span class=\"cp\">#define _type_off 4</span>\n<span class=\"cp\">#define _type_on 5</span>\n<span class=\"cp\">#define _type_pressed 6</span>\n<span class=\"cp\">#define _type_setup 7</span>\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_off(buf) _write_fact_(buf, _type_off)</span>\n<span class=\"cp\">#define write_on(buf) _write_fact_(buf, _type_on)</span>\n<span class=\"cp\">#define write_pressed(buf) _write_fact_(buf, _type_pressed)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinIn</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define off_(buf) _next__fact(buf,_type_off)</span>\n\n<span class=\"cp\">#define on_(buf) _next__fact(buf,_type_on)</span>\n\n<span class=\"cp\">#define pressed_(buf) _next__fact(buf,_type_pressed)</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: off()=&gt;_next_state :- E{off()} E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: off()=&gt;_next_state :- E{on()} E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: on()=&gt;_next_state :- E{off()} E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: on()=&gt;_next_state :- E{on()} E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: pressed()=&gt;_next_state :- E{_io_digitalRead(12, HIGH)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{off()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_pinIn(12)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinIn</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_9: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"nf\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press_better.dl",
      "template": "no runtime",
      "setting": "normal",
      "osource": ".decl pressed\n.decl hold\n.decl released\n.decl on\n.decl off\n.decl setup\n\n% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Input\n#digitalRead(12,?)@next.\npressed@next :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- pressed.\n#digitalWrite(13, #LOW)@next :- !pressed.\n% these two output rules for flip_flop\n%#digitalWrite(13, #HIGH)@next :- on.\n%#digitalWrite(13, #LOW)@next :- off.\n\noff@0.\nsetup@0.\n\non@next :- off, released.\non@next :- on, !released.\noff@next :- on, released.\noff@next :- off, !released.\nhold@next :- pressed.\nreleased@next :- hold, !pressed.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl hold/0()\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl setup/0()\noff()@0.\nhold()@next :- pressed().\noff()@next :- off(), !released().\noff()@next :- on(), released().\non()@next :- off(), released().\non()@next :- on(), !released().\npressed()@next :- _io_digitalRead(12, HIGH).\nreleased()@next :- hold(), !pressed().\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- pressed().\n#_io_digitalWrite(13, LOW)@next :- !pressed().\n\n\nProgram 3:\n.decl hold/0()\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl setup/0()\nsetup()@0.\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n*/\n\n#define _rulecount 0\n#define _bufsize 256\n\nbyte _fsm2_state = 2;\nbyte _fsm1_state = 1;\nbyte _fsm1_slot_1;\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n/* SETUP */\n\n\n/* LOOP */\n\nif (_fsm2_state == 1)\n  {\n    {\n    _fsm2_trans1:\n      if (true)\n        {\n          _fsm2_state = 1;\n        }\n      else;\n    }\n  }\nelse if (_fsm2_state == 3)\n  {\n    {\n      pinMode (12, INPUT);\n    }\n    {\n      pinMode (13, OUTPUT);\n    }\n    {\n      goto _fsm2_trans1;\n    }\n  }\nelse if (_fsm2_state == 2)\n  {\n    {\n    _fsm2_trans2:\n      if (true)\n        {\n          _fsm2_state = 3;\n        }\n      else;\n    }\n  }\nelse;\nif (_fsm1_state == 4)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n    _fsm1_trans4:\n      if (HIGH == _fsm1_slot_1)\n        {\n          _fsm1_state = 12;\n        }\n      else if (HIGH != _fsm1_slot_1)\n        {\n          _fsm1_state = 7;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 10)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n    _fsm1_trans10:\n      if (HIGH == _fsm1_slot_1)\n        {\n          _fsm1_state = 10;\n        }\n      else if (HIGH != _fsm1_slot_1)\n        {\n          _fsm1_state = 4;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 5)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n    _fsm1_trans5:\n      if (HIGH == _fsm1_slot_1)\n        {\n          _fsm1_state = 13;\n        }\n      else if (HIGH != _fsm1_slot_1)\n        {\n          _fsm1_state = 9;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 11)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n    _fsm1_trans11:\n      if (HIGH == _fsm1_slot_1)\n        {\n          _fsm1_state = 11;\n        }\n      else if (HIGH != _fsm1_slot_1)\n        {\n          _fsm1_state = 5;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 2)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n    _fsm1_trans2:\n      if (HIGH == _fsm1_slot_1)\n        {\n          _fsm1_state = 6;\n        }\n      else if (HIGH != _fsm1_slot_1)\n        {\n          _fsm1_state = 2;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 6)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      goto _fsm1_trans10;\n    }\n  }\nelse if (_fsm1_state == 12)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      goto _fsm1_trans11;\n    }\n  }\nelse if (_fsm1_state == 7)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n    _fsm1_trans7:\n      if (HIGH == _fsm1_slot_1)\n        {\n          _fsm1_state = 8;\n        }\n      else if (HIGH != _fsm1_slot_1)\n        {\n          _fsm1_state = 3;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 3)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      goto _fsm1_trans7;\n    }\n  }\nelse if (_fsm1_state == 8)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      goto _fsm1_trans11;\n    }\n  }\nelse if (_fsm1_state == 13)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      goto _fsm1_trans10;\n    }\n  }\nelse if (_fsm1_state == 9)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      goto _fsm1_trans2;\n    }\n  }\nelse if (_fsm1_state == 1)\n  {\n    {\n    _fsm1_trans1:\n      if (true)\n        {\n          _fsm1_state = 2;\n        }\n      else;\n    }\n  }\nelse;\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl hold/0()</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">off()@0.</span>\n<span class=\"cm\">hold()@next :- pressed().</span>\n<span class=\"cm\">off()@next :- off(), !released().</span>\n<span class=\"cm\">off()@next :- on(), released().</span>\n<span class=\"cm\">on()@next :- off(), released().</span>\n<span class=\"cm\">on()@next :- on(), !released().</span>\n<span class=\"cm\">pressed()@next :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">released()@next :- hold(), !pressed().</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !pressed().</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl hold/0()</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cm\">/* SETUP */</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm2_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans4</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans10</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans5</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans11</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans10</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans11</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans7</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans7</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans11</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans10</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans2</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press_better.dl",
      "template": "no runtime",
      "setting": "no FSM",
      "osource": ".decl pressed\n.decl hold\n.decl released\n.decl on\n.decl off\n.decl setup\n\n% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Input\n#digitalRead(12,?)@next.\npressed@next :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- pressed.\n#digitalWrite(13, #LOW)@next :- !pressed.\n% these two output rules for flip_flop\n%#digitalWrite(13, #HIGH)@next :- on.\n%#digitalWrite(13, #LOW)@next :- off.\n\noff@0.\nsetup@0.\n\non@next :- off, released.\non@next :- on, !released.\noff@next :- on, released.\noff@next :- off, !released.\nhold@next :- pressed.\nreleased@next :- hold, !pressed.\n",
      "tsource": "/*\nProgram 1:\n.decl hold/0()\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl setup/0()\noff()@0.\nsetup()@0.\nhold()@next :- pressed().\noff()@next :- off(), !released().\noff()@next :- on(), released().\non()@next :- off(), released().\non()@next :- on(), !released().\npressed()@next :- _io_digitalRead(12, HIGH).\nreleased()@next :- hold(), !pressed().\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- pressed().\n#_io_digitalWrite(13, LOW)@next :- !pressed().\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n*/\n\n#define _rulecount 5\n#define _bufsize 256\n\n\n\n#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_pinIn 1 + sizeof(byte)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_hold 1\n#define _size_off 1\n#define _size_on 1\n#define _size_pressed 1\n#define _size_released 1\n#define _size_setup 1\nbyte _sizes[11] =\n  { 0, _size__io_digitalRead, _size__io_digitalWrite, _size__io_pinIn,\n_size__io_pinOut, _size_hold, _size_off, _size_on, _size_pressed, _size_released,\n_size_setup\n};\n\n#define _type__io_digitalRead 1\n#define _type__io_digitalWrite 2\n#define _type__io_pinIn 3\n#define _type__io_pinOut 4\n#define _type_hold 5\n#define _type_off 6\n#define _type_on 7\n#define _type_pressed 8\n#define _type_released 9\n#define _type_setup 10\n\n\n\ninline byte\n_io_digitalRead_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalRead_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_pinIn_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_hold(buf) _write_fact_(buf, _type_hold)\n#define write_off(buf) _write_fact_(buf, _type_off)\n#define write_on(buf) _write_fact_(buf, _type_on)\n#define write_pressed(buf) _write_fact_(buf, _type_pressed)\n#define write_released(buf) _write_fact_(buf, _type_released)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n\n#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)\n\nbyte *\n_io_digitalRead_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1 || _io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)\n\nbyte *\n_io_pinIn_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinIn)) != 0)\n    {\n      if (_io_pinIn_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinIn;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define hold_(buf) _next__fact(buf,_type_hold)\n\n#define off_(buf) _next__fact(buf,_type_off)\n\n#define on_(buf) _next__fact(buf,_type_on)\n\n#define pressed_(buf) _next__fact(buf,_type_pressed)\n\n#define released_(buf) _next__fact(buf,_type_released)\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: hold()=>_next_state :- E{pressed()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (pressed_ (_curr_state) != 0)\n    {\n      if (hold_ (_next_state) == 0)\n        {\n          write_hold (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: off()=>_next_state :- E{off()} E{!released()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) == 0)\n        {\n          if (off_ (_next_state) == 0)\n            {\n              write_off (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: off()=>_next_state :- E{on()} E{released()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) != 0)\n        {\n          if (off_ (_next_state) == 0)\n            {\n              write_off (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: on()=>_next_state :- E{off()} E{released()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) != 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: on()=>_next_state :- E{on()} E{!released()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) == 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: pressed()=>_next_state :- E{_io_digitalRead(12, HIGH)}.\nvoid\n_inductive_rule_6 ()\n{\n  if (_io_digitalRead_bb (_curr_state, 12, HIGH) != 0)\n    {\n      if (pressed_ (_next_state) == 0)\n        {\n          write_pressed (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: released()=>_next_state :- E{hold()} E{!pressed()}.\nvoid\n_inductive_rule_7 ()\n{\n  if (hold_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          if (released_ (_next_state) == 0)\n            {\n              write_released (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_8: #_io_digitalRead(12, _)=>_next_state :- .\nvoid\n_inductive_rule_8 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_digitalRead_bf (_next_state, 12)) == 0)\n    {\n// make io call\n      int Val = digitalRead (12);\n      write__io_digitalRead (_next_state, 12, Val);\n    }\n};\n\n// _inductive_rule_9: #_io_digitalWrite(13, HIGH)=>_next_state :- E{pressed()}.\nvoid\n_inductive_rule_9 ()\n{\n  if (pressed_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_10: #_io_digitalWrite(13, LOW)=>_next_state :- E{!pressed()}.\nvoid\n_inductive_rule_10 ()\n{\n  if (pressed_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_11: #_io_pinIn(12)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_11 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinIn_b (_next_state, 12)) == 0)\n        {\n          // make io call\n          pinMode (12, INPUT);\n          write__io_pinIn (_next_state, 12);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_12: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_12 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n/* SETUP */\nwrite_off (_curr_state);\n_added_facts = true;\nwrite_setup (_curr_state);\n_added_facts = true;\n\n\n/* LOOP */\n\n\n\n\n// inductive_phase\n_inductive_rule_1 ();\n_inductive_rule_2 ();\n_inductive_rule_3 ();\n_inductive_rule_4 ();\n_inductive_rule_5 ();\n_inductive_rule_6 ();\n_inductive_rule_7 ();\n_inductive_rule_8 ();\n_inductive_rule_9 ();\n_inductive_rule_10 ();\n_inductive_rule_11 ();\n_inductive_rule_12 ();\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl hold/0()</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">off()@0.</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">hold()@next :- pressed().</span>\n<span class=\"cm\">off()@next :- off(), !released().</span>\n<span class=\"cm\">off()@next :- on(), released().</span>\n<span class=\"cm\">on()@next :- off(), released().</span>\n<span class=\"cm\">on()@next :- on(), !released().</span>\n<span class=\"cm\">pressed()@next :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">released()@next :- hold(), !pressed().</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !pressed().</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 5</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n\n\n<span class=\"cp\">#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinIn 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_hold 1</span>\n<span class=\"cp\">#define _size_off 1</span>\n<span class=\"cp\">#define _size_on 1</span>\n<span class=\"cp\">#define _size_pressed 1</span>\n<span class=\"cp\">#define _size_released 1</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">11</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_hold</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_on</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_pressed</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_released</span><span class=\"p\">,</span>\n<span class=\"n\">_size_setup</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalRead 1</span>\n<span class=\"cp\">#define _type__io_digitalWrite 2</span>\n<span class=\"cp\">#define _type__io_pinIn 3</span>\n<span class=\"cp\">#define _type__io_pinOut 4</span>\n<span class=\"cp\">#define _type_hold 5</span>\n<span class=\"cp\">#define _type_off 6</span>\n<span class=\"cp\">#define _type_on 7</span>\n<span class=\"cp\">#define _type_pressed 8</span>\n<span class=\"cp\">#define _type_released 9</span>\n<span class=\"cp\">#define _type_setup 10</span>\n\n\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_hold(buf) _write_fact_(buf, _type_hold)</span>\n<span class=\"cp\">#define write_off(buf) _write_fact_(buf, _type_off)</span>\n<span class=\"cp\">#define write_on(buf) _write_fact_(buf, _type_on)</span>\n<span class=\"cp\">#define write_pressed(buf) _write_fact_(buf, _type_pressed)</span>\n<span class=\"cp\">#define write_released(buf) _write_fact_(buf, _type_released)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n\n<span class=\"cp\">#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalRead_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinIn</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define hold_(buf) _next__fact(buf,_type_hold)</span>\n\n<span class=\"cp\">#define off_(buf) _next__fact(buf,_type_off)</span>\n\n<span class=\"cp\">#define on_(buf) _next__fact(buf,_type_on)</span>\n\n<span class=\"cp\">#define pressed_(buf) _next__fact(buf,_type_pressed)</span>\n\n<span class=\"cp\">#define released_(buf) _next__fact(buf,_type_released)</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: hold()=&gt;_next_state :- E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hold_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_hold</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: off()=&gt;_next_state :- E{off()} E{!released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: off()=&gt;_next_state :- E{on()} E{released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: on()=&gt;_next_state :- E{off()} E{released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: on()=&gt;_next_state :- E{on()} E{!released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: pressed()=&gt;_next_state :- E{_io_digitalRead(12, HIGH)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: released()=&gt;_next_state :- E{hold()} E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hold_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_released</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_digitalRead(12, _)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_9: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_10: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_10</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_11: #_io_pinIn(12)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_11</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinIn</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_12: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_12</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cm\">/* SETUP */</span>\n<span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n\n\n\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_10</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_11</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_12</span><span class=\"w\"> </span><span class=\"p\">();</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press_better.dl",
      "template": "arduino",
      "setting": "normal",
      "osource": ".decl pressed\n.decl hold\n.decl released\n.decl on\n.decl off\n.decl setup\n\n% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Input\n#digitalRead(12,?)@next.\npressed@next :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- pressed.\n#digitalWrite(13, #LOW)@next :- !pressed.\n% these two output rules for flip_flop\n%#digitalWrite(13, #HIGH)@next :- on.\n%#digitalWrite(13, #LOW)@next :- off.\n\noff@0.\nsetup@0.\n\non@next :- off, released.\non@next :- on, !released.\noff@next :- on, released.\noff@next :- off, !released.\nhold@next :- pressed.\nreleased@next :- hold, !pressed.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl hold/0()\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl setup/0()\noff()@0.\nhold()@next :- pressed().\noff()@next :- off(), !released().\noff()@next :- on(), released().\non()@next :- off(), released().\non()@next :- on(), !released().\npressed()@next :- _io_digitalRead(12, HIGH).\nreleased()@next :- hold(), !pressed().\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- pressed().\n#_io_digitalWrite(13, LOW)@next :- !pressed().\n\n\nProgram 3:\n.decl hold/0()\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl setup/0()\nsetup()@0.\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm2_state = 2;\nbyte _fsm1_state = 1;\nbyte _fsm1_slot_1;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm2_state == 1)\n    {\n      {\n      _fsm2_trans1:\n        if (true)\n          {\n            _fsm2_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm2_state == 3)\n    {\n      {\n        pinMode (12, INPUT);\n      }\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n        goto _fsm2_trans1;\n      }\n    }\n  else if (_fsm2_state == 2)\n    {\n      {\n      _fsm2_trans2:\n        if (true)\n          {\n            _fsm2_state = 3;\n          }\n        else;\n      }\n    }\n  else;\n  if (_fsm1_state == 4)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans4:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 12;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 7;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 10)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans10:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 10;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 4;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 5)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans5:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 13;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 9;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 11)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans11:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 11;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n      _fsm1_trans2:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 6;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 6)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans10;\n      }\n    }\n  else if (_fsm1_state == 12)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans11;\n      }\n    }\n  else if (_fsm1_state == 7)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n      _fsm1_trans7:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 8;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans7;\n      }\n    }\n  else if (_fsm1_state == 8)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans11;\n      }\n    }\n  else if (_fsm1_state == 13)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans10;\n      }\n    }\n  else if (_fsm1_state == 9)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans2;\n      }\n    }\n  else if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl hold/0()</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">off()@0.</span>\n<span class=\"cm\">hold()@next :- pressed().</span>\n<span class=\"cm\">off()@next :- off(), !released().</span>\n<span class=\"cm\">off()@next :- on(), released().</span>\n<span class=\"cm\">on()@next :- off(), released().</span>\n<span class=\"cm\">on()@next :- on(), !released().</span>\n<span class=\"cm\">pressed()@next :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">released()@next :- hold(), !pressed().</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !pressed().</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl hold/0()</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans4</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans10</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans5</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans11</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans10</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans11</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans7</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans7</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans11</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans10</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans2</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press_better.dl",
      "template": "arduino",
      "setting": "no FSM",
      "osource": ".decl pressed\n.decl hold\n.decl released\n.decl on\n.decl off\n.decl setup\n\n% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Input\n#digitalRead(12,?)@next.\npressed@next :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- pressed.\n#digitalWrite(13, #LOW)@next :- !pressed.\n% these two output rules for flip_flop\n%#digitalWrite(13, #HIGH)@next :- on.\n%#digitalWrite(13, #LOW)@next :- off.\n\noff@0.\nsetup@0.\n\non@next :- off, released.\non@next :- on, !released.\noff@next :- on, released.\noff@next :- off, !released.\nhold@next :- pressed.\nreleased@next :- hold, !pressed.\n",
      "tsource": "/*\nProgram 1:\n.decl hold/0()\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl setup/0()\noff()@0.\nsetup()@0.\nhold()@next :- pressed().\noff()@next :- off(), !released().\noff()@next :- on(), released().\non()@next :- off(), released().\non()@next :- on(), !released().\npressed()@next :- _io_digitalRead(12, HIGH).\nreleased()@next :- hold(), !pressed().\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- pressed().\n#_io_digitalWrite(13, LOW)@next :- !pressed().\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 5\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_pinIn 1 + sizeof(byte)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_hold 1\n#define _size_off 1\n#define _size_on 1\n#define _size_pressed 1\n#define _size_released 1\n#define _size_setup 1\nbyte _sizes[11] =\n  { 0, _size__io_digitalRead, _size__io_digitalWrite, _size__io_pinIn,\n_size__io_pinOut, _size_hold, _size_off, _size_on, _size_pressed, _size_released,\n_size_setup\n};\n\n#define _type__io_digitalRead 1\n#define _type__io_digitalWrite 2\n#define _type__io_pinIn 3\n#define _type__io_pinOut 4\n#define _type_hold 5\n#define _type_off 6\n#define _type_on 7\n#define _type_pressed 8\n#define _type_released 9\n#define _type_setup 10\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline byte\n_io_digitalRead_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalRead_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_pinIn_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_hold(buf) _write_fact_(buf, _type_hold)\n#define write_off(buf) _write_fact_(buf, _type_off)\n#define write_on(buf) _write_fact_(buf, _type_on)\n#define write_pressed(buf) _write_fact_(buf, _type_pressed)\n#define write_released(buf) _write_fact_(buf, _type_released)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n\n#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)\n\nbyte *\n_io_digitalRead_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1 || _io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)\n\nbyte *\n_io_pinIn_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinIn)) != 0)\n    {\n      if (_io_pinIn_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinIn;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define hold_(buf) _next__fact(buf,_type_hold)\n\n#define off_(buf) _next__fact(buf,_type_off)\n\n#define on_(buf) _next__fact(buf,_type_on)\n\n#define pressed_(buf) _next__fact(buf,_type_pressed)\n\n#define released_(buf) _next__fact(buf,_type_released)\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: hold()=>_next_state :- E{pressed()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (pressed_ (_curr_state) != 0)\n    {\n      if (hold_ (_next_state) == 0)\n        {\n          write_hold (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: off()=>_next_state :- E{off()} E{!released()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) == 0)\n        {\n          if (off_ (_next_state) == 0)\n            {\n              write_off (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: off()=>_next_state :- E{on()} E{released()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) != 0)\n        {\n          if (off_ (_next_state) == 0)\n            {\n              write_off (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: on()=>_next_state :- E{off()} E{released()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) != 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: on()=>_next_state :- E{on()} E{!released()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) == 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: pressed()=>_next_state :- E{_io_digitalRead(12, HIGH)}.\nvoid\n_inductive_rule_6 ()\n{\n  if (_io_digitalRead_bb (_curr_state, 12, HIGH) != 0)\n    {\n      if (pressed_ (_next_state) == 0)\n        {\n          write_pressed (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: released()=>_next_state :- E{hold()} E{!pressed()}.\nvoid\n_inductive_rule_7 ()\n{\n  if (hold_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          if (released_ (_next_state) == 0)\n            {\n              write_released (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_8: #_io_digitalRead(12, _)=>_next_state :- .\nvoid\n_inductive_rule_8 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_digitalRead_bf (_next_state, 12)) == 0)\n    {\n// make io call\n      int Val = digitalRead (12);\n      write__io_digitalRead (_next_state, 12, Val);\n    }\n};\n\n// _inductive_rule_9: #_io_digitalWrite(13, HIGH)=>_next_state :- E{pressed()}.\nvoid\n_inductive_rule_9 ()\n{\n  if (pressed_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_10: #_io_digitalWrite(13, LOW)=>_next_state :- E{!pressed()}.\nvoid\n_inductive_rule_10 ()\n{\n  if (pressed_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_11: #_io_pinIn(12)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_11 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinIn_b (_next_state, 12)) == 0)\n        {\n          // make io call\n          pinMode (12, INPUT);\n          write__io_pinIn (_next_state, 12);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_12: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_12 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_off (_curr_state);\n  _added_facts = true;\n  write_setup (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n  _inductive_rule_6 ();\n  _inductive_rule_7 ();\n  _inductive_rule_8 ();\n  _inductive_rule_9 ();\n  _inductive_rule_10 ();\n  _inductive_rule_11 ();\n  _inductive_rule_12 ();\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl hold/0()</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">off()@0.</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">hold()@next :- pressed().</span>\n<span class=\"cm\">off()@next :- off(), !released().</span>\n<span class=\"cm\">off()@next :- on(), released().</span>\n<span class=\"cm\">on()@next :- off(), released().</span>\n<span class=\"cm\">on()@next :- on(), !released().</span>\n<span class=\"cm\">pressed()@next :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">released()@next :- hold(), !pressed().</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !pressed().</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 5</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinIn 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_hold 1</span>\n<span class=\"cp\">#define _size_off 1</span>\n<span class=\"cp\">#define _size_on 1</span>\n<span class=\"cp\">#define _size_pressed 1</span>\n<span class=\"cp\">#define _size_released 1</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">11</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_hold</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_on</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_pressed</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_released</span><span class=\"p\">,</span>\n<span class=\"n\">_size_setup</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalRead 1</span>\n<span class=\"cp\">#define _type__io_digitalWrite 2</span>\n<span class=\"cp\">#define _type__io_pinIn 3</span>\n<span class=\"cp\">#define _type__io_pinOut 4</span>\n<span class=\"cp\">#define _type_hold 5</span>\n<span class=\"cp\">#define _type_off 6</span>\n<span class=\"cp\">#define _type_on 7</span>\n<span class=\"cp\">#define _type_pressed 8</span>\n<span class=\"cp\">#define _type_released 9</span>\n<span class=\"cp\">#define _type_setup 10</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_hold(buf) _write_fact_(buf, _type_hold)</span>\n<span class=\"cp\">#define write_off(buf) _write_fact_(buf, _type_off)</span>\n<span class=\"cp\">#define write_on(buf) _write_fact_(buf, _type_on)</span>\n<span class=\"cp\">#define write_pressed(buf) _write_fact_(buf, _type_pressed)</span>\n<span class=\"cp\">#define write_released(buf) _write_fact_(buf, _type_released)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n\n<span class=\"cp\">#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinIn</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define hold_(buf) _next__fact(buf,_type_hold)</span>\n\n<span class=\"cp\">#define off_(buf) _next__fact(buf,_type_off)</span>\n\n<span class=\"cp\">#define on_(buf) _next__fact(buf,_type_on)</span>\n\n<span class=\"cp\">#define pressed_(buf) _next__fact(buf,_type_pressed)</span>\n\n<span class=\"cp\">#define released_(buf) _next__fact(buf,_type_released)</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: hold()=&gt;_next_state :- E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hold_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_hold</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: off()=&gt;_next_state :- E{off()} E{!released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: off()=&gt;_next_state :- E{on()} E{released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: on()=&gt;_next_state :- E{off()} E{released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: on()=&gt;_next_state :- E{on()} E{!released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: pressed()=&gt;_next_state :- E{_io_digitalRead(12, HIGH)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: released()=&gt;_next_state :- E{hold()} E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hold_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_released</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_digitalRead(12, _)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_9: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_10: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_10</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_11: #_io_pinIn(12)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_11</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinIn</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_12: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_12</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_10</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_11</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_12</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press_better.dl",
      "template": "lego ev3",
      "setting": "normal",
      "osource": ".decl pressed\n.decl hold\n.decl released\n.decl on\n.decl off\n.decl setup\n\n% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Input\n#digitalRead(12,?)@next.\npressed@next :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- pressed.\n#digitalWrite(13, #LOW)@next :- !pressed.\n% these two output rules for flip_flop\n%#digitalWrite(13, #HIGH)@next :- on.\n%#digitalWrite(13, #LOW)@next :- off.\n\noff@0.\nsetup@0.\n\non@next :- off, released.\non@next :- on, !released.\noff@next :- on, released.\noff@next :- off, !released.\nhold@next :- pressed.\nreleased@next :- hold, !pressed.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl hold/0()\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl setup/0()\noff()@0.\nhold()@next :- pressed().\noff()@next :- off(), !released().\noff()@next :- on(), released().\non()@next :- off(), released().\non()@next :- on(), !released().\npressed()@next :- _io_digitalRead(12, HIGH).\nreleased()@next :- hold(), !pressed().\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- pressed().\n#_io_digitalWrite(13, LOW)@next :- !pressed().\n\n\nProgram 3:\n.decl hold/0()\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl setup/0()\nsetup()@0.\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n*/\n#include \"brick.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm2_state = 2;\nbyte _fsm1_state = 1;\nbyte _fsm1_slot_1;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm2_state == 1)\n    {\n      {\n      _fsm2_trans1:\n        if (true)\n          {\n            _fsm2_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm2_state == 3)\n    {\n      {\n        pinMode (12, INPUT);\n      }\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n        goto _fsm2_trans1;\n      }\n    }\n  else if (_fsm2_state == 2)\n    {\n      {\n      _fsm2_trans2:\n        if (true)\n          {\n            _fsm2_state = 3;\n          }\n        else;\n      }\n    }\n  else;\n  if (_fsm1_state == 4)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans4:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 12;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 7;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 10)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans10:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 10;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 4;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 5)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans5:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 13;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 9;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 11)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans11:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 11;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n      _fsm1_trans2:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 6;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 6)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans10;\n      }\n    }\n  else if (_fsm1_state == 12)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans11;\n      }\n    }\n  else if (_fsm1_state == 7)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n      _fsm1_trans7:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 8;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans7;\n      }\n    }\n  else if (_fsm1_state == 8)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans11;\n      }\n    }\n  else if (_fsm1_state == 13)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans10;\n      }\n    }\n  else if (_fsm1_state == 9)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans2;\n      }\n    }\n  else if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl hold/0()</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">off()@0.</span>\n<span class=\"cm\">hold()@next :- pressed().</span>\n<span class=\"cm\">off()@next :- off(), !released().</span>\n<span class=\"cm\">off()@next :- on(), released().</span>\n<span class=\"cm\">on()@next :- off(), released().</span>\n<span class=\"cm\">on()@next :- on(), !released().</span>\n<span class=\"cm\">pressed()@next :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">released()@next :- hold(), !pressed().</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !pressed().</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl hold/0()</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans4</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans10</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans5</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans11</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans10</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans11</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans7</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans7</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans11</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans10</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans2</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"n\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press_better.dl",
      "template": "lego ev3",
      "setting": "no FSM",
      "osource": ".decl pressed\n.decl hold\n.decl released\n.decl on\n.decl off\n.decl setup\n\n% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Input\n#digitalRead(12,?)@next.\npressed@next :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- pressed.\n#digitalWrite(13, #LOW)@next :- !pressed.\n% these two output rules for flip_flop\n%#digitalWrite(13, #HIGH)@next :- on.\n%#digitalWrite(13, #LOW)@next :- off.\n\noff@0.\nsetup@0.\n\non@next :- off, released.\non@next :- on, !released.\noff@next :- on, released.\noff@next :- off, !released.\nhold@next :- pressed.\nreleased@next :- hold, !pressed.\n",
      "tsource": "/*\nProgram 1:\n.decl hold/0()\n.decl off/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl setup/0()\noff()@0.\nsetup()@0.\nhold()@next :- pressed().\noff()@next :- off(), !released().\noff()@next :- on(), released().\non()@next :- off(), released().\non()@next :- on(), !released().\npressed()@next :- _io_digitalRead(12, HIGH).\nreleased()@next :- hold(), !pressed().\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- pressed().\n#_io_digitalWrite(13, LOW)@next :- !pressed().\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n*/\n#include \"brick.h\"\n\n#define _rulecount 5\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_pinIn 1 + sizeof(byte)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_hold 1\n#define _size_off 1\n#define _size_on 1\n#define _size_pressed 1\n#define _size_released 1\n#define _size_setup 1\nbyte _sizes[11] =\n  { 0, _size__io_digitalRead, _size__io_digitalWrite, _size__io_pinIn,\n_size__io_pinOut, _size_hold, _size_off, _size_on, _size_pressed, _size_released,\n_size_setup\n};\n\n#define _type__io_digitalRead 1\n#define _type__io_digitalWrite 2\n#define _type__io_pinIn 3\n#define _type__io_pinOut 4\n#define _type_hold 5\n#define _type_off 6\n#define _type_on 7\n#define _type_pressed 8\n#define _type_released 9\n#define _type_setup 10\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline byte\n_io_digitalRead_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalRead_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_pinIn_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_hold(buf) _write_fact_(buf, _type_hold)\n#define write_off(buf) _write_fact_(buf, _type_off)\n#define write_on(buf) _write_fact_(buf, _type_on)\n#define write_pressed(buf) _write_fact_(buf, _type_pressed)\n#define write_released(buf) _write_fact_(buf, _type_released)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n\n#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)\n\nbyte *\n_io_digitalRead_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1 || _io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)\n\nbyte *\n_io_pinIn_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinIn)) != 0)\n    {\n      if (_io_pinIn_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinIn;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define hold_(buf) _next__fact(buf,_type_hold)\n\n#define off_(buf) _next__fact(buf,_type_off)\n\n#define on_(buf) _next__fact(buf,_type_on)\n\n#define pressed_(buf) _next__fact(buf,_type_pressed)\n\n#define released_(buf) _next__fact(buf,_type_released)\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: hold()=>_next_state :- E{pressed()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (pressed_ (_curr_state) != 0)\n    {\n      if (hold_ (_next_state) == 0)\n        {\n          write_hold (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: off()=>_next_state :- E{off()} E{!released()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) == 0)\n        {\n          if (off_ (_next_state) == 0)\n            {\n              write_off (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: off()=>_next_state :- E{on()} E{released()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) != 0)\n        {\n          if (off_ (_next_state) == 0)\n            {\n              write_off (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: on()=>_next_state :- E{off()} E{released()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (off_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) != 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: on()=>_next_state :- E{on()} E{!released()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) == 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: pressed()=>_next_state :- E{_io_digitalRead(12, HIGH)}.\nvoid\n_inductive_rule_6 ()\n{\n  if (_io_digitalRead_bb (_curr_state, 12, HIGH) != 0)\n    {\n      if (pressed_ (_next_state) == 0)\n        {\n          write_pressed (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: released()=>_next_state :- E{hold()} E{!pressed()}.\nvoid\n_inductive_rule_7 ()\n{\n  if (hold_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          if (released_ (_next_state) == 0)\n            {\n              write_released (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_8: #_io_digitalRead(12, _)=>_next_state :- .\nvoid\n_inductive_rule_8 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_digitalRead_bf (_next_state, 12)) == 0)\n    {\n// make io call\n      int Val = digitalRead (12);\n      write__io_digitalRead (_next_state, 12, Val);\n    }\n};\n\n// _inductive_rule_9: #_io_digitalWrite(13, HIGH)=>_next_state :- E{pressed()}.\nvoid\n_inductive_rule_9 ()\n{\n  if (pressed_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_10: #_io_digitalWrite(13, LOW)=>_next_state :- E{!pressed()}.\nvoid\n_inductive_rule_10 ()\n{\n  if (pressed_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_11: #_io_pinIn(12)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_11 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinIn_b (_next_state, 12)) == 0)\n        {\n          // make io call\n          pinMode (12, INPUT);\n          write__io_pinIn (_next_state, 12);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_12: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_12 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_off (_curr_state);\n  _added_facts = true;\n  write_setup (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n  _inductive_rule_6 ();\n  _inductive_rule_7 ();\n  _inductive_rule_8 ();\n  _inductive_rule_9 ();\n  _inductive_rule_10 ();\n  _inductive_rule_11 ();\n  _inductive_rule_12 ();\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl hold/0()</span>\n<span class=\"cm\">.decl off/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">off()@0.</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">hold()@next :- pressed().</span>\n<span class=\"cm\">off()@next :- off(), !released().</span>\n<span class=\"cm\">off()@next :- on(), released().</span>\n<span class=\"cm\">on()@next :- off(), released().</span>\n<span class=\"cm\">on()@next :- on(), !released().</span>\n<span class=\"cm\">pressed()@next :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">released()@next :- hold(), !pressed().</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !pressed().</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 5</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinIn 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_hold 1</span>\n<span class=\"cp\">#define _size_off 1</span>\n<span class=\"cp\">#define _size_on 1</span>\n<span class=\"cp\">#define _size_pressed 1</span>\n<span class=\"cp\">#define _size_released 1</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">11</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_hold</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_off</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_on</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_pressed</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_released</span><span class=\"p\">,</span>\n<span class=\"n\">_size_setup</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalRead 1</span>\n<span class=\"cp\">#define _type__io_digitalWrite 2</span>\n<span class=\"cp\">#define _type__io_pinIn 3</span>\n<span class=\"cp\">#define _type__io_pinOut 4</span>\n<span class=\"cp\">#define _type_hold 5</span>\n<span class=\"cp\">#define _type_off 6</span>\n<span class=\"cp\">#define _type_on 7</span>\n<span class=\"cp\">#define _type_pressed 8</span>\n<span class=\"cp\">#define _type_released 9</span>\n<span class=\"cp\">#define _type_setup 10</span>\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_hold(buf) _write_fact_(buf, _type_hold)</span>\n<span class=\"cp\">#define write_off(buf) _write_fact_(buf, _type_off)</span>\n<span class=\"cp\">#define write_on(buf) _write_fact_(buf, _type_on)</span>\n<span class=\"cp\">#define write_pressed(buf) _write_fact_(buf, _type_pressed)</span>\n<span class=\"cp\">#define write_released(buf) _write_fact_(buf, _type_released)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n\n<span class=\"cp\">#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinIn</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define hold_(buf) _next__fact(buf,_type_hold)</span>\n\n<span class=\"cp\">#define off_(buf) _next__fact(buf,_type_off)</span>\n\n<span class=\"cp\">#define on_(buf) _next__fact(buf,_type_on)</span>\n\n<span class=\"cp\">#define pressed_(buf) _next__fact(buf,_type_pressed)</span>\n\n<span class=\"cp\">#define released_(buf) _next__fact(buf,_type_released)</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: hold()=&gt;_next_state :- E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hold_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_hold</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: off()=&gt;_next_state :- E{off()} E{!released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: off()=&gt;_next_state :- E{on()} E{released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: on()=&gt;_next_state :- E{off()} E{released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">off_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: on()=&gt;_next_state :- E{on()} E{!released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: pressed()=&gt;_next_state :- E{_io_digitalRead(12, HIGH)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: released()=&gt;_next_state :- E{hold()} E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hold_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_released</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_digitalRead(12, _)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_9: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_10: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_10</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_11: #_io_pinIn(12)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_11</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinIn</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_12: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_12</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_off</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_10</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_11</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_12</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"nf\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press_simple.dl",
      "template": "no runtime",
      "setting": "normal",
      "osource": ".decl pressed\n.decl setup\n\n% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Input\n\n#digitalRead(12, ?)@next.\npressed :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- pressed.\n#digitalWrite(13, #LOW)@next :- !pressed.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl pressed/0()\n.decl setup/0()\npressed() :- _io_digitalRead(12, HIGH).\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- pressed().\n#_io_digitalWrite(13, LOW)@next :- !pressed().\n\n\nProgram 3:\n.decl pressed/0()\n.decl setup/0()\nsetup()@0.\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_digitalRead\"]\n2: fromList [\"pressed\"]\n*/\n\n#define _rulecount 0\n#define _bufsize 256\n\nbyte _fsm2_state = 2;\nbyte _fsm1_state = 1;\nbyte _fsm1_slot_1;\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n/* SETUP */\n\n\n/* LOOP */\n\nif (_fsm2_state == 1)\n  {\n    {\n    _fsm2_trans1:\n      if (true)\n        {\n          _fsm2_state = 1;\n        }\n      else;\n    }\n  }\nelse if (_fsm2_state == 3)\n  {\n    {\n      pinMode (12, INPUT);\n    }\n    {\n      pinMode (13, OUTPUT);\n    }\n    {\n      goto _fsm2_trans1;\n    }\n  }\nelse if (_fsm2_state == 2)\n  {\n    {\n    _fsm2_trans2:\n      if (true)\n        {\n          _fsm2_state = 3;\n        }\n      else;\n    }\n  }\nelse;\nif (_fsm1_state == 1)\n  {\n    {\n    _fsm1_trans1:\n      if (true)\n        {\n          _fsm1_state = 3;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 2)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n    _fsm1_trans2:\n      if (HIGH == _fsm1_slot_1)\n        {\n          _fsm1_state = 2;\n        }\n      else if (HIGH != _fsm1_slot_1)\n        {\n          _fsm1_state = 3;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 3)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      goto _fsm1_trans2;\n    }\n  }\nelse;\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">pressed() :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !pressed().</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_digitalRead&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;pressed&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cm\">/* SETUP */</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm2_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans2</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press_simple.dl",
      "template": "no runtime",
      "setting": "no FSM",
      "osource": ".decl pressed\n.decl setup\n\n% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Input\n\n#digitalRead(12, ?)@next.\npressed :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- pressed.\n#digitalWrite(13, #LOW)@next :- !pressed.\n",
      "tsource": "/*\nProgram 1:\n.decl pressed/0()\n.decl setup/0()\nsetup()@0.\npressed() :- _io_digitalRead(12, HIGH).\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- pressed().\n#_io_digitalWrite(13, LOW)@next :- !pressed().\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_digitalRead\"]\n2: fromList [\"pressed\"]\n*/\n\n#define _rulecount 5\n#define _bufsize 256\n\n\n\n#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_pinIn 1 + sizeof(byte)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_pressed 1\n#define _size_setup 1\nbyte _sizes[7] =\n  { 0, _size__io_digitalRead, _size__io_digitalWrite, _size__io_pinIn,\n_size__io_pinOut, _size_pressed, _size_setup\n};\n\n#define _type__io_digitalRead 1\n#define _type__io_digitalWrite 2\n#define _type__io_pinIn 3\n#define _type__io_pinOut 4\n#define _type_pressed 5\n#define _type_setup 6\n\n\n\ninline byte\n_io_digitalRead_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalRead_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_pinIn_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_pressed(buf) _write_fact_(buf, _type_pressed)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n\n#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)\n\nbyte *\n_io_digitalRead_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1 || _io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)\n\nbyte *\n_io_pinIn_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinIn)) != 0)\n    {\n      if (_io_pinIn_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinIn;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define pressed_(buf) _next__fact(buf,_type_pressed)\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: pressed()=>_curr_state :- E{_io_digitalRead(12, HIGH)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (_io_digitalRead_bb (_curr_state, 12, HIGH) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          write_pressed (_curr_state);\n          _added_facts = true;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_1: #_io_digitalRead(12, _)=>_next_state :- .\nvoid\n_inductive_rule_1 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_digitalRead_bf (_next_state, 12)) == 0)\n    {\n// make io call\n      int Val = digitalRead (12);\n      write__io_digitalRead (_next_state, 12, Val);\n    }\n};\n\n// _inductive_rule_2: #_io_digitalWrite(13, HIGH)=>_next_state :- E{pressed()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (pressed_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: #_io_digitalWrite(13, LOW)=>_next_state :- E{!pressed()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (pressed_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: #_io_pinIn(12)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinIn_b (_next_state, 12)) == 0)\n        {\n          // make io call\n          pinMode (12, INPUT);\n          write__io_pinIn (_next_state, 12);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n/* SETUP */\nwrite_setup (_curr_state);\n_added_facts = true;\n\n\n/* LOOP */\n\n\n\n// deductive phase\n\n// stratum 2\n_deductive_rule_1 ();\n// inductive_phase\n_inductive_rule_1 ();\n_inductive_rule_2 ();\n_inductive_rule_3 ();\n_inductive_rule_4 ();\n_inductive_rule_5 ();\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">pressed() :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !pressed().</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_digitalRead&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;pressed&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 5</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n\n\n<span class=\"cp\">#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinIn 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_pressed 1</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">7</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_pressed</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_setup</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalRead 1</span>\n<span class=\"cp\">#define _type__io_digitalWrite 2</span>\n<span class=\"cp\">#define _type__io_pinIn 3</span>\n<span class=\"cp\">#define _type__io_pinOut 4</span>\n<span class=\"cp\">#define _type_pressed 5</span>\n<span class=\"cp\">#define _type_setup 6</span>\n\n\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_pressed(buf) _write_fact_(buf, _type_pressed)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n\n<span class=\"cp\">#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalRead_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinIn</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define pressed_(buf) _next__fact(buf,_type_pressed)</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: pressed()=&gt;_curr_state :- E{_io_digitalRead(12, HIGH)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: #_io_digitalRead(12, _)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_pinIn(12)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinIn</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cm\">/* SETUP */</span>\n<span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n\n\n<span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press_simple.dl",
      "template": "arduino",
      "setting": "normal",
      "osource": ".decl pressed\n.decl setup\n\n% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Input\n\n#digitalRead(12, ?)@next.\npressed :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- pressed.\n#digitalWrite(13, #LOW)@next :- !pressed.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl pressed/0()\n.decl setup/0()\npressed() :- _io_digitalRead(12, HIGH).\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- pressed().\n#_io_digitalWrite(13, LOW)@next :- !pressed().\n\n\nProgram 3:\n.decl pressed/0()\n.decl setup/0()\nsetup()@0.\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_digitalRead\"]\n2: fromList [\"pressed\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm2_state = 2;\nbyte _fsm1_state = 1;\nbyte _fsm1_slot_1;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm2_state == 1)\n    {\n      {\n      _fsm2_trans1:\n        if (true)\n          {\n            _fsm2_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm2_state == 3)\n    {\n      {\n        pinMode (12, INPUT);\n      }\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n        goto _fsm2_trans1;\n      }\n    }\n  else if (_fsm2_state == 2)\n    {\n      {\n      _fsm2_trans2:\n        if (true)\n          {\n            _fsm2_state = 3;\n          }\n        else;\n      }\n    }\n  else;\n  if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans2:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 2;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans2;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">pressed() :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !pressed().</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_digitalRead&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;pressed&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans2</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press_simple.dl",
      "template": "arduino",
      "setting": "no FSM",
      "osource": ".decl pressed\n.decl setup\n\n% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Input\n\n#digitalRead(12, ?)@next.\npressed :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- pressed.\n#digitalWrite(13, #LOW)@next :- !pressed.\n",
      "tsource": "/*\nProgram 1:\n.decl pressed/0()\n.decl setup/0()\nsetup()@0.\npressed() :- _io_digitalRead(12, HIGH).\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- pressed().\n#_io_digitalWrite(13, LOW)@next :- !pressed().\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_digitalRead\"]\n2: fromList [\"pressed\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 5\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_pinIn 1 + sizeof(byte)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_pressed 1\n#define _size_setup 1\nbyte _sizes[7] =\n  { 0, _size__io_digitalRead, _size__io_digitalWrite, _size__io_pinIn,\n_size__io_pinOut, _size_pressed, _size_setup\n};\n\n#define _type__io_digitalRead 1\n#define _type__io_digitalWrite 2\n#define _type__io_pinIn 3\n#define _type__io_pinOut 4\n#define _type_pressed 5\n#define _type_setup 6\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline byte\n_io_digitalRead_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalRead_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_pinIn_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_pressed(buf) _write_fact_(buf, _type_pressed)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n\n#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)\n\nbyte *\n_io_digitalRead_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1 || _io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)\n\nbyte *\n_io_pinIn_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinIn)) != 0)\n    {\n      if (_io_pinIn_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinIn;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define pressed_(buf) _next__fact(buf,_type_pressed)\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: pressed()=>_curr_state :- E{_io_digitalRead(12, HIGH)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (_io_digitalRead_bb (_curr_state, 12, HIGH) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          write_pressed (_curr_state);\n          _added_facts = true;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_1: #_io_digitalRead(12, _)=>_next_state :- .\nvoid\n_inductive_rule_1 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_digitalRead_bf (_next_state, 12)) == 0)\n    {\n// make io call\n      int Val = digitalRead (12);\n      write__io_digitalRead (_next_state, 12, Val);\n    }\n};\n\n// _inductive_rule_2: #_io_digitalWrite(13, HIGH)=>_next_state :- E{pressed()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (pressed_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: #_io_digitalWrite(13, LOW)=>_next_state :- E{!pressed()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (pressed_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: #_io_pinIn(12)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinIn_b (_next_state, 12)) == 0)\n        {\n          // make io call\n          pinMode (12, INPUT);\n          write__io_pinIn (_next_state, 12);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_setup (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n// stratum 2\n  _deductive_rule_1 ();\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">pressed() :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !pressed().</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_digitalRead&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;pressed&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 5</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinIn 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_pressed 1</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">7</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_pressed</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_setup</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalRead 1</span>\n<span class=\"cp\">#define _type__io_digitalWrite 2</span>\n<span class=\"cp\">#define _type__io_pinIn 3</span>\n<span class=\"cp\">#define _type__io_pinOut 4</span>\n<span class=\"cp\">#define _type_pressed 5</span>\n<span class=\"cp\">#define _type_setup 6</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_pressed(buf) _write_fact_(buf, _type_pressed)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n\n<span class=\"cp\">#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinIn</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define pressed_(buf) _next__fact(buf,_type_pressed)</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: pressed()=&gt;_curr_state :- E{_io_digitalRead(12, HIGH)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: #_io_digitalRead(12, _)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_pinIn(12)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinIn</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press_simple.dl",
      "template": "lego ev3",
      "setting": "normal",
      "osource": ".decl pressed\n.decl setup\n\n% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Input\n\n#digitalRead(12, ?)@next.\npressed :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- pressed.\n#digitalWrite(13, #LOW)@next :- !pressed.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl pressed/0()\n.decl setup/0()\npressed() :- _io_digitalRead(12, HIGH).\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- pressed().\n#_io_digitalWrite(13, LOW)@next :- !pressed().\n\n\nProgram 3:\n.decl pressed/0()\n.decl setup/0()\nsetup()@0.\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_digitalRead\"]\n2: fromList [\"pressed\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm2_state = 2;\nbyte _fsm1_state = 1;\nbyte _fsm1_slot_1;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm2_state == 1)\n    {\n      {\n      _fsm2_trans1:\n        if (true)\n          {\n            _fsm2_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm2_state == 3)\n    {\n      {\n        pinMode (12, INPUT);\n      }\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n        goto _fsm2_trans1;\n      }\n    }\n  else if (_fsm2_state == 2)\n    {\n      {\n      _fsm2_trans2:\n        if (true)\n          {\n            _fsm2_state = 3;\n          }\n        else;\n      }\n    }\n  else;\n  if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans2:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 2;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans2;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">pressed() :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !pressed().</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_digitalRead&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;pressed&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans2</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"n\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/blink_press_simple.dl",
      "template": "lego ev3",
      "setting": "no FSM",
      "osource": ".decl pressed\n.decl setup\n\n% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Input\n\n#digitalRead(12, ?)@next.\npressed :- #digitalRead(12, #HIGH).\n\n% Setup and Initialization\nsetup@0.\n#pinIn(12)@next :- setup.\n#pinOut(13)@next :- setup.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- pressed.\n#digitalWrite(13, #LOW)@next :- !pressed.\n",
      "tsource": "/*\nProgram 1:\n.decl pressed/0()\n.decl setup/0()\nsetup()@0.\npressed() :- _io_digitalRead(12, HIGH).\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- pressed().\n#_io_digitalWrite(13, LOW)@next :- !pressed().\n#_io_pinIn(12)@next :- setup().\n#_io_pinOut(13)@next :- setup().\n\n\n\nStrata:\n1: fromList [\"_io_digitalRead\"]\n2: fromList [\"pressed\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 5\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_pinIn 1 + sizeof(byte)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size_pressed 1\n#define _size_setup 1\nbyte _sizes[7] =\n  { 0, _size__io_digitalRead, _size__io_digitalWrite, _size__io_pinIn,\n_size__io_pinOut, _size_pressed, _size_setup\n};\n\n#define _type__io_digitalRead 1\n#define _type__io_digitalWrite 2\n#define _type__io_pinIn 3\n#define _type__io_pinOut 4\n#define _type_pressed 5\n#define _type_setup 6\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline byte\n_io_digitalRead_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalRead_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_pinIn_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write_pressed(buf) _write_fact_(buf, _type_pressed)\n#define write_setup(buf) _write_fact_(buf, _type_setup)\n\n#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)\n\nbyte *\n_io_digitalRead_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1 || _io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)\n\nbyte *\n_io_pinIn_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinIn)) != 0)\n    {\n      if (_io_pinIn_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinIn;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define pressed_(buf) _next__fact(buf,_type_pressed)\n\n#define setup_(buf) _next__fact(buf,_type_setup)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: pressed()=>_curr_state :- E{_io_digitalRead(12, HIGH)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (_io_digitalRead_bb (_curr_state, 12, HIGH) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          write_pressed (_curr_state);\n          _added_facts = true;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_1: #_io_digitalRead(12, _)=>_next_state :- .\nvoid\n_inductive_rule_1 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_digitalRead_bf (_next_state, 12)) == 0)\n    {\n// make io call\n      int Val = digitalRead (12);\n      write__io_digitalRead (_next_state, 12, Val);\n    }\n};\n\n// _inductive_rule_2: #_io_digitalWrite(13, HIGH)=>_next_state :- E{pressed()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (pressed_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: #_io_digitalWrite(13, LOW)=>_next_state :- E{!pressed()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (pressed_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: #_io_pinIn(12)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinIn_b (_next_state, 12)) == 0)\n        {\n          // make io call\n          pinMode (12, INPUT);\n          write__io_pinIn (_next_state, 12);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: #_io_pinOut(13)=>_next_state :- E{setup()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_setup (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n// stratum 2\n  _deductive_rule_1 ();\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl setup/0()</span>\n<span class=\"cm\">setup()@0.</span>\n<span class=\"cm\">pressed() :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !pressed().</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_digitalRead&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;pressed&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 5</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinIn 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_pressed 1</span>\n<span class=\"cp\">#define _size_setup 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">7</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_pressed</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_setup</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalRead 1</span>\n<span class=\"cp\">#define _type__io_digitalWrite 2</span>\n<span class=\"cp\">#define _type__io_pinIn 3</span>\n<span class=\"cp\">#define _type__io_pinOut 4</span>\n<span class=\"cp\">#define _type_pressed 5</span>\n<span class=\"cp\">#define _type_setup 6</span>\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write_pressed(buf) _write_fact_(buf, _type_pressed)</span>\n<span class=\"cp\">#define write_setup(buf) _write_fact_(buf, _type_setup)</span>\n\n<span class=\"cp\">#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinIn</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define pressed_(buf) _next__fact(buf,_type_pressed)</span>\n\n<span class=\"cp\">#define setup_(buf) _next__fact(buf,_type_setup)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: pressed()=&gt;_curr_state :- E{_io_digitalRead(12, HIGH)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: #_io_digitalRead(12, _)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{!pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_pinIn(12)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinIn</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_pinOut(13)=&gt;_next_state :- E{setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"nf\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/flip_flop.dl",
      "template": "no runtime",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Predicates\n.decl pressed\n.decl released\n.decl was_pressed\n.decl on\n\n% Input\n#digitalRead(12, ?)@next.\npressed :- #digitalRead(12, #HIGH).\n\n% Deduction/Induction\nwas_pressed@next :- pressed.\nreleased :- was_pressed, !pressed.\non@next :- released, !on.\non@next :- on, !released.\n\n% Setup and Initialization\n[setup]#pinIn(12)@next.\n[setup]#pinOut(13)@next.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- on.\n#digitalWrite(13, #LOW)@next :- !on.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl _setup/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl was_pressed/0()\npressed() :- _io_digitalRead(12, HIGH).\nreleased() :- was_pressed(), !pressed().\non()@next :- on(), !released().\non()@next :- released(), !on().\nwas_pressed()@next :- pressed().\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- on().\n#_io_digitalWrite(13, LOW)@next :- !on().\n\n\nProgram 3:\n.decl _setup/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl was_pressed/0()\n_setup()@0.\n#_io_pinIn(12)@next :- _setup().\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_digitalRead\"]\n2: fromList [\"pressed\"]\n3: fromList [\"was_pressed\"]\n4: fromList [\"released\"]\n*/\n\n#define _rulecount 0\n#define _bufsize 256\n\nbyte _fsm2_state = 2;\nbyte _fsm1_state = 1;\nbyte _fsm1_slot_1;\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n/* SETUP */\n\n\n/* LOOP */\n\nif (_fsm2_state == 1)\n  {\n    {\n    _fsm2_trans1:\n      if (true)\n        {\n          _fsm2_state = 1;\n        }\n      else;\n    }\n  }\nelse if (_fsm2_state == 3)\n  {\n    {\n      pinMode (12, INPUT);\n    }\n    {\n      pinMode (13, OUTPUT);\n    }\n    {\n      goto _fsm2_trans1;\n    }\n  }\nelse if (_fsm2_state == 2)\n  {\n    {\n    _fsm2_trans2:\n      if (true)\n        {\n          _fsm2_state = 3;\n        }\n      else;\n    }\n  }\nelse;\nif (_fsm1_state == 1)\n  {\n    {\n    _fsm1_trans1:\n      if (true)\n        {\n          _fsm1_state = 3;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 2)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n    _fsm1_trans2:\n      if (HIGH == _fsm1_slot_1)\n        {\n          _fsm1_state = 6;\n        }\n      else if (HIGH != _fsm1_slot_1)\n        {\n          _fsm1_state = 3;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 4)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n    _fsm1_trans4:\n      if (HIGH == _fsm1_slot_1)\n        {\n          _fsm1_state = 7;\n        }\n      else if (HIGH != _fsm1_slot_1)\n        {\n          _fsm1_state = 4;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 7)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, HIGH);\n    }\n    {\n    _fsm1_trans7:\n      if (HIGH == _fsm1_slot_1)\n        {\n          _fsm1_state = 7;\n        }\n      else if (HIGH != _fsm1_slot_1)\n        {\n          _fsm1_state = 2;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 3)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      goto _fsm1_trans2;\n    }\n  }\nelse if (_fsm1_state == 5)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n      goto _fsm1_trans4;\n    }\n  }\nelse if (_fsm1_state == 6)\n  {\n    {\n      int Val = digitalRead (12);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      digitalWrite (13, LOW);\n    }\n    {\n    _fsm1_trans6:\n      if (HIGH == _fsm1_slot_1)\n        {\n          _fsm1_state = 6;\n        }\n      else if (HIGH != _fsm1_slot_1)\n        {\n          _fsm1_state = 5;\n        }\n      else;\n    }\n  }\nelse;\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl was_pressed/0()</span>\n<span class=\"cm\">pressed() :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">released() :- was_pressed(), !pressed().</span>\n<span class=\"cm\">on()@next :- on(), !released().</span>\n<span class=\"cm\">on()@next :- released(), !on().</span>\n<span class=\"cm\">was_pressed()@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !on().</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl was_pressed/0()</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- _setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_digitalRead&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;pressed&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;was_pressed&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;released&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cm\">/* SETUP */</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm2_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans4</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans7</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans2</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans4</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/flip_flop.dl",
      "template": "no runtime",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Predicates\n.decl pressed\n.decl released\n.decl was_pressed\n.decl on\n\n% Input\n#digitalRead(12, ?)@next.\npressed :- #digitalRead(12, #HIGH).\n\n% Deduction/Induction\nwas_pressed@next :- pressed.\nreleased :- was_pressed, !pressed.\non@next :- released, !on.\non@next :- on, !released.\n\n% Setup and Initialization\n[setup]#pinIn(12)@next.\n[setup]#pinOut(13)@next.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- on.\n#digitalWrite(13, #LOW)@next :- !on.\n",
      "tsource": "/*\nProgram 1:\n.decl _setup/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl was_pressed/0()\n_setup()@0.\npressed() :- _io_digitalRead(12, HIGH).\nreleased() :- was_pressed(), !pressed().\non()@next :- on(), !released().\non()@next :- released(), !on().\nwas_pressed()@next :- pressed().\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- on().\n#_io_digitalWrite(13, LOW)@next :- !on().\n#_io_pinIn(12)@next :- _setup().\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_digitalRead\"]\n2: fromList [\"pressed\"]\n3: fromList [\"was_pressed\"]\n4: fromList [\"released\"]\n*/\n\n#define _rulecount 5\n#define _bufsize 256\n\n\n\n#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_pinIn 1 + sizeof(byte)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size__setup 1\n#define _size_on 1\n#define _size_pressed 1\n#define _size_released 1\n#define _size_was_pressed 1\nbyte _sizes[10] =\n  { 0, _size__io_digitalRead, _size__io_digitalWrite, _size__io_pinIn,\n_size__io_pinOut, _size__setup, _size_on, _size_pressed, _size_released, _size_was_pressed\n};\n\n#define _type__io_digitalRead 1\n#define _type__io_digitalWrite 2\n#define _type__io_pinIn 3\n#define _type__io_pinOut 4\n#define _type__setup 5\n#define _type_on 6\n#define _type_pressed 7\n#define _type_released 8\n#define _type_was_pressed 9\n\n\n\ninline byte\n_io_digitalRead_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalRead_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_pinIn_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write__setup(buf) _write_fact_(buf, _type__setup)\n#define write_on(buf) _write_fact_(buf, _type_on)\n#define write_pressed(buf) _write_fact_(buf, _type_pressed)\n#define write_released(buf) _write_fact_(buf, _type_released)\n#define write_was_pressed(buf) _write_fact_(buf, _type_was_pressed)\n\n#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)\n\nbyte *\n_io_digitalRead_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1 || _io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)\n\nbyte *\n_io_pinIn_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinIn)) != 0)\n    {\n      if (_io_pinIn_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinIn;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _setup_(buf) _next__fact(buf,_type__setup)\n\n#define on_(buf) _next__fact(buf,_type_on)\n\n#define pressed_(buf) _next__fact(buf,_type_pressed)\n\n#define released_(buf) _next__fact(buf,_type_released)\n\n#define was_pressed_(buf) _next__fact(buf,_type_was_pressed)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: on()=>_next_state :- E{on()} E{!released()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) == 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: on()=>_next_state :- E{released()} E{!on()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (released_ (_curr_state) != 0)\n    {\n      if (on_ (_curr_state) == 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _deductive_rule_1: pressed()=>_curr_state :- E{_io_digitalRead(12, HIGH)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (_io_digitalRead_bb (_curr_state, 12, HIGH) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          write_pressed (_curr_state);\n          _added_facts = true;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_2: released()=>_curr_state :- E{was_pressed()} E{!pressed()}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  if (was_pressed_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          if (released_ (_curr_state) == 0)\n            {\n              write_released (_curr_state);\n              _added_facts = true;\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_3: was_pressed()=>_next_state :- E{pressed()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (pressed_ (_curr_state) != 0)\n    {\n      if (was_pressed_ (_next_state) == 0)\n        {\n          write_was_pressed (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: #_io_digitalRead(12, _)=>_next_state :- .\nvoid\n_inductive_rule_4 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_digitalRead_bf (_next_state, 12)) == 0)\n    {\n// make io call\n      int Val = digitalRead (12);\n      write__io_digitalRead (_next_state, 12, Val);\n    }\n};\n\n// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=>_next_state :- E{on()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_digitalWrite(13, LOW)=>_next_state :- E{!on()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (on_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_pinIn(12)=>_next_state :- E{_setup()}.\nvoid\n_inductive_rule_7 ()\n{\n  if (_setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinIn_b (_next_state, 12)) == 0)\n        {\n          // make io call\n          pinMode (12, INPUT);\n          write__io_pinIn (_next_state, 12);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_8: #_io_pinOut(13)=>_next_state :- E{_setup()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (_setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n/* SETUP */\nwrite__setup (_curr_state);\n_added_facts = true;\n\n\n/* LOOP */\n\n\n\n// deductive phase\n\n// stratum 2\n_deductive_rule_1 ();\n\n// stratum 4\n_deductive_rule_2 ();\n// inductive_phase\n_inductive_rule_1 ();\n_inductive_rule_2 ();\n_inductive_rule_3 ();\n_inductive_rule_4 ();\n_inductive_rule_5 ();\n_inductive_rule_6 ();\n_inductive_rule_7 ();\n_inductive_rule_8 ();\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl was_pressed/0()</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">pressed() :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">released() :- was_pressed(), !pressed().</span>\n<span class=\"cm\">on()@next :- on(), !released().</span>\n<span class=\"cm\">on()@next :- released(), !on().</span>\n<span class=\"cm\">was_pressed()@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !on().</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- _setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_digitalRead&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;pressed&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;was_pressed&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;released&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 5</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n\n\n<span class=\"cp\">#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinIn 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__setup 1</span>\n<span class=\"cp\">#define _size_on 1</span>\n<span class=\"cp\">#define _size_pressed 1</span>\n<span class=\"cp\">#define _size_released 1</span>\n<span class=\"cp\">#define _size_was_pressed 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">10</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__setup</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_on</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_pressed</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_released</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_was_pressed</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalRead 1</span>\n<span class=\"cp\">#define _type__io_digitalWrite 2</span>\n<span class=\"cp\">#define _type__io_pinIn 3</span>\n<span class=\"cp\">#define _type__io_pinOut 4</span>\n<span class=\"cp\">#define _type__setup 5</span>\n<span class=\"cp\">#define _type_on 6</span>\n<span class=\"cp\">#define _type_pressed 7</span>\n<span class=\"cp\">#define _type_released 8</span>\n<span class=\"cp\">#define _type_was_pressed 9</span>\n\n\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write__setup(buf) _write_fact_(buf, _type__setup)</span>\n<span class=\"cp\">#define write_on(buf) _write_fact_(buf, _type_on)</span>\n<span class=\"cp\">#define write_pressed(buf) _write_fact_(buf, _type_pressed)</span>\n<span class=\"cp\">#define write_released(buf) _write_fact_(buf, _type_released)</span>\n<span class=\"cp\">#define write_was_pressed(buf) _write_fact_(buf, _type_was_pressed)</span>\n\n<span class=\"cp\">#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalRead_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinIn</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _setup_(buf) _next__fact(buf,_type__setup)</span>\n\n<span class=\"cp\">#define on_(buf) _next__fact(buf,_type_on)</span>\n\n<span class=\"cp\">#define pressed_(buf) _next__fact(buf,_type_pressed)</span>\n\n<span class=\"cp\">#define released_(buf) _next__fact(buf,_type_released)</span>\n\n<span class=\"cp\">#define was_pressed_(buf) _next__fact(buf,_type_was_pressed)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: on()=&gt;_next_state :- E{on()} E{!released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: on()=&gt;_next_state :- E{released()} E{!on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_1: pressed()=&gt;_curr_state :- E{_io_digitalRead(12, HIGH)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: released()=&gt;_curr_state :- E{was_pressed()} E{!pressed()}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">was_pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_released</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: was_pressed()=&gt;_next_state :- E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">was_pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_was_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_digitalRead(12, _)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{!on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_pinIn(12)=&gt;_next_state :- E{_setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinIn</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_pinOut(13)=&gt;_next_state :- E{_setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cm\">/* SETUP */</span>\n<span class=\"n\">write__setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n\n\n<span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"c1\">// stratum 4</span>\n<span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/flip_flop.dl",
      "template": "arduino",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Predicates\n.decl pressed\n.decl released\n.decl was_pressed\n.decl on\n\n% Input\n#digitalRead(12, ?)@next.\npressed :- #digitalRead(12, #HIGH).\n\n% Deduction/Induction\nwas_pressed@next :- pressed.\nreleased :- was_pressed, !pressed.\non@next :- released, !on.\non@next :- on, !released.\n\n% Setup and Initialization\n[setup]#pinIn(12)@next.\n[setup]#pinOut(13)@next.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- on.\n#digitalWrite(13, #LOW)@next :- !on.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl _setup/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl was_pressed/0()\npressed() :- _io_digitalRead(12, HIGH).\nreleased() :- was_pressed(), !pressed().\non()@next :- on(), !released().\non()@next :- released(), !on().\nwas_pressed()@next :- pressed().\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- on().\n#_io_digitalWrite(13, LOW)@next :- !on().\n\n\nProgram 3:\n.decl _setup/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl was_pressed/0()\n_setup()@0.\n#_io_pinIn(12)@next :- _setup().\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_digitalRead\"]\n2: fromList [\"pressed\"]\n3: fromList [\"was_pressed\"]\n4: fromList [\"released\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm2_state = 2;\nbyte _fsm1_state = 1;\nbyte _fsm1_slot_1;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm2_state == 1)\n    {\n      {\n      _fsm2_trans1:\n        if (true)\n          {\n            _fsm2_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm2_state == 3)\n    {\n      {\n        pinMode (12, INPUT);\n      }\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n        goto _fsm2_trans1;\n      }\n    }\n  else if (_fsm2_state == 2)\n    {\n      {\n      _fsm2_trans2:\n        if (true)\n          {\n            _fsm2_state = 3;\n          }\n        else;\n      }\n    }\n  else;\n  if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans2:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 6;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans4:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 7;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 4;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 7)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans7:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 7;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans2;\n      }\n    }\n  else if (_fsm1_state == 5)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans4;\n      }\n    }\n  else if (_fsm1_state == 6)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n      _fsm1_trans6:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 6;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl was_pressed/0()</span>\n<span class=\"cm\">pressed() :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">released() :- was_pressed(), !pressed().</span>\n<span class=\"cm\">on()@next :- on(), !released().</span>\n<span class=\"cm\">on()@next :- released(), !on().</span>\n<span class=\"cm\">was_pressed()@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !on().</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl was_pressed/0()</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- _setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_digitalRead&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;pressed&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;was_pressed&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;released&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans4</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans7</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans2</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans4</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/flip_flop.dl",
      "template": "arduino",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Predicates\n.decl pressed\n.decl released\n.decl was_pressed\n.decl on\n\n% Input\n#digitalRead(12, ?)@next.\npressed :- #digitalRead(12, #HIGH).\n\n% Deduction/Induction\nwas_pressed@next :- pressed.\nreleased :- was_pressed, !pressed.\non@next :- released, !on.\non@next :- on, !released.\n\n% Setup and Initialization\n[setup]#pinIn(12)@next.\n[setup]#pinOut(13)@next.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- on.\n#digitalWrite(13, #LOW)@next :- !on.\n",
      "tsource": "/*\nProgram 1:\n.decl _setup/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl was_pressed/0()\n_setup()@0.\npressed() :- _io_digitalRead(12, HIGH).\nreleased() :- was_pressed(), !pressed().\non()@next :- on(), !released().\non()@next :- released(), !on().\nwas_pressed()@next :- pressed().\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- on().\n#_io_digitalWrite(13, LOW)@next :- !on().\n#_io_pinIn(12)@next :- _setup().\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_digitalRead\"]\n2: fromList [\"pressed\"]\n3: fromList [\"was_pressed\"]\n4: fromList [\"released\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 5\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_pinIn 1 + sizeof(byte)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size__setup 1\n#define _size_on 1\n#define _size_pressed 1\n#define _size_released 1\n#define _size_was_pressed 1\nbyte _sizes[10] =\n  { 0, _size__io_digitalRead, _size__io_digitalWrite, _size__io_pinIn,\n_size__io_pinOut, _size__setup, _size_on, _size_pressed, _size_released, _size_was_pressed\n};\n\n#define _type__io_digitalRead 1\n#define _type__io_digitalWrite 2\n#define _type__io_pinIn 3\n#define _type__io_pinOut 4\n#define _type__setup 5\n#define _type_on 6\n#define _type_pressed 7\n#define _type_released 8\n#define _type_was_pressed 9\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline byte\n_io_digitalRead_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalRead_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_pinIn_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write__setup(buf) _write_fact_(buf, _type__setup)\n#define write_on(buf) _write_fact_(buf, _type_on)\n#define write_pressed(buf) _write_fact_(buf, _type_pressed)\n#define write_released(buf) _write_fact_(buf, _type_released)\n#define write_was_pressed(buf) _write_fact_(buf, _type_was_pressed)\n\n#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)\n\nbyte *\n_io_digitalRead_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1 || _io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)\n\nbyte *\n_io_pinIn_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinIn)) != 0)\n    {\n      if (_io_pinIn_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinIn;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _setup_(buf) _next__fact(buf,_type__setup)\n\n#define on_(buf) _next__fact(buf,_type_on)\n\n#define pressed_(buf) _next__fact(buf,_type_pressed)\n\n#define released_(buf) _next__fact(buf,_type_released)\n\n#define was_pressed_(buf) _next__fact(buf,_type_was_pressed)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: on()=>_next_state :- E{on()} E{!released()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) == 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: on()=>_next_state :- E{released()} E{!on()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (released_ (_curr_state) != 0)\n    {\n      if (on_ (_curr_state) == 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _deductive_rule_1: pressed()=>_curr_state :- E{_io_digitalRead(12, HIGH)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (_io_digitalRead_bb (_curr_state, 12, HIGH) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          write_pressed (_curr_state);\n          _added_facts = true;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_2: released()=>_curr_state :- E{was_pressed()} E{!pressed()}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  if (was_pressed_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          if (released_ (_curr_state) == 0)\n            {\n              write_released (_curr_state);\n              _added_facts = true;\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_3: was_pressed()=>_next_state :- E{pressed()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (pressed_ (_curr_state) != 0)\n    {\n      if (was_pressed_ (_next_state) == 0)\n        {\n          write_was_pressed (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: #_io_digitalRead(12, _)=>_next_state :- .\nvoid\n_inductive_rule_4 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_digitalRead_bf (_next_state, 12)) == 0)\n    {\n// make io call\n      int Val = digitalRead (12);\n      write__io_digitalRead (_next_state, 12, Val);\n    }\n};\n\n// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=>_next_state :- E{on()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_digitalWrite(13, LOW)=>_next_state :- E{!on()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (on_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_pinIn(12)=>_next_state :- E{_setup()}.\nvoid\n_inductive_rule_7 ()\n{\n  if (_setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinIn_b (_next_state, 12)) == 0)\n        {\n          // make io call\n          pinMode (12, INPUT);\n          write__io_pinIn (_next_state, 12);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_8: #_io_pinOut(13)=>_next_state :- E{_setup()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (_setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write__setup (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n// stratum 2\n  _deductive_rule_1 ();\n\n// stratum 4\n  _deductive_rule_2 ();\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n  _inductive_rule_6 ();\n  _inductive_rule_7 ();\n  _inductive_rule_8 ();\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl was_pressed/0()</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">pressed() :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">released() :- was_pressed(), !pressed().</span>\n<span class=\"cm\">on()@next :- on(), !released().</span>\n<span class=\"cm\">on()@next :- released(), !on().</span>\n<span class=\"cm\">was_pressed()@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !on().</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- _setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_digitalRead&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;pressed&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;was_pressed&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;released&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 5</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinIn 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__setup 1</span>\n<span class=\"cp\">#define _size_on 1</span>\n<span class=\"cp\">#define _size_pressed 1</span>\n<span class=\"cp\">#define _size_released 1</span>\n<span class=\"cp\">#define _size_was_pressed 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">10</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__setup</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_on</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_pressed</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_released</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_was_pressed</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalRead 1</span>\n<span class=\"cp\">#define _type__io_digitalWrite 2</span>\n<span class=\"cp\">#define _type__io_pinIn 3</span>\n<span class=\"cp\">#define _type__io_pinOut 4</span>\n<span class=\"cp\">#define _type__setup 5</span>\n<span class=\"cp\">#define _type_on 6</span>\n<span class=\"cp\">#define _type_pressed 7</span>\n<span class=\"cp\">#define _type_released 8</span>\n<span class=\"cp\">#define _type_was_pressed 9</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write__setup(buf) _write_fact_(buf, _type__setup)</span>\n<span class=\"cp\">#define write_on(buf) _write_fact_(buf, _type_on)</span>\n<span class=\"cp\">#define write_pressed(buf) _write_fact_(buf, _type_pressed)</span>\n<span class=\"cp\">#define write_released(buf) _write_fact_(buf, _type_released)</span>\n<span class=\"cp\">#define write_was_pressed(buf) _write_fact_(buf, _type_was_pressed)</span>\n\n<span class=\"cp\">#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinIn</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _setup_(buf) _next__fact(buf,_type__setup)</span>\n\n<span class=\"cp\">#define on_(buf) _next__fact(buf,_type_on)</span>\n\n<span class=\"cp\">#define pressed_(buf) _next__fact(buf,_type_pressed)</span>\n\n<span class=\"cp\">#define released_(buf) _next__fact(buf,_type_released)</span>\n\n<span class=\"cp\">#define was_pressed_(buf) _next__fact(buf,_type_was_pressed)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: on()=&gt;_next_state :- E{on()} E{!released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: on()=&gt;_next_state :- E{released()} E{!on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_1: pressed()=&gt;_curr_state :- E{_io_digitalRead(12, HIGH)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: released()=&gt;_curr_state :- E{was_pressed()} E{!pressed()}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">was_pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_released</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: was_pressed()=&gt;_next_state :- E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">was_pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_was_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_digitalRead(12, _)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{!on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_pinIn(12)=&gt;_next_state :- E{_setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinIn</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_pinOut(13)=&gt;_next_state :- E{_setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write__setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"c1\">// stratum 4</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/flip_flop.dl",
      "template": "lego ev3",
      "setting": "normal",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Predicates\n.decl pressed\n.decl released\n.decl was_pressed\n.decl on\n\n% Input\n#digitalRead(12, ?)@next.\npressed :- #digitalRead(12, #HIGH).\n\n% Deduction/Induction\nwas_pressed@next :- pressed.\nreleased :- was_pressed, !pressed.\non@next :- released, !on.\non@next :- on, !released.\n\n% Setup and Initialization\n[setup]#pinIn(12)@next.\n[setup]#pinOut(13)@next.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- on.\n#digitalWrite(13, #LOW)@next :- !on.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl _setup/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl was_pressed/0()\npressed() :- _io_digitalRead(12, HIGH).\nreleased() :- was_pressed(), !pressed().\non()@next :- on(), !released().\non()@next :- released(), !on().\nwas_pressed()@next :- pressed().\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- on().\n#_io_digitalWrite(13, LOW)@next :- !on().\n\n\nProgram 3:\n.decl _setup/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl was_pressed/0()\n_setup()@0.\n#_io_pinIn(12)@next :- _setup().\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_digitalRead\"]\n2: fromList [\"pressed\"]\n3: fromList [\"was_pressed\"]\n4: fromList [\"released\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm2_state = 2;\nbyte _fsm1_state = 1;\nbyte _fsm1_slot_1;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm2_state == 1)\n    {\n      {\n      _fsm2_trans1:\n        if (true)\n          {\n            _fsm2_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm2_state == 3)\n    {\n      {\n        pinMode (12, INPUT);\n      }\n      {\n        pinMode (13, OUTPUT);\n      }\n      {\n        goto _fsm2_trans1;\n      }\n    }\n  else if (_fsm2_state == 2)\n    {\n      {\n      _fsm2_trans2:\n        if (true)\n          {\n            _fsm2_state = 3;\n          }\n        else;\n      }\n    }\n  else;\n  if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans2:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 6;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans4:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 7;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 4;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 7)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, HIGH);\n      }\n      {\n      _fsm1_trans7:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 7;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans2;\n      }\n    }\n  else if (_fsm1_state == 5)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n        goto _fsm1_trans4;\n      }\n    }\n  else if (_fsm1_state == 6)\n    {\n      {\n        int Val = digitalRead (12);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        digitalWrite (13, LOW);\n      }\n      {\n      _fsm1_trans6:\n        if (HIGH == _fsm1_slot_1)\n          {\n            _fsm1_state = 6;\n          }\n        else if (HIGH != _fsm1_slot_1)\n          {\n            _fsm1_state = 5;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl was_pressed/0()</span>\n<span class=\"cm\">pressed() :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">released() :- was_pressed(), !pressed().</span>\n<span class=\"cm\">on()@next :- on(), !released().</span>\n<span class=\"cm\">on()@next :- released(), !on().</span>\n<span class=\"cm\">was_pressed()@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !on().</span>\n\n\n<span class=\"cm\">Program 3:</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl was_pressed/0()</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- _setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_digitalRead&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;pressed&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;was_pressed&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;released&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm2_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm2_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm2_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans4</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans7</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans2</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans4</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans6</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"n\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "arduino/small/flip_flop.dl",
      "template": "lego ev3",
      "setting": "no FSM",
      "osource": "% IO Predicates\n#pinIn(P: byte) = {pinMode(#P, INPUT);}\n#pinOut(P: byte) = {pinMode(#P, OUTPUT);}\n#digitalWrite(P: byte, Val: byte) = {digitalWrite(#P, #Val);}\n#digitalRead(P: byte, Val: byte) = {int Val = digitalRead(#P);}\n\n% Predicates\n.decl pressed\n.decl released\n.decl was_pressed\n.decl on\n\n% Input\n#digitalRead(12, ?)@next.\npressed :- #digitalRead(12, #HIGH).\n\n% Deduction/Induction\nwas_pressed@next :- pressed.\nreleased :- was_pressed, !pressed.\non@next :- released, !on.\non@next :- on, !released.\n\n% Setup and Initialization\n[setup]#pinIn(12)@next.\n[setup]#pinOut(13)@next.\n\n% Output\n#digitalWrite(13, #HIGH)@next :- on.\n#digitalWrite(13, #LOW)@next :- !on.\n",
      "tsource": "/*\nProgram 1:\n.decl _setup/0()\n.decl on/0()\n.decl pressed/0()\n.decl released/0()\n.decl was_pressed/0()\n_setup()@0.\npressed() :- _io_digitalRead(12, HIGH).\nreleased() :- was_pressed(), !pressed().\non()@next :- on(), !released().\non()@next :- released(), !on().\nwas_pressed()@next :- pressed().\n#_io_digitalRead(12, _)@next :- .\n#_io_digitalWrite(13, HIGH)@next :- on().\n#_io_digitalWrite(13, LOW)@next :- !on().\n#_io_pinIn(12)@next :- _setup().\n#_io_pinOut(13)@next :- _setup().\n\n\n\nStrata:\n1: fromList [\"_io_digitalRead\"]\n2: fromList [\"pressed\"]\n3: fromList [\"was_pressed\"]\n4: fromList [\"released\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 5\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)\n#define _size__io_pinIn 1 + sizeof(byte)\n#define _size__io_pinOut 1 + sizeof(byte)\n#define _size__setup 1\n#define _size_on 1\n#define _size_pressed 1\n#define _size_released 1\n#define _size_was_pressed 1\nbyte _sizes[10] =\n  { 0, _size__io_digitalRead, _size__io_digitalWrite, _size__io_pinIn,\n_size__io_pinOut, _size__setup, _size_on, _size_pressed, _size_released, _size_was_pressed\n};\n\n#define _type__io_digitalRead 1\n#define _type__io_digitalWrite 2\n#define _type__io_pinIn 3\n#define _type__io_pinOut 4\n#define _type__setup 5\n#define _type_on 6\n#define _type_pressed 7\n#define _type_released 8\n#define _type_was_pressed 9\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline byte\n_io_digitalRead_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalRead_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_digitalWrite_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_digitalWrite_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\n_io_pinIn_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\n_io_pinOut_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)\n#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)\n#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)\n#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)\n#define write__setup(buf) _write_fact_(buf, _type__setup)\n#define write_on(buf) _write_fact_(buf, _type_on)\n#define write_pressed(buf) _write_fact_(buf, _type_pressed)\n#define write_released(buf) _write_fact_(buf, _type_released)\n#define write_was_pressed(buf) _write_fact_(buf, _type_was_pressed)\n\n#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)\n\nbyte *\n_io_digitalRead_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalRead_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalRead)) != 0)\n    {\n      if (_io_digitalRead_1 (buf) != a1 || _io_digitalRead_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalRead;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)\n\nbyte *\n_io_digitalWrite_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_digitalWrite_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_digitalWrite)) != 0)\n    {\n      if (_io_digitalWrite_1 (buf) != a1 || _io_digitalWrite_2 (buf) != a2)\n        {\n          buf = buf + _size__io_digitalWrite;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)\n\nbyte *\n_io_pinIn_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinIn)) != 0)\n    {\n      if (_io_pinIn_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinIn;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)\n\nbyte *\n_io_pinOut_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type__io_pinOut)) != 0)\n    {\n      if (_io_pinOut_1 (buf) != a1)\n        {\n          buf = buf + _size__io_pinOut;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _setup_(buf) _next__fact(buf,_type__setup)\n\n#define on_(buf) _next__fact(buf,_type_on)\n\n#define pressed_(buf) _next__fact(buf,_type_pressed)\n\n#define released_(buf) _next__fact(buf,_type_released)\n\n#define was_pressed_(buf) _next__fact(buf,_type_was_pressed)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: on()=>_next_state :- E{on()} E{!released()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      if (released_ (_curr_state) == 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: on()=>_next_state :- E{released()} E{!on()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (released_ (_curr_state) != 0)\n    {\n      if (on_ (_curr_state) == 0)\n        {\n          if (on_ (_next_state) == 0)\n            {\n              write_on (_next_state);\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _deductive_rule_1: pressed()=>_curr_state :- E{_io_digitalRead(12, HIGH)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (_io_digitalRead_bb (_curr_state, 12, HIGH) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          write_pressed (_curr_state);\n          _added_facts = true;\n        }\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _deductive_rule_2: released()=>_curr_state :- E{was_pressed()} E{!pressed()}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  if (was_pressed_ (_curr_state) != 0)\n    {\n      if (pressed_ (_curr_state) == 0)\n        {\n          if (released_ (_curr_state) == 0)\n            {\n              write_released (_curr_state);\n              _added_facts = true;\n            }\n          goto jmp1;\n        }\n    jmp1:;\n      goto jmp0;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_3: was_pressed()=>_next_state :- E{pressed()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (pressed_ (_curr_state) != 0)\n    {\n      if (was_pressed_ (_next_state) == 0)\n        {\n          write_was_pressed (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: #_io_digitalRead(12, _)=>_next_state :- .\nvoid\n_inductive_rule_4 ()\n{\n  byte *_tuple1 = _next_state;\n  if ((_tuple1 = _io_digitalRead_bf (_next_state, 12)) == 0)\n    {\n// make io call\n      int Val = digitalRead (12);\n      write__io_digitalRead (_next_state, 12, Val);\n    }\n};\n\n// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=>_next_state :- E{on()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (on_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_digitalWrite_bb (_next_state, 13, HIGH)) == 0)\n        {\n          // make io call\n          digitalWrite (13, HIGH);\n          write__io_digitalWrite (_next_state, 13, HIGH);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_digitalWrite(13, LOW)=>_next_state :- E{!on()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (on_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_digitalWrite_bb (_next_state, 13, LOW)) == 0)\n        {\n          // make io call\n          digitalWrite (13, LOW);\n          write__io_digitalWrite (_next_state, 13, LOW);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_pinIn(12)=>_next_state :- E{_setup()}.\nvoid\n_inductive_rule_7 ()\n{\n  if (_setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinIn_b (_next_state, 12)) == 0)\n        {\n          // make io call\n          pinMode (12, INPUT);\n          write__io_pinIn (_next_state, 12);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_8: #_io_pinOut(13)=>_next_state :- E{_setup()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (_setup_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_pinOut_b (_next_state, 13)) == 0)\n        {\n          // make io call\n          pinMode (13, OUTPUT);\n          write__io_pinOut (_next_state, 13);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write__setup (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n// stratum 2\n  _deductive_rule_1 ();\n\n// stratum 4\n  _deductive_rule_2 ();\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n  _inductive_rule_6 ();\n  _inductive_rule_7 ();\n  _inductive_rule_8 ();\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl _setup/0()</span>\n<span class=\"cm\">.decl on/0()</span>\n<span class=\"cm\">.decl pressed/0()</span>\n<span class=\"cm\">.decl released/0()</span>\n<span class=\"cm\">.decl was_pressed/0()</span>\n<span class=\"cm\">_setup()@0.</span>\n<span class=\"cm\">pressed() :- _io_digitalRead(12, HIGH).</span>\n<span class=\"cm\">released() :- was_pressed(), !pressed().</span>\n<span class=\"cm\">on()@next :- on(), !released().</span>\n<span class=\"cm\">on()@next :- released(), !on().</span>\n<span class=\"cm\">was_pressed()@next :- pressed().</span>\n<span class=\"cm\">#_io_digitalRead(12, _)@next :- .</span>\n<span class=\"cm\">#_io_digitalWrite(13, HIGH)@next :- on().</span>\n<span class=\"cm\">#_io_digitalWrite(13, LOW)@next :- !on().</span>\n<span class=\"cm\">#_io_pinIn(12)@next :- _setup().</span>\n<span class=\"cm\">#_io_pinOut(13)@next :- _setup().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_digitalRead&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;pressed&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;was_pressed&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;released&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 5</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_digitalRead 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_digitalWrite 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinIn 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_pinOut 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size__setup 1</span>\n<span class=\"cp\">#define _size_on 1</span>\n<span class=\"cp\">#define _size_pressed 1</span>\n<span class=\"cp\">#define _size_released 1</span>\n<span class=\"cp\">#define _size_was_pressed 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">10</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">,</span>\n<span class=\"n\">_size__io_pinOut</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__setup</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_on</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_pressed</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_released</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_was_pressed</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_digitalRead 1</span>\n<span class=\"cp\">#define _type__io_digitalWrite 2</span>\n<span class=\"cp\">#define _type__io_pinIn 3</span>\n<span class=\"cp\">#define _type__io_pinOut 4</span>\n<span class=\"cp\">#define _type__setup 5</span>\n<span class=\"cp\">#define _type_on 6</span>\n<span class=\"cp\">#define _type_pressed 7</span>\n<span class=\"cp\">#define _type_released 8</span>\n<span class=\"cp\">#define _type_was_pressed 9</span>\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_digitalRead(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalRead, a1, a2)</span>\n<span class=\"cp\">#define write__io_digitalWrite(buf, a1, a2) _write_fact_byte_byte(buf, _type__io_digitalWrite, a1, a2)</span>\n<span class=\"cp\">#define write__io_pinIn(buf, a1) _write_fact_byte(buf, _type__io_pinIn, a1)</span>\n<span class=\"cp\">#define write__io_pinOut(buf, a1) _write_fact_byte(buf, _type__io_pinOut, a1)</span>\n<span class=\"cp\">#define write__setup(buf) _write_fact_(buf, _type__setup)</span>\n<span class=\"cp\">#define write_on(buf) _write_fact_(buf, _type_on)</span>\n<span class=\"cp\">#define write_pressed(buf) _write_fact_(buf, _type_pressed)</span>\n<span class=\"cp\">#define write_released(buf) _write_fact_(buf, _type_released)</span>\n<span class=\"cp\">#define write_was_pressed(buf) _write_fact_(buf, _type_was_pressed)</span>\n\n<span class=\"cp\">#define _io_digitalRead_ff(buf) _next__fact(buf,_type__io_digitalRead)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalRead</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalRead</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_digitalWrite_ff(buf) _next__fact(buf,_type__io_digitalWrite)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_digitalWrite</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalWrite_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_digitalWrite</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinIn_f(buf) _next__fact(buf,_type__io_pinIn)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinIn</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinIn_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinIn</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_pinOut_f(buf) _next__fact(buf,_type__io_pinOut)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_pinOut</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_pinOut_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_pinOut</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _setup_(buf) _next__fact(buf,_type__setup)</span>\n\n<span class=\"cp\">#define on_(buf) _next__fact(buf,_type_on)</span>\n\n<span class=\"cp\">#define pressed_(buf) _next__fact(buf,_type_pressed)</span>\n\n<span class=\"cp\">#define released_(buf) _next__fact(buf,_type_released)</span>\n\n<span class=\"cp\">#define was_pressed_(buf) _next__fact(buf,_type_was_pressed)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: on()=&gt;_next_state :- E{on()} E{!released()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: on()=&gt;_next_state :- E{released()} E{!on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_on</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_1: pressed()=&gt;_curr_state :- E{_io_digitalRead(12, HIGH)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_digitalRead_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: released()=&gt;_curr_state :- E{was_pressed()} E{!pressed()}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">was_pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">released_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_released</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: was_pressed()=&gt;_next_state :- E{pressed()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">was_pressed_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_was_pressed</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_digitalRead(12, _)=&gt;_next_state :- .</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalRead_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"c1\">// make io call</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">write__io_digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_digitalWrite(13, HIGH)=&gt;_next_state :- E{on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_digitalWrite(13, LOW)=&gt;_next_state :- E{!on()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">on_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_digitalWrite_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_pinIn(12)=&gt;_next_state :- E{_setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinIn_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">12</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">INPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinIn</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_pinOut(13)=&gt;_next_state :- E{_setup()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_setup_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_pinOut_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">pinMode</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">13</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">OUTPUT</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_pinOut</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write__setup</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"c1\">// stratum 4</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"nf\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/edge_follower.dl",
      "template": "no runtime",
      "setting": "normal",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n#col_reflect(Sensor: uint8_t) = { color_set_mode_col_reflect(#Sensor); }\n#sensor_get_value(Sensor: uint8_t, Val: byte) = { byte Val = (byte)sensor_get_value0(#Sensor, 0); }\n\n.decl onLine\n.decl init\n.decl running\n.decl lightval(byte)\ninit@0.\n\n#col_reflect(#IN1)@next :- init.\nrunning@next :- init.\nrunning@next :- running.\n\n#sensor_get_value(#IN1, ?)@next :- running.\n\nlightval(Light) :- #sensor_get_value(#IN1, Light).\nonLine :- lightval(Light), Light < 20.\n\n#tacho_go(#OUTB,  -50)@next :- onLine.\n#tacho_go(#OUTC, -200)@next :- onLine.\n\n#tacho_go(#OUTB, -200)@next :- !onLine.\n#tacho_go(#OUTC,  -50)@next :- !onLine.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl init/0()\n.decl lightval/1(byte)\n.decl onLine/0()\n.decl running/0()\ninit()@0.\nlightval(Light) :- _io_sensor_get_value(IN1, Light).\nonLine() :- lightval(Light), ArithComp (ArithLT \"Light\" ConstInt 20).\nrunning()@next :- init().\nrunning()@next :- running().\n#_io_col_reflect(IN1)@next :- init().\n#_io_sensor_get_value(IN1, _)@next :- running().\n#_io_tacho_go(OUTB, -200)@next :- !onLine().\n#_io_tacho_go(OUTB, -50)@next :- onLine().\n#_io_tacho_go(OUTC, -200)@next :- onLine().\n#_io_tacho_go(OUTC, -50)@next :- !onLine().\n\n\n\nStrata:\n1: fromList [\"_io_sensor_get_value\"]\n2: fromList [\"lightval\"]\n3: fromList [\"onLine\"]\n*/\n\n#define _rulecount 0\n#define _bufsize 256\n\nbyte _fsm1_state = 1;\nbyte _fsm1_slot_1;\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n/* SETUP */\n\n\n/* LOOP */\n\nif (_fsm1_state == 2)\n  {\n    {\n      color_set_mode_col_reflect (IN1);\n    }\n    {\n      tacho_set_speed_sp (OUTB, -200);\n      tacho_run_forever (OUTB);\n    }\n    {\n      tacho_set_speed_sp (OUTC, -50);\n      tacho_run_forever (OUTC);\n    }\n    {\n    _fsm1_trans2:\n      if (true)\n        {\n          _fsm1_state = 3;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 3)\n  {\n    {\n      byte Val = (byte) sensor_get_value0 (IN1, 0);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      tacho_set_speed_sp (OUTB, -200);\n      tacho_run_forever (OUTB);\n    }\n    {\n      tacho_set_speed_sp (OUTC, -50);\n      tacho_run_forever (OUTC);\n    }\n    {\n    _fsm1_trans3:\n      if (_fsm1_slot_1 < 20)\n        {\n          _fsm1_state = 4;\n        }\n      else if (20 <= _fsm1_slot_1)\n        {\n          _fsm1_state = 3;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 4)\n  {\n    {\n      byte Val = (byte) sensor_get_value0 (IN1, 0);\n      _fsm1_slot_1 = Val;\n    }\n    {\n      tacho_set_speed_sp (OUTB, -50);\n      tacho_run_forever (OUTB);\n    }\n    {\n      tacho_set_speed_sp (OUTC, -200);\n      tacho_run_forever (OUTC);\n    }\n    {\n      goto _fsm1_trans3;\n    }\n  }\nelse if (_fsm1_state == 1)\n  {\n    {\n    _fsm1_trans1:\n      if (true)\n        {\n          _fsm1_state = 2;\n        }\n      else;\n    }\n  }\nelse;\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">.decl lightval/1(byte)</span>\n<span class=\"cm\">.decl onLine/0()</span>\n<span class=\"cm\">.decl running/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">lightval(Light) :- _io_sensor_get_value(IN1, Light).</span>\n<span class=\"cm\">onLine() :- lightval(Light), ArithComp (ArithLT &quot;Light&quot; ConstInt 20).</span>\n<span class=\"cm\">running()@next :- init().</span>\n<span class=\"cm\">running()@next :- running().</span>\n<span class=\"cm\">#_io_col_reflect(IN1)@next :- init().</span>\n<span class=\"cm\">#_io_sensor_get_value(IN1, _)@next :- running().</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, -200)@next :- !onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, -50)@next :- onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, -200)@next :- onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, -50)@next :- !onLine().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_sensor_get_value&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;lightval&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;onLine&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cm\">/* SETUP */</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">color_set_mode_col_reflect</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">sensor_get_value0</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"mi\">20</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">20</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">sensor_get_value0</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans3</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/edge_follower.dl",
      "template": "no runtime",
      "setting": "no FSM",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n#col_reflect(Sensor: uint8_t) = { color_set_mode_col_reflect(#Sensor); }\n#sensor_get_value(Sensor: uint8_t, Val: byte) = { byte Val = (byte)sensor_get_value0(#Sensor, 0); }\n\n.decl onLine\n.decl init\n.decl running\n.decl lightval(byte)\ninit@0.\n\n#col_reflect(#IN1)@next :- init.\nrunning@next :- init.\nrunning@next :- running.\n\n#sensor_get_value(#IN1, ?)@next :- running.\n\nlightval(Light) :- #sensor_get_value(#IN1, Light).\nonLine :- lightval(Light), Light < 20.\n\n#tacho_go(#OUTB,  -50)@next :- onLine.\n#tacho_go(#OUTC, -200)@next :- onLine.\n\n#tacho_go(#OUTB, -200)@next :- !onLine.\n#tacho_go(#OUTC,  -50)@next :- !onLine.\n",
      "tsource": "/*\nProgram 1:\n.decl init/0()\n.decl lightval/1(byte)\n.decl onLine/0()\n.decl running/0()\ninit()@0.\nlightval(Light) :- _io_sensor_get_value(IN1, Light).\nonLine() :- lightval(Light), ArithComp (ArithLT \"Light\" ConstInt 20).\nrunning()@next :- init().\nrunning()@next :- running().\n#_io_col_reflect(IN1)@next :- init().\n#_io_sensor_get_value(IN1, _)@next :- running().\n#_io_tacho_go(OUTB, -200)@next :- !onLine().\n#_io_tacho_go(OUTB, -50)@next :- onLine().\n#_io_tacho_go(OUTC, -200)@next :- onLine().\n#_io_tacho_go(OUTC, -50)@next :- !onLine().\n\n\n\nStrata:\n1: fromList [\"_io_sensor_get_value\"]\n2: fromList [\"lightval\"]\n3: fromList [\"onLine\"]\n*/\n\n#define _rulecount 6\n#define _bufsize 256\n\n\n\n#define _size__io_col_reflect 1 + sizeof(uint8_t)\n#define _size__io_sensor_get_value 1 + sizeof(uint8_t)+ sizeof(byte)\n#define _size__io_tacho_go 1 + sizeof(uint8_t)+ sizeof(int)\n#define _size_init 1\n#define _size_lightval 1 + sizeof(byte)\n#define _size_onLine 1\n#define _size_running 1\nbyte _sizes[8] =\n  { 0, _size__io_col_reflect, _size__io_sensor_get_value, _size__io_tacho_go,\n_size_init, _size_lightval, _size_onLine, _size_running\n};\n\n#define _type__io_col_reflect 1\n#define _type__io_sensor_get_value 2\n#define _type__io_tacho_go 3\n#define _type_init 4\n#define _type_lightval 5\n#define _type_onLine 6\n#define _type_running 7\n\n\n\ninline uint8_t\n_io_col_reflect_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\ninline uint8_t\n_io_sensor_get_value_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\ninline byte\n_io_sensor_get_value_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (uint8_t));\n}\n\ninline uint8_t\n_io_tacho_go_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\ninline int\n_io_tacho_go_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (uint8_t));\n}\n\ninline byte\nlightval_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t (byte *buf, byte type, uint8_t a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t_byte (byte *buf, byte type, uint8_t a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t_int (byte *buf, byte type, uint8_t a1, int a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  free = _write_data < int >(free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_col_reflect(buf, a1) _write_fact_uint8_t(buf, _type__io_col_reflect, a1)\n#define write__io_sensor_get_value(buf, a1, a2) _write_fact_uint8_t_byte(buf, _type__io_sensor_get_value, a1, a2)\n#define write__io_tacho_go(buf, a1, a2) _write_fact_uint8_t_int(buf, _type__io_tacho_go, a1, a2)\n#define write_init(buf) _write_fact_(buf, _type_init)\n#define write_lightval(buf, a1) _write_fact_byte(buf, _type_lightval, a1)\n#define write_onLine(buf) _write_fact_(buf, _type_onLine)\n#define write_running(buf) _write_fact_(buf, _type_running)\n\n#define _io_col_reflect_f(buf) _next__fact(buf,_type__io_col_reflect)\n\nbyte *\n_io_col_reflect_b (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_col_reflect)) != 0)\n    {\n      if (_io_col_reflect_1 (buf) != a1)\n        {\n          buf = buf + _size__io_col_reflect;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_sensor_get_value_ff(buf) _next__fact(buf,_type__io_sensor_get_value)\n\nbyte *\n_io_sensor_get_value_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_sensor_get_value)) != 0)\n    {\n      if (_io_sensor_get_value_2 (buf) != a2)\n        {\n          buf = buf + _size__io_sensor_get_value;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_sensor_get_value_bf (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_sensor_get_value)) != 0)\n    {\n      if (_io_sensor_get_value_1 (buf) != a1)\n        {\n          buf = buf + _size__io_sensor_get_value;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_sensor_get_value_bb (byte *buf, uint8_t a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_sensor_get_value)) != 0)\n    {\n      if (_io_sensor_get_value_1 (buf) != a1\n          || _io_sensor_get_value_2 (buf) != a2)\n        {\n          buf = buf + _size__io_sensor_get_value;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_tacho_go_ff(buf) _next__fact(buf,_type__io_tacho_go)\n\nbyte *\n_io_tacho_go_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_2 (buf) != a2)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_tacho_go_bf (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_1 (buf) != a1)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_tacho_go_bb (byte *buf, uint8_t a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_1 (buf) != a1 || _io_tacho_go_2 (buf) != a2)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define init_(buf) _next__fact(buf,_type_init)\n\n#define lightval_f(buf) _next__fact(buf,_type_lightval)\n\nbyte *\nlightval_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_lightval)) != 0)\n    {\n      if (lightval_1 (buf) != a1)\n        {\n          buf = buf + _size_lightval;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define onLine_(buf) _next__fact(buf,_type_onLine)\n\n#define running_(buf) _next__fact(buf,_type_running)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: lightval(Light)=>_curr_state :- U{_io_sensor_get_value(IN1, Light)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_sensor_get_value_bf (_tuple1, IN1)) != 0)\n    {\n      byte Light = _io_sensor_get_value_2 (_tuple1);\n      if (lightval_f (_curr_state, Light) == 0)\n        {\n          write_lightval (_curr_state, Light);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_sensor_get_value;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_2: onLine()=>_curr_state :- E{lightval(Light) ArithComp (ArithLT \"Light\" ConstInt 20)}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = lightval_f (_tuple1)) != 0)\n    {\n      byte Light = lightval_1 (_tuple1);\n      if (Light < 20)\n        {\n          if (onLine_ (_curr_state) == 0)\n            {\n              write_onLine (_curr_state);\n              _added_facts = true;\n            }\n          goto jmp0;\n        }\n      _tuple1 += _size_lightval;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_1: running()=>_next_state :- E{init()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      if (running_ (_next_state) == 0)\n        {\n          write_running (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: running()=>_next_state :- E{running()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (running_ (_curr_state) != 0)\n    {\n      if (running_ (_next_state) == 0)\n        {\n          write_running (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: #_io_col_reflect(IN1)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_col_reflect_b (_next_state, IN1)) == 0)\n        {\n          // make io call\n          color_set_mode_col_reflect (IN1);\n          write__io_col_reflect (_next_state, IN1);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: #_io_sensor_get_value(IN1, _)=>_next_state :- E{running()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (running_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_sensor_get_value_bf (_next_state, IN1)) == 0)\n        {\n          // make io call\n          byte Val = (byte) sensor_get_value0 (IN1, 0);\n          write__io_sensor_get_value (_next_state, IN1, Val);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: #_io_tacho_go(OUTB, -200)=>_next_state :- E{!onLine()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (onLine_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_tacho_go_bb (_next_state, OUTB, -200)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTB, -200);\n          tacho_run_forever (OUTB);\n          write__io_tacho_go (_next_state, OUTB, -200);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_tacho_go(OUTB, -50)=>_next_state :- E{onLine()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (onLine_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_go_bb (_next_state, OUTB, -50)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTB, -50);\n          tacho_run_forever (OUTB);\n          write__io_tacho_go (_next_state, OUTB, -50);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_tacho_go(OUTC, -200)=>_next_state :- E{onLine()}.\nvoid\n_inductive_rule_7 ()\n{\n  if (onLine_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_go_bb (_next_state, OUTC, -200)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTC, -200);\n          tacho_run_forever (OUTC);\n          write__io_tacho_go (_next_state, OUTC, -200);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_8: #_io_tacho_go(OUTC, -50)=>_next_state :- E{!onLine()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (onLine_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_tacho_go_bb (_next_state, OUTC, -50)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTC, -50);\n          tacho_run_forever (OUTC);\n          write__io_tacho_go (_next_state, OUTC, -50);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n/* SETUP */\nwrite_init (_curr_state);\n_added_facts = true;\n\n\n/* LOOP */\n\n\n\n// deductive phase\n\n// stratum 2\n_deductive_rule_1 ();\n// stratum 3\n_deductive_rule_2 ();\n// inductive_phase\n_inductive_rule_1 ();\n_inductive_rule_2 ();\n_inductive_rule_3 ();\n_inductive_rule_4 ();\n_inductive_rule_5 ();\n_inductive_rule_6 ();\n_inductive_rule_7 ();\n_inductive_rule_8 ();\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">.decl lightval/1(byte)</span>\n<span class=\"cm\">.decl onLine/0()</span>\n<span class=\"cm\">.decl running/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">lightval(Light) :- _io_sensor_get_value(IN1, Light).</span>\n<span class=\"cm\">onLine() :- lightval(Light), ArithComp (ArithLT &quot;Light&quot; ConstInt 20).</span>\n<span class=\"cm\">running()@next :- init().</span>\n<span class=\"cm\">running()@next :- running().</span>\n<span class=\"cm\">#_io_col_reflect(IN1)@next :- init().</span>\n<span class=\"cm\">#_io_sensor_get_value(IN1, _)@next :- running().</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, -200)@next :- !onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, -50)@next :- onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, -200)@next :- onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, -50)@next :- !onLine().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_sensor_get_value&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;lightval&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;onLine&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 6</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n\n\n<span class=\"cp\">#define _size__io_col_reflect 1 + sizeof(uint8_t)</span>\n<span class=\"cp\">#define _size__io_sensor_get_value 1 + sizeof(uint8_t)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_tacho_go 1 + sizeof(uint8_t)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_init 1</span>\n<span class=\"cp\">#define _size_lightval 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_onLine 1</span>\n<span class=\"cp\">#define _size_running 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">8</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_col_reflect</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">,</span>\n<span class=\"n\">_size_init</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_lightval</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_onLine</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_running</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_col_reflect 1</span>\n<span class=\"cp\">#define _type__io_sensor_get_value 2</span>\n<span class=\"cp\">#define _type__io_tacho_go 3</span>\n<span class=\"cp\">#define _type_init 4</span>\n<span class=\"cp\">#define _type_lightval 5</span>\n<span class=\"cp\">#define _type_onLine 6</span>\n<span class=\"cp\">#define _type_running 7</span>\n\n\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"nf\">_io_col_reflect_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"nf\">_io_sensor_get_value_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">_io_sensor_get_value_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">uint8_t</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"nf\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">uint8_t</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">lightval_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_uint8_t</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_uint8_t_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_uint8_t_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_col_reflect(buf, a1) _write_fact_uint8_t(buf, _type__io_col_reflect, a1)</span>\n<span class=\"cp\">#define write__io_sensor_get_value(buf, a1, a2) _write_fact_uint8_t_byte(buf, _type__io_sensor_get_value, a1, a2)</span>\n<span class=\"cp\">#define write__io_tacho_go(buf, a1, a2) _write_fact_uint8_t_int(buf, _type__io_tacho_go, a1, a2)</span>\n<span class=\"cp\">#define write_init(buf) _write_fact_(buf, _type_init)</span>\n<span class=\"cp\">#define write_lightval(buf, a1) _write_fact_byte(buf, _type_lightval, a1)</span>\n<span class=\"cp\">#define write_onLine(buf) _write_fact_(buf, _type_onLine)</span>\n<span class=\"cp\">#define write_running(buf) _write_fact_(buf, _type_running)</span>\n\n<span class=\"cp\">#define _io_col_reflect_f(buf) _next__fact(buf,_type__io_col_reflect)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_col_reflect_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_col_reflect</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_col_reflect_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_col_reflect</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_sensor_get_value_ff(buf) _next__fact(buf,_type__io_sensor_get_value)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_sensor_get_value_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_sensor_get_value</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_sensor_get_value_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_sensor_get_value_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_sensor_get_value</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_sensor_get_value_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_sensor_get_value_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_sensor_get_value</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_sensor_get_value_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span>\n<span class=\"w\">          </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_sensor_get_value_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_tacho_go_ff(buf) _next__fact(buf,_type__io_tacho_go)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_tacho_go_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_tacho_go_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define init_(buf) _next__fact(buf,_type_init)</span>\n\n<span class=\"cp\">#define lightval_f(buf) _next__fact(buf,_type_lightval)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">lightval_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_lightval</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">lightval_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_lightval</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define onLine_(buf) _next__fact(buf,_type_onLine)</span>\n\n<span class=\"cp\">#define running_(buf) _next__fact(buf,_type_running)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: lightval(Light)=&gt;_curr_state :- U{_io_sensor_get_value(IN1, Light)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_sensor_get_value_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Light</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_sensor_get_value_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">lightval_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Light</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_lightval</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Light</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: onLine()=&gt;_curr_state :- E{lightval(Light) ArithComp (ArithLT &quot;Light&quot; ConstInt 20)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">lightval_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Light</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">lightval_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">Light</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"mi\">20</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_onLine</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_lightval</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: running()=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">running_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_running</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: running()=&gt;_next_state :- E{running()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">running_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">running_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_running</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_col_reflect(IN1)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_col_reflect_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">color_set_mode_col_reflect</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_col_reflect</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_sensor_get_value(IN1, _)=&gt;_next_state :- E{running()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">running_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_sensor_get_value_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">sensor_get_value0</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_sensor_get_value</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_tacho_go(OUTB, -200)=&gt;_next_state :- E{!onLine()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_tacho_go(OUTB, -50)=&gt;_next_state :- E{onLine()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_tacho_go(OUTC, -200)=&gt;_next_state :- E{onLine()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_tacho_go(OUTC, -50)=&gt;_next_state :- E{!onLine()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cm\">/* SETUP */</span>\n<span class=\"n\">write_init</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n\n\n<span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 3</span>\n<span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/edge_follower.dl",
      "template": "arduino",
      "setting": "normal",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n#col_reflect(Sensor: uint8_t) = { color_set_mode_col_reflect(#Sensor); }\n#sensor_get_value(Sensor: uint8_t, Val: byte) = { byte Val = (byte)sensor_get_value0(#Sensor, 0); }\n\n.decl onLine\n.decl init\n.decl running\n.decl lightval(byte)\ninit@0.\n\n#col_reflect(#IN1)@next :- init.\nrunning@next :- init.\nrunning@next :- running.\n\n#sensor_get_value(#IN1, ?)@next :- running.\n\nlightval(Light) :- #sensor_get_value(#IN1, Light).\nonLine :- lightval(Light), Light < 20.\n\n#tacho_go(#OUTB,  -50)@next :- onLine.\n#tacho_go(#OUTC, -200)@next :- onLine.\n\n#tacho_go(#OUTB, -200)@next :- !onLine.\n#tacho_go(#OUTC,  -50)@next :- !onLine.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl init/0()\n.decl lightval/1(byte)\n.decl onLine/0()\n.decl running/0()\ninit()@0.\nlightval(Light) :- _io_sensor_get_value(IN1, Light).\nonLine() :- lightval(Light), ArithComp (ArithLT \"Light\" ConstInt 20).\nrunning()@next :- init().\nrunning()@next :- running().\n#_io_col_reflect(IN1)@next :- init().\n#_io_sensor_get_value(IN1, _)@next :- running().\n#_io_tacho_go(OUTB, -200)@next :- !onLine().\n#_io_tacho_go(OUTB, -50)@next :- onLine().\n#_io_tacho_go(OUTC, -200)@next :- onLine().\n#_io_tacho_go(OUTC, -50)@next :- !onLine().\n\n\n\nStrata:\n1: fromList [\"_io_sensor_get_value\"]\n2: fromList [\"lightval\"]\n3: fromList [\"onLine\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm1_state = 1;\nbyte _fsm1_slot_1;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm1_state == 2)\n    {\n      {\n        color_set_mode_col_reflect (IN1);\n      }\n      {\n        tacho_set_speed_sp (OUTB, -200);\n        tacho_run_forever (OUTB);\n      }\n      {\n        tacho_set_speed_sp (OUTC, -50);\n        tacho_run_forever (OUTC);\n      }\n      {\n      _fsm1_trans2:\n        if (true)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        byte Val = (byte) sensor_get_value0 (IN1, 0);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        tacho_set_speed_sp (OUTB, -200);\n        tacho_run_forever (OUTB);\n      }\n      {\n        tacho_set_speed_sp (OUTC, -50);\n        tacho_run_forever (OUTC);\n      }\n      {\n      _fsm1_trans3:\n        if (_fsm1_slot_1 < 20)\n          {\n            _fsm1_state = 4;\n          }\n        else if (20 <= _fsm1_slot_1)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        byte Val = (byte) sensor_get_value0 (IN1, 0);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        tacho_set_speed_sp (OUTB, -50);\n        tacho_run_forever (OUTB);\n      }\n      {\n        tacho_set_speed_sp (OUTC, -200);\n        tacho_run_forever (OUTC);\n      }\n      {\n        goto _fsm1_trans3;\n      }\n    }\n  else if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">.decl lightval/1(byte)</span>\n<span class=\"cm\">.decl onLine/0()</span>\n<span class=\"cm\">.decl running/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">lightval(Light) :- _io_sensor_get_value(IN1, Light).</span>\n<span class=\"cm\">onLine() :- lightval(Light), ArithComp (ArithLT &quot;Light&quot; ConstInt 20).</span>\n<span class=\"cm\">running()@next :- init().</span>\n<span class=\"cm\">running()@next :- running().</span>\n<span class=\"cm\">#_io_col_reflect(IN1)@next :- init().</span>\n<span class=\"cm\">#_io_sensor_get_value(IN1, _)@next :- running().</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, -200)@next :- !onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, -50)@next :- onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, -200)@next :- onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, -50)@next :- !onLine().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_sensor_get_value&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;lightval&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;onLine&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">color_set_mode_col_reflect</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">sensor_get_value0</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"mi\">20</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">20</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">sensor_get_value0</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans3</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/edge_follower.dl",
      "template": "arduino",
      "setting": "no FSM",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n#col_reflect(Sensor: uint8_t) = { color_set_mode_col_reflect(#Sensor); }\n#sensor_get_value(Sensor: uint8_t, Val: byte) = { byte Val = (byte)sensor_get_value0(#Sensor, 0); }\n\n.decl onLine\n.decl init\n.decl running\n.decl lightval(byte)\ninit@0.\n\n#col_reflect(#IN1)@next :- init.\nrunning@next :- init.\nrunning@next :- running.\n\n#sensor_get_value(#IN1, ?)@next :- running.\n\nlightval(Light) :- #sensor_get_value(#IN1, Light).\nonLine :- lightval(Light), Light < 20.\n\n#tacho_go(#OUTB,  -50)@next :- onLine.\n#tacho_go(#OUTC, -200)@next :- onLine.\n\n#tacho_go(#OUTB, -200)@next :- !onLine.\n#tacho_go(#OUTC,  -50)@next :- !onLine.\n",
      "tsource": "/*\nProgram 1:\n.decl init/0()\n.decl lightval/1(byte)\n.decl onLine/0()\n.decl running/0()\ninit()@0.\nlightval(Light) :- _io_sensor_get_value(IN1, Light).\nonLine() :- lightval(Light), ArithComp (ArithLT \"Light\" ConstInt 20).\nrunning()@next :- init().\nrunning()@next :- running().\n#_io_col_reflect(IN1)@next :- init().\n#_io_sensor_get_value(IN1, _)@next :- running().\n#_io_tacho_go(OUTB, -200)@next :- !onLine().\n#_io_tacho_go(OUTB, -50)@next :- onLine().\n#_io_tacho_go(OUTC, -200)@next :- onLine().\n#_io_tacho_go(OUTC, -50)@next :- !onLine().\n\n\n\nStrata:\n1: fromList [\"_io_sensor_get_value\"]\n2: fromList [\"lightval\"]\n3: fromList [\"onLine\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 6\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_col_reflect 1 + sizeof(uint8_t)\n#define _size__io_sensor_get_value 1 + sizeof(uint8_t)+ sizeof(byte)\n#define _size__io_tacho_go 1 + sizeof(uint8_t)+ sizeof(int)\n#define _size_init 1\n#define _size_lightval 1 + sizeof(byte)\n#define _size_onLine 1\n#define _size_running 1\nbyte _sizes[8] =\n  { 0, _size__io_col_reflect, _size__io_sensor_get_value, _size__io_tacho_go,\n_size_init, _size_lightval, _size_onLine, _size_running\n};\n\n#define _type__io_col_reflect 1\n#define _type__io_sensor_get_value 2\n#define _type__io_tacho_go 3\n#define _type_init 4\n#define _type_lightval 5\n#define _type_onLine 6\n#define _type_running 7\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline uint8_t\n_io_col_reflect_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\ninline uint8_t\n_io_sensor_get_value_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\ninline byte\n_io_sensor_get_value_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (uint8_t));\n}\n\ninline uint8_t\n_io_tacho_go_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\ninline int\n_io_tacho_go_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (uint8_t));\n}\n\ninline byte\nlightval_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t (byte *buf, byte type, uint8_t a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t_byte (byte *buf, byte type, uint8_t a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t_int (byte *buf, byte type, uint8_t a1, int a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  free = _write_data < int >(free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_col_reflect(buf, a1) _write_fact_uint8_t(buf, _type__io_col_reflect, a1)\n#define write__io_sensor_get_value(buf, a1, a2) _write_fact_uint8_t_byte(buf, _type__io_sensor_get_value, a1, a2)\n#define write__io_tacho_go(buf, a1, a2) _write_fact_uint8_t_int(buf, _type__io_tacho_go, a1, a2)\n#define write_init(buf) _write_fact_(buf, _type_init)\n#define write_lightval(buf, a1) _write_fact_byte(buf, _type_lightval, a1)\n#define write_onLine(buf) _write_fact_(buf, _type_onLine)\n#define write_running(buf) _write_fact_(buf, _type_running)\n\n#define _io_col_reflect_f(buf) _next__fact(buf,_type__io_col_reflect)\n\nbyte *\n_io_col_reflect_b (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_col_reflect)) != 0)\n    {\n      if (_io_col_reflect_1 (buf) != a1)\n        {\n          buf = buf + _size__io_col_reflect;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_sensor_get_value_ff(buf) _next__fact(buf,_type__io_sensor_get_value)\n\nbyte *\n_io_sensor_get_value_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_sensor_get_value)) != 0)\n    {\n      if (_io_sensor_get_value_2 (buf) != a2)\n        {\n          buf = buf + _size__io_sensor_get_value;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_sensor_get_value_bf (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_sensor_get_value)) != 0)\n    {\n      if (_io_sensor_get_value_1 (buf) != a1)\n        {\n          buf = buf + _size__io_sensor_get_value;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_sensor_get_value_bb (byte *buf, uint8_t a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_sensor_get_value)) != 0)\n    {\n      if (_io_sensor_get_value_1 (buf) != a1\n          || _io_sensor_get_value_2 (buf) != a2)\n        {\n          buf = buf + _size__io_sensor_get_value;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_tacho_go_ff(buf) _next__fact(buf,_type__io_tacho_go)\n\nbyte *\n_io_tacho_go_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_2 (buf) != a2)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_tacho_go_bf (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_1 (buf) != a1)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_tacho_go_bb (byte *buf, uint8_t a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_1 (buf) != a1 || _io_tacho_go_2 (buf) != a2)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define init_(buf) _next__fact(buf,_type_init)\n\n#define lightval_f(buf) _next__fact(buf,_type_lightval)\n\nbyte *\nlightval_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_lightval)) != 0)\n    {\n      if (lightval_1 (buf) != a1)\n        {\n          buf = buf + _size_lightval;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define onLine_(buf) _next__fact(buf,_type_onLine)\n\n#define running_(buf) _next__fact(buf,_type_running)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: lightval(Light)=>_curr_state :- U{_io_sensor_get_value(IN1, Light)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_sensor_get_value_bf (_tuple1, IN1)) != 0)\n    {\n      byte Light = _io_sensor_get_value_2 (_tuple1);\n      if (lightval_f (_curr_state, Light) == 0)\n        {\n          write_lightval (_curr_state, Light);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_sensor_get_value;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_2: onLine()=>_curr_state :- E{lightval(Light) ArithComp (ArithLT \"Light\" ConstInt 20)}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = lightval_f (_tuple1)) != 0)\n    {\n      byte Light = lightval_1 (_tuple1);\n      if (Light < 20)\n        {\n          if (onLine_ (_curr_state) == 0)\n            {\n              write_onLine (_curr_state);\n              _added_facts = true;\n            }\n          goto jmp0;\n        }\n      _tuple1 += _size_lightval;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_1: running()=>_next_state :- E{init()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      if (running_ (_next_state) == 0)\n        {\n          write_running (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: running()=>_next_state :- E{running()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (running_ (_curr_state) != 0)\n    {\n      if (running_ (_next_state) == 0)\n        {\n          write_running (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: #_io_col_reflect(IN1)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_col_reflect_b (_next_state, IN1)) == 0)\n        {\n          // make io call\n          color_set_mode_col_reflect (IN1);\n          write__io_col_reflect (_next_state, IN1);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: #_io_sensor_get_value(IN1, _)=>_next_state :- E{running()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (running_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_sensor_get_value_bf (_next_state, IN1)) == 0)\n        {\n          // make io call\n          byte Val = (byte) sensor_get_value0 (IN1, 0);\n          write__io_sensor_get_value (_next_state, IN1, Val);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: #_io_tacho_go(OUTB, -200)=>_next_state :- E{!onLine()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (onLine_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_tacho_go_bb (_next_state, OUTB, -200)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTB, -200);\n          tacho_run_forever (OUTB);\n          write__io_tacho_go (_next_state, OUTB, -200);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_tacho_go(OUTB, -50)=>_next_state :- E{onLine()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (onLine_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_go_bb (_next_state, OUTB, -50)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTB, -50);\n          tacho_run_forever (OUTB);\n          write__io_tacho_go (_next_state, OUTB, -50);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_tacho_go(OUTC, -200)=>_next_state :- E{onLine()}.\nvoid\n_inductive_rule_7 ()\n{\n  if (onLine_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_go_bb (_next_state, OUTC, -200)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTC, -200);\n          tacho_run_forever (OUTC);\n          write__io_tacho_go (_next_state, OUTC, -200);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_8: #_io_tacho_go(OUTC, -50)=>_next_state :- E{!onLine()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (onLine_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_tacho_go_bb (_next_state, OUTC, -50)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTC, -50);\n          tacho_run_forever (OUTC);\n          write__io_tacho_go (_next_state, OUTC, -50);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_init (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n// stratum 2\n  _deductive_rule_1 ();\n// stratum 3\n  _deductive_rule_2 ();\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n  _inductive_rule_6 ();\n  _inductive_rule_7 ();\n  _inductive_rule_8 ();\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">.decl lightval/1(byte)</span>\n<span class=\"cm\">.decl onLine/0()</span>\n<span class=\"cm\">.decl running/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">lightval(Light) :- _io_sensor_get_value(IN1, Light).</span>\n<span class=\"cm\">onLine() :- lightval(Light), ArithComp (ArithLT &quot;Light&quot; ConstInt 20).</span>\n<span class=\"cm\">running()@next :- init().</span>\n<span class=\"cm\">running()@next :- running().</span>\n<span class=\"cm\">#_io_col_reflect(IN1)@next :- init().</span>\n<span class=\"cm\">#_io_sensor_get_value(IN1, _)@next :- running().</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, -200)@next :- !onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, -50)@next :- onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, -200)@next :- onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, -50)@next :- !onLine().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_sensor_get_value&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;lightval&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;onLine&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 6</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_col_reflect 1 + sizeof(uint8_t)</span>\n<span class=\"cp\">#define _size__io_sensor_get_value 1 + sizeof(uint8_t)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_tacho_go 1 + sizeof(uint8_t)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_init 1</span>\n<span class=\"cp\">#define _size_lightval 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_onLine 1</span>\n<span class=\"cp\">#define _size_running 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">8</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_col_reflect</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">,</span>\n<span class=\"n\">_size_init</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_lightval</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_onLine</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_running</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_col_reflect 1</span>\n<span class=\"cp\">#define _type__io_sensor_get_value 2</span>\n<span class=\"cp\">#define _type__io_tacho_go 3</span>\n<span class=\"cp\">#define _type_init 4</span>\n<span class=\"cp\">#define _type_lightval 5</span>\n<span class=\"cp\">#define _type_onLine 6</span>\n<span class=\"cp\">#define _type_running 7</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"n\">_io_col_reflect_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"n\">_io_sensor_get_value_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_sensor_get_value_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">uint8_t</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">uint8_t</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">lightval_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_uint8_t</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_uint8_t_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_uint8_t_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_col_reflect(buf, a1) _write_fact_uint8_t(buf, _type__io_col_reflect, a1)</span>\n<span class=\"cp\">#define write__io_sensor_get_value(buf, a1, a2) _write_fact_uint8_t_byte(buf, _type__io_sensor_get_value, a1, a2)</span>\n<span class=\"cp\">#define write__io_tacho_go(buf, a1, a2) _write_fact_uint8_t_int(buf, _type__io_tacho_go, a1, a2)</span>\n<span class=\"cp\">#define write_init(buf) _write_fact_(buf, _type_init)</span>\n<span class=\"cp\">#define write_lightval(buf, a1) _write_fact_byte(buf, _type_lightval, a1)</span>\n<span class=\"cp\">#define write_onLine(buf) _write_fact_(buf, _type_onLine)</span>\n<span class=\"cp\">#define write_running(buf) _write_fact_(buf, _type_running)</span>\n\n<span class=\"cp\">#define _io_col_reflect_f(buf) _next__fact(buf,_type__io_col_reflect)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_col_reflect_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_col_reflect</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_col_reflect_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_col_reflect</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_sensor_get_value_ff(buf) _next__fact(buf,_type__io_sensor_get_value)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_sensor_get_value_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_sensor_get_value</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_sensor_get_value_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_sensor_get_value_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_sensor_get_value</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_sensor_get_value_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_sensor_get_value_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_sensor_get_value</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_sensor_get_value_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span>\n<span class=\"w\">          </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_sensor_get_value_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_tacho_go_ff(buf) _next__fact(buf,_type__io_tacho_go)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_tacho_go_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_tacho_go_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define init_(buf) _next__fact(buf,_type_init)</span>\n\n<span class=\"cp\">#define lightval_f(buf) _next__fact(buf,_type_lightval)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">lightval_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_lightval</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">lightval_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_lightval</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define onLine_(buf) _next__fact(buf,_type_onLine)</span>\n\n<span class=\"cp\">#define running_(buf) _next__fact(buf,_type_running)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: lightval(Light)=&gt;_curr_state :- U{_io_sensor_get_value(IN1, Light)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_sensor_get_value_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Light</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_sensor_get_value_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">lightval_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Light</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_lightval</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Light</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: onLine()=&gt;_curr_state :- E{lightval(Light) ArithComp (ArithLT &quot;Light&quot; ConstInt 20)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">lightval_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Light</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">lightval_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">Light</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"mi\">20</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_onLine</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_lightval</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: running()=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">running_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_running</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: running()=&gt;_next_state :- E{running()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">running_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">running_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_running</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_col_reflect(IN1)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_col_reflect_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">color_set_mode_col_reflect</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_col_reflect</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_sensor_get_value(IN1, _)=&gt;_next_state :- E{running()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">running_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_sensor_get_value_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">sensor_get_value0</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_sensor_get_value</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_tacho_go(OUTB, -200)=&gt;_next_state :- E{!onLine()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_tacho_go(OUTB, -50)=&gt;_next_state :- E{onLine()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_tacho_go(OUTC, -200)=&gt;_next_state :- E{onLine()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_tacho_go(OUTC, -50)=&gt;_next_state :- E{!onLine()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_init</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 3</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/edge_follower.dl",
      "template": "lego ev3",
      "setting": "normal",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n#col_reflect(Sensor: uint8_t) = { color_set_mode_col_reflect(#Sensor); }\n#sensor_get_value(Sensor: uint8_t, Val: byte) = { byte Val = (byte)sensor_get_value0(#Sensor, 0); }\n\n.decl onLine\n.decl init\n.decl running\n.decl lightval(byte)\ninit@0.\n\n#col_reflect(#IN1)@next :- init.\nrunning@next :- init.\nrunning@next :- running.\n\n#sensor_get_value(#IN1, ?)@next :- running.\n\nlightval(Light) :- #sensor_get_value(#IN1, Light).\nonLine :- lightval(Light), Light < 20.\n\n#tacho_go(#OUTB,  -50)@next :- onLine.\n#tacho_go(#OUTC, -200)@next :- onLine.\n\n#tacho_go(#OUTB, -200)@next :- !onLine.\n#tacho_go(#OUTC,  -50)@next :- !onLine.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl init/0()\n.decl lightval/1(byte)\n.decl onLine/0()\n.decl running/0()\ninit()@0.\nlightval(Light) :- _io_sensor_get_value(IN1, Light).\nonLine() :- lightval(Light), ArithComp (ArithLT \"Light\" ConstInt 20).\nrunning()@next :- init().\nrunning()@next :- running().\n#_io_col_reflect(IN1)@next :- init().\n#_io_sensor_get_value(IN1, _)@next :- running().\n#_io_tacho_go(OUTB, -200)@next :- !onLine().\n#_io_tacho_go(OUTB, -50)@next :- onLine().\n#_io_tacho_go(OUTC, -200)@next :- onLine().\n#_io_tacho_go(OUTC, -50)@next :- !onLine().\n\n\n\nStrata:\n1: fromList [\"_io_sensor_get_value\"]\n2: fromList [\"lightval\"]\n3: fromList [\"onLine\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm1_state = 1;\nbyte _fsm1_slot_1;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm1_state == 2)\n    {\n      {\n        color_set_mode_col_reflect (IN1);\n      }\n      {\n        tacho_set_speed_sp (OUTB, -200);\n        tacho_run_forever (OUTB);\n      }\n      {\n        tacho_set_speed_sp (OUTC, -50);\n        tacho_run_forever (OUTC);\n      }\n      {\n      _fsm1_trans2:\n        if (true)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        byte Val = (byte) sensor_get_value0 (IN1, 0);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        tacho_set_speed_sp (OUTB, -200);\n        tacho_run_forever (OUTB);\n      }\n      {\n        tacho_set_speed_sp (OUTC, -50);\n        tacho_run_forever (OUTC);\n      }\n      {\n      _fsm1_trans3:\n        if (_fsm1_slot_1 < 20)\n          {\n            _fsm1_state = 4;\n          }\n        else if (20 <= _fsm1_slot_1)\n          {\n            _fsm1_state = 3;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        byte Val = (byte) sensor_get_value0 (IN1, 0);\n        _fsm1_slot_1 = Val;\n      }\n      {\n        tacho_set_speed_sp (OUTB, -50);\n        tacho_run_forever (OUTB);\n      }\n      {\n        tacho_set_speed_sp (OUTC, -200);\n        tacho_run_forever (OUTC);\n      }\n      {\n        goto _fsm1_trans3;\n      }\n    }\n  else if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">.decl lightval/1(byte)</span>\n<span class=\"cm\">.decl onLine/0()</span>\n<span class=\"cm\">.decl running/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">lightval(Light) :- _io_sensor_get_value(IN1, Light).</span>\n<span class=\"cm\">onLine() :- lightval(Light), ArithComp (ArithLT &quot;Light&quot; ConstInt 20).</span>\n<span class=\"cm\">running()@next :- init().</span>\n<span class=\"cm\">running()@next :- running().</span>\n<span class=\"cm\">#_io_col_reflect(IN1)@next :- init().</span>\n<span class=\"cm\">#_io_sensor_get_value(IN1, _)@next :- running().</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, -200)@next :- !onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, -50)@next :- onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, -200)@next :- onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, -50)@next :- !onLine().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_sensor_get_value&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;lightval&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;onLine&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">color_set_mode_col_reflect</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans2</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">sensor_get_value0</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"mi\">20</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">20</span><span class=\"w\"> </span><span class=\"o\">&lt;=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">sensor_get_value0</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans3</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"n\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/edge_follower.dl",
      "template": "lego ev3",
      "setting": "no FSM",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n#col_reflect(Sensor: uint8_t) = { color_set_mode_col_reflect(#Sensor); }\n#sensor_get_value(Sensor: uint8_t, Val: byte) = { byte Val = (byte)sensor_get_value0(#Sensor, 0); }\n\n.decl onLine\n.decl init\n.decl running\n.decl lightval(byte)\ninit@0.\n\n#col_reflect(#IN1)@next :- init.\nrunning@next :- init.\nrunning@next :- running.\n\n#sensor_get_value(#IN1, ?)@next :- running.\n\nlightval(Light) :- #sensor_get_value(#IN1, Light).\nonLine :- lightval(Light), Light < 20.\n\n#tacho_go(#OUTB,  -50)@next :- onLine.\n#tacho_go(#OUTC, -200)@next :- onLine.\n\n#tacho_go(#OUTB, -200)@next :- !onLine.\n#tacho_go(#OUTC,  -50)@next :- !onLine.\n",
      "tsource": "/*\nProgram 1:\n.decl init/0()\n.decl lightval/1(byte)\n.decl onLine/0()\n.decl running/0()\ninit()@0.\nlightval(Light) :- _io_sensor_get_value(IN1, Light).\nonLine() :- lightval(Light), ArithComp (ArithLT \"Light\" ConstInt 20).\nrunning()@next :- init().\nrunning()@next :- running().\n#_io_col_reflect(IN1)@next :- init().\n#_io_sensor_get_value(IN1, _)@next :- running().\n#_io_tacho_go(OUTB, -200)@next :- !onLine().\n#_io_tacho_go(OUTB, -50)@next :- onLine().\n#_io_tacho_go(OUTC, -200)@next :- onLine().\n#_io_tacho_go(OUTC, -50)@next :- !onLine().\n\n\n\nStrata:\n1: fromList [\"_io_sensor_get_value\"]\n2: fromList [\"lightval\"]\n3: fromList [\"onLine\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 6\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_col_reflect 1 + sizeof(uint8_t)\n#define _size__io_sensor_get_value 1 + sizeof(uint8_t)+ sizeof(byte)\n#define _size__io_tacho_go 1 + sizeof(uint8_t)+ sizeof(int)\n#define _size_init 1\n#define _size_lightval 1 + sizeof(byte)\n#define _size_onLine 1\n#define _size_running 1\nbyte _sizes[8] =\n  { 0, _size__io_col_reflect, _size__io_sensor_get_value, _size__io_tacho_go,\n_size_init, _size_lightval, _size_onLine, _size_running\n};\n\n#define _type__io_col_reflect 1\n#define _type__io_sensor_get_value 2\n#define _type__io_tacho_go 3\n#define _type_init 4\n#define _type_lightval 5\n#define _type_onLine 6\n#define _type_running 7\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline uint8_t\n_io_col_reflect_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\ninline uint8_t\n_io_sensor_get_value_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\ninline byte\n_io_sensor_get_value_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (uint8_t));\n}\n\ninline uint8_t\n_io_tacho_go_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\ninline int\n_io_tacho_go_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (uint8_t));\n}\n\ninline byte\nlightval_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t (byte *buf, byte type, uint8_t a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t_byte (byte *buf, byte type, uint8_t a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t_int (byte *buf, byte type, uint8_t a1, int a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  free = _write_data < int >(free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_col_reflect(buf, a1) _write_fact_uint8_t(buf, _type__io_col_reflect, a1)\n#define write__io_sensor_get_value(buf, a1, a2) _write_fact_uint8_t_byte(buf, _type__io_sensor_get_value, a1, a2)\n#define write__io_tacho_go(buf, a1, a2) _write_fact_uint8_t_int(buf, _type__io_tacho_go, a1, a2)\n#define write_init(buf) _write_fact_(buf, _type_init)\n#define write_lightval(buf, a1) _write_fact_byte(buf, _type_lightval, a1)\n#define write_onLine(buf) _write_fact_(buf, _type_onLine)\n#define write_running(buf) _write_fact_(buf, _type_running)\n\n#define _io_col_reflect_f(buf) _next__fact(buf,_type__io_col_reflect)\n\nbyte *\n_io_col_reflect_b (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_col_reflect)) != 0)\n    {\n      if (_io_col_reflect_1 (buf) != a1)\n        {\n          buf = buf + _size__io_col_reflect;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_sensor_get_value_ff(buf) _next__fact(buf,_type__io_sensor_get_value)\n\nbyte *\n_io_sensor_get_value_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_sensor_get_value)) != 0)\n    {\n      if (_io_sensor_get_value_2 (buf) != a2)\n        {\n          buf = buf + _size__io_sensor_get_value;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_sensor_get_value_bf (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_sensor_get_value)) != 0)\n    {\n      if (_io_sensor_get_value_1 (buf) != a1)\n        {\n          buf = buf + _size__io_sensor_get_value;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_sensor_get_value_bb (byte *buf, uint8_t a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type__io_sensor_get_value)) != 0)\n    {\n      if (_io_sensor_get_value_1 (buf) != a1\n          || _io_sensor_get_value_2 (buf) != a2)\n        {\n          buf = buf + _size__io_sensor_get_value;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_tacho_go_ff(buf) _next__fact(buf,_type__io_tacho_go)\n\nbyte *\n_io_tacho_go_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_2 (buf) != a2)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_tacho_go_bf (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_1 (buf) != a1)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_tacho_go_bb (byte *buf, uint8_t a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_1 (buf) != a1 || _io_tacho_go_2 (buf) != a2)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define init_(buf) _next__fact(buf,_type_init)\n\n#define lightval_f(buf) _next__fact(buf,_type_lightval)\n\nbyte *\nlightval_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_lightval)) != 0)\n    {\n      if (lightval_1 (buf) != a1)\n        {\n          buf = buf + _size_lightval;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define onLine_(buf) _next__fact(buf,_type_onLine)\n\n#define running_(buf) _next__fact(buf,_type_running)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: lightval(Light)=>_curr_state :- U{_io_sensor_get_value(IN1, Light)}.\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_sensor_get_value_bf (_tuple1, IN1)) != 0)\n    {\n      byte Light = _io_sensor_get_value_2 (_tuple1);\n      if (lightval_f (_curr_state, Light) == 0)\n        {\n          write_lightval (_curr_state, Light);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_sensor_get_value;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_2: onLine()=>_curr_state :- E{lightval(Light) ArithComp (ArithLT \"Light\" ConstInt 20)}.\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = lightval_f (_tuple1)) != 0)\n    {\n      byte Light = lightval_1 (_tuple1);\n      if (Light < 20)\n        {\n          if (onLine_ (_curr_state) == 0)\n            {\n              write_onLine (_curr_state);\n              _added_facts = true;\n            }\n          goto jmp0;\n        }\n      _tuple1 += _size_lightval;\n    }\njmp0:;\n  return _added_facts;\n};\n\n// _inductive_rule_1: running()=>_next_state :- E{init()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      if (running_ (_next_state) == 0)\n        {\n          write_running (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: running()=>_next_state :- E{running()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (running_ (_curr_state) != 0)\n    {\n      if (running_ (_next_state) == 0)\n        {\n          write_running (_next_state);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_3: #_io_col_reflect(IN1)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_3 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_col_reflect_b (_next_state, IN1)) == 0)\n        {\n          // make io call\n          color_set_mode_col_reflect (IN1);\n          write__io_col_reflect (_next_state, IN1);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_4: #_io_sensor_get_value(IN1, _)=>_next_state :- E{running()}.\nvoid\n_inductive_rule_4 ()\n{\n  if (running_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_sensor_get_value_bf (_next_state, IN1)) == 0)\n        {\n          // make io call\n          byte Val = (byte) sensor_get_value0 (IN1, 0);\n          write__io_sensor_get_value (_next_state, IN1, Val);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_5: #_io_tacho_go(OUTB, -200)=>_next_state :- E{!onLine()}.\nvoid\n_inductive_rule_5 ()\n{\n  if (onLine_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_tacho_go_bb (_next_state, OUTB, -200)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTB, -200);\n          tacho_run_forever (OUTB);\n          write__io_tacho_go (_next_state, OUTB, -200);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_6: #_io_tacho_go(OUTB, -50)=>_next_state :- E{onLine()}.\nvoid\n_inductive_rule_6 ()\n{\n  if (onLine_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_go_bb (_next_state, OUTB, -50)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTB, -50);\n          tacho_run_forever (OUTB);\n          write__io_tacho_go (_next_state, OUTB, -50);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_7: #_io_tacho_go(OUTC, -200)=>_next_state :- E{onLine()}.\nvoid\n_inductive_rule_7 ()\n{\n  if (onLine_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_go_bb (_next_state, OUTC, -200)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTC, -200);\n          tacho_run_forever (OUTC);\n          write__io_tacho_go (_next_state, OUTC, -200);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_8: #_io_tacho_go(OUTC, -50)=>_next_state :- E{!onLine()}.\nvoid\n_inductive_rule_8 ()\n{\n  if (onLine_ (_curr_state) == 0)\n    {\n      byte *_tuple1 = _next_state;\n      if ((_tuple1 = _io_tacho_go_bb (_next_state, OUTC, -50)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTC, -50);\n          tacho_run_forever (OUTC);\n          write__io_tacho_go (_next_state, OUTC, -50);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_init (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n// stratum 2\n  _deductive_rule_1 ();\n// stratum 3\n  _deductive_rule_2 ();\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n  _inductive_rule_5 ();\n  _inductive_rule_6 ();\n  _inductive_rule_7 ();\n  _inductive_rule_8 ();\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">.decl lightval/1(byte)</span>\n<span class=\"cm\">.decl onLine/0()</span>\n<span class=\"cm\">.decl running/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">lightval(Light) :- _io_sensor_get_value(IN1, Light).</span>\n<span class=\"cm\">onLine() :- lightval(Light), ArithComp (ArithLT &quot;Light&quot; ConstInt 20).</span>\n<span class=\"cm\">running()@next :- init().</span>\n<span class=\"cm\">running()@next :- running().</span>\n<span class=\"cm\">#_io_col_reflect(IN1)@next :- init().</span>\n<span class=\"cm\">#_io_sensor_get_value(IN1, _)@next :- running().</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, -200)@next :- !onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, -50)@next :- onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, -200)@next :- onLine().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, -50)@next :- !onLine().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_sensor_get_value&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;lightval&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;onLine&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 6</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_col_reflect 1 + sizeof(uint8_t)</span>\n<span class=\"cp\">#define _size__io_sensor_get_value 1 + sizeof(uint8_t)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size__io_tacho_go 1 + sizeof(uint8_t)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_init 1</span>\n<span class=\"cp\">#define _size_lightval 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_onLine 1</span>\n<span class=\"cp\">#define _size_running 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">8</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_col_reflect</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">,</span>\n<span class=\"n\">_size_init</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_lightval</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_onLine</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_running</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_col_reflect 1</span>\n<span class=\"cp\">#define _type__io_sensor_get_value 2</span>\n<span class=\"cp\">#define _type__io_tacho_go 3</span>\n<span class=\"cp\">#define _type_init 4</span>\n<span class=\"cp\">#define _type_lightval 5</span>\n<span class=\"cp\">#define _type_onLine 6</span>\n<span class=\"cp\">#define _type_running 7</span>\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"n\">_io_col_reflect_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"n\">_io_sensor_get_value_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">_io_sensor_get_value_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">uint8_t</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">uint8_t</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">lightval_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_uint8_t</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_uint8_t_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_uint8_t_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_col_reflect(buf, a1) _write_fact_uint8_t(buf, _type__io_col_reflect, a1)</span>\n<span class=\"cp\">#define write__io_sensor_get_value(buf, a1, a2) _write_fact_uint8_t_byte(buf, _type__io_sensor_get_value, a1, a2)</span>\n<span class=\"cp\">#define write__io_tacho_go(buf, a1, a2) _write_fact_uint8_t_int(buf, _type__io_tacho_go, a1, a2)</span>\n<span class=\"cp\">#define write_init(buf) _write_fact_(buf, _type_init)</span>\n<span class=\"cp\">#define write_lightval(buf, a1) _write_fact_byte(buf, _type_lightval, a1)</span>\n<span class=\"cp\">#define write_onLine(buf) _write_fact_(buf, _type_onLine)</span>\n<span class=\"cp\">#define write_running(buf) _write_fact_(buf, _type_running)</span>\n\n<span class=\"cp\">#define _io_col_reflect_f(buf) _next__fact(buf,_type__io_col_reflect)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_col_reflect_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_col_reflect</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_col_reflect_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_col_reflect</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_sensor_get_value_ff(buf) _next__fact(buf,_type__io_sensor_get_value)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_sensor_get_value_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_sensor_get_value</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_sensor_get_value_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_sensor_get_value_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_sensor_get_value</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_sensor_get_value_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_sensor_get_value_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_sensor_get_value</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_sensor_get_value_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span>\n<span class=\"w\">          </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_sensor_get_value_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_tacho_go_ff(buf) _next__fact(buf,_type__io_tacho_go)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_tacho_go_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_tacho_go_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define init_(buf) _next__fact(buf,_type_init)</span>\n\n<span class=\"cp\">#define lightval_f(buf) _next__fact(buf,_type_lightval)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">lightval_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_lightval</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">lightval_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_lightval</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define onLine_(buf) _next__fact(buf,_type_onLine)</span>\n\n<span class=\"cp\">#define running_(buf) _next__fact(buf,_type_running)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: lightval(Light)=&gt;_curr_state :- U{_io_sensor_get_value(IN1, Light)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_sensor_get_value_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Light</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_sensor_get_value_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">lightval_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Light</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_lightval</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Light</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_sensor_get_value</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: onLine()=&gt;_curr_state :- E{lightval(Light) ArithComp (ArithLT &quot;Light&quot; ConstInt 20)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">lightval_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Light</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">lightval_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">Light</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"mi\">20</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_onLine</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_lightval</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: running()=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">running_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_running</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: running()=&gt;_next_state :- E{running()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">running_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">running_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_running</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_col_reflect(IN1)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_col_reflect_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">color_set_mode_col_reflect</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_col_reflect</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_sensor_get_value(IN1, _)=&gt;_next_state :- E{running()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">running_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_sensor_get_value_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">sensor_get_value0</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">IN1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_sensor_get_value</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">IN1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Val</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_5: #_io_tacho_go(OUTB, -200)=&gt;_next_state :- E{!onLine()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_6: #_io_tacho_go(OUTB, -50)=&gt;_next_state :- E{onLine()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_7: #_io_tacho_go(OUTC, -200)=&gt;_next_state :- E{onLine()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-200</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_8: #_io_tacho_go(OUTC, -50)=&gt;_next_state :- E{!onLine()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">onLine_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">-50</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_init</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n<span class=\"c1\">// stratum 2</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 3</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"nf\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/go.dl",
      "template": "no runtime",
      "setting": "normal",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n\n.decl init\n\ninit@0.\n\n#tacho_go(#OUTB, 100)@next :- init.\n#tacho_go(#OUTC, 100)@next :- init.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl init/0()\ninit()@0.\n#_io_tacho_go(OUTB, 100)@next :- init().\n#_io_tacho_go(OUTC, 100)@next :- init().\n\n\n\nStrata:\n*/\n\n#define _rulecount 0\n#define _bufsize 256\n\nbyte _fsm1_state = 3;\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n/* SETUP */\n\n\n/* LOOP */\n\nif (_fsm1_state == 1)\n  {\n    {\n    _fsm1_trans1:\n      if (true)\n        {\n          _fsm1_state = 1;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 2)\n  {\n    {\n      tacho_set_speed_sp (OUTB, 100);\n      tacho_run_forever (OUTB);\n    }\n    {\n      goto _fsm1_trans1;\n    }\n  }\nelse if (_fsm1_state == 4)\n  {\n    {\n      tacho_set_speed_sp (OUTB, 100);\n      tacho_run_forever (OUTB);\n    }\n    {\n      tacho_set_speed_sp (OUTC, 100);\n      tacho_run_forever (OUTC);\n    }\n    {\n      goto _fsm1_trans1;\n    }\n  }\nelse if (_fsm1_state == 3)\n  {\n    {\n    _fsm1_trans3:\n      if (OUTB == OUTC)\n        {\n          _fsm1_state = 2;\n        }\n      else if (OUTB != OUTC)\n        {\n          _fsm1_state = 4;\n        }\n      else;\n    }\n  }\nelse;\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, 100)@next :- init().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, 100)@next :- init().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cm\">/* SETUP */</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/go.dl",
      "template": "no runtime",
      "setting": "no FSM",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n\n.decl init\n\ninit@0.\n\n#tacho_go(#OUTB, 100)@next :- init.\n#tacho_go(#OUTC, 100)@next :- init.\n",
      "tsource": "/*\nProgram 1:\n.decl init/0()\ninit()@0.\n#_io_tacho_go(OUTB, 100)@next :- init().\n#_io_tacho_go(OUTC, 100)@next :- init().\n\n\n\nStrata:\n*/\n\n#define _rulecount 2\n#define _bufsize 256\n\n\n\n#define _size__io_tacho_go 1 + sizeof(uint8_t)+ sizeof(int)\n#define _size_init 1\nbyte _sizes[3] = { 0, _size__io_tacho_go, _size_init\n};\n\n#define _type__io_tacho_go 1\n#define _type_init 2\n\n\n\ninline uint8_t\n_io_tacho_go_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\ninline int\n_io_tacho_go_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (uint8_t));\n}\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t_int (byte *buf, byte type, uint8_t a1, int a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  free = _write_data < int >(free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_tacho_go(buf, a1, a2) _write_fact_uint8_t_int(buf, _type__io_tacho_go, a1, a2)\n#define write_init(buf) _write_fact_(buf, _type_init)\n\n#define _io_tacho_go_ff(buf) _next__fact(buf,_type__io_tacho_go)\n\nbyte *\n_io_tacho_go_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_2 (buf) != a2)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_tacho_go_bf (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_1 (buf) != a1)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_tacho_go_bb (byte *buf, uint8_t a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_1 (buf) != a1 || _io_tacho_go_2 (buf) != a2)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define init_(buf) _next__fact(buf,_type_init)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: #_io_tacho_go(OUTB, 100)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_go_bb (_next_state, OUTB, 100)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTB, 100);\n          tacho_run_forever (OUTB);\n          write__io_tacho_go (_next_state, OUTB, 100);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: #_io_tacho_go(OUTC, 100)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_go_bb (_next_state, OUTC, 100)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTC, 100);\n          tacho_run_forever (OUTC);\n          write__io_tacho_go (_next_state, OUTC, 100);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n/* SETUP */\nwrite_init (_curr_state);\n_added_facts = true;\n\n\n/* LOOP */\n\n\n\n\n// inductive_phase\n_inductive_rule_1 ();\n_inductive_rule_2 ();\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, 100)@next :- init().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, 100)@next :- init().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 2</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n\n\n<span class=\"cp\">#define _size__io_tacho_go 1 + sizeof(uint8_t)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_init 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">3</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_init</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_tacho_go 1</span>\n<span class=\"cp\">#define _type_init 2</span>\n\n\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"nf\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">uint8_t</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_uint8_t_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_tacho_go(buf, a1, a2) _write_fact_uint8_t_int(buf, _type__io_tacho_go, a1, a2)</span>\n<span class=\"cp\">#define write_init(buf) _write_fact_(buf, _type_init)</span>\n\n<span class=\"cp\">#define _io_tacho_go_ff(buf) _next__fact(buf,_type__io_tacho_go)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_tacho_go_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_tacho_go_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define init_(buf) _next__fact(buf,_type_init)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: #_io_tacho_go(OUTB, 100)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: #_io_tacho_go(OUTC, 100)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cm\">/* SETUP */</span>\n<span class=\"n\">write_init</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n\n\n\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/go.dl",
      "template": "arduino",
      "setting": "normal",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n\n.decl init\n\ninit@0.\n\n#tacho_go(#OUTB, 100)@next :- init.\n#tacho_go(#OUTC, 100)@next :- init.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl init/0()\ninit()@0.\n#_io_tacho_go(OUTB, 100)@next :- init().\n#_io_tacho_go(OUTC, 100)@next :- init().\n\n\n\nStrata:\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm1_state = 3;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        tacho_set_speed_sp (OUTB, 100);\n        tacho_run_forever (OUTB);\n      }\n      {\n        goto _fsm1_trans1;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        tacho_set_speed_sp (OUTB, 100);\n        tacho_run_forever (OUTB);\n      }\n      {\n        tacho_set_speed_sp (OUTC, 100);\n        tacho_run_forever (OUTC);\n      }\n      {\n        goto _fsm1_trans1;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n      _fsm1_trans3:\n        if (OUTB == OUTC)\n          {\n            _fsm1_state = 2;\n          }\n        else if (OUTB != OUTC)\n          {\n            _fsm1_state = 4;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, 100)@next :- init().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, 100)@next :- init().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/go.dl",
      "template": "arduino",
      "setting": "no FSM",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n\n.decl init\n\ninit@0.\n\n#tacho_go(#OUTB, 100)@next :- init.\n#tacho_go(#OUTC, 100)@next :- init.\n",
      "tsource": "/*\nProgram 1:\n.decl init/0()\ninit()@0.\n#_io_tacho_go(OUTB, 100)@next :- init().\n#_io_tacho_go(OUTC, 100)@next :- init().\n\n\n\nStrata:\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 2\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_tacho_go 1 + sizeof(uint8_t)+ sizeof(int)\n#define _size_init 1\nbyte _sizes[3] = { 0, _size__io_tacho_go, _size_init\n};\n\n#define _type__io_tacho_go 1\n#define _type_init 2\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline uint8_t\n_io_tacho_go_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\ninline int\n_io_tacho_go_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (uint8_t));\n}\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t_int (byte *buf, byte type, uint8_t a1, int a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  free = _write_data < int >(free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_tacho_go(buf, a1, a2) _write_fact_uint8_t_int(buf, _type__io_tacho_go, a1, a2)\n#define write_init(buf) _write_fact_(buf, _type_init)\n\n#define _io_tacho_go_ff(buf) _next__fact(buf,_type__io_tacho_go)\n\nbyte *\n_io_tacho_go_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_2 (buf) != a2)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_tacho_go_bf (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_1 (buf) != a1)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_tacho_go_bb (byte *buf, uint8_t a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_1 (buf) != a1 || _io_tacho_go_2 (buf) != a2)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define init_(buf) _next__fact(buf,_type_init)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: #_io_tacho_go(OUTB, 100)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_go_bb (_next_state, OUTB, 100)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTB, 100);\n          tacho_run_forever (OUTB);\n          write__io_tacho_go (_next_state, OUTB, 100);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: #_io_tacho_go(OUTC, 100)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_go_bb (_next_state, OUTC, 100)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTC, 100);\n          tacho_run_forever (OUTC);\n          write__io_tacho_go (_next_state, OUTC, 100);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_init (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, 100)@next :- init().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, 100)@next :- init().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 2</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_tacho_go 1 + sizeof(uint8_t)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_init 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">3</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_init</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_tacho_go 1</span>\n<span class=\"cp\">#define _type_init 2</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">uint8_t</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_uint8_t_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_tacho_go(buf, a1, a2) _write_fact_uint8_t_int(buf, _type__io_tacho_go, a1, a2)</span>\n<span class=\"cp\">#define write_init(buf) _write_fact_(buf, _type_init)</span>\n\n<span class=\"cp\">#define _io_tacho_go_ff(buf) _next__fact(buf,_type__io_tacho_go)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_tacho_go_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_tacho_go_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define init_(buf) _next__fact(buf,_type_init)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: #_io_tacho_go(OUTB, 100)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: #_io_tacho_go(OUTC, 100)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_init</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/go.dl",
      "template": "lego ev3",
      "setting": "normal",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n\n.decl init\n\ninit@0.\n\n#tacho_go(#OUTB, 100)@next :- init.\n#tacho_go(#OUTC, 100)@next :- init.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl init/0()\ninit()@0.\n#_io_tacho_go(OUTB, 100)@next :- init().\n#_io_tacho_go(OUTC, 100)@next :- init().\n\n\n\nStrata:\n*/\n#include \"brick.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm1_state = 3;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        tacho_set_speed_sp (OUTB, 100);\n        tacho_run_forever (OUTB);\n      }\n      {\n        goto _fsm1_trans1;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        tacho_set_speed_sp (OUTB, 100);\n        tacho_run_forever (OUTB);\n      }\n      {\n        tacho_set_speed_sp (OUTC, 100);\n        tacho_run_forever (OUTC);\n      }\n      {\n        goto _fsm1_trans1;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n      _fsm1_trans3:\n        if (OUTB == OUTC)\n          {\n            _fsm1_state = 2;\n          }\n        else if (OUTB != OUTC)\n          {\n            _fsm1_state = 4;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, 100)@next :- init().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, 100)@next :- init().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"n\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/go.dl",
      "template": "lego ev3",
      "setting": "no FSM",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n\n.decl init\n\ninit@0.\n\n#tacho_go(#OUTB, 100)@next :- init.\n#tacho_go(#OUTC, 100)@next :- init.\n",
      "tsource": "/*\nProgram 1:\n.decl init/0()\ninit()@0.\n#_io_tacho_go(OUTB, 100)@next :- init().\n#_io_tacho_go(OUTC, 100)@next :- init().\n\n\n\nStrata:\n*/\n#include \"brick.h\"\n\n#define _rulecount 2\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_tacho_go 1 + sizeof(uint8_t)+ sizeof(int)\n#define _size_init 1\nbyte _sizes[3] = { 0, _size__io_tacho_go, _size_init\n};\n\n#define _type__io_tacho_go 1\n#define _type_init 2\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline uint8_t\n_io_tacho_go_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\ninline int\n_io_tacho_go_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (uint8_t));\n}\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t_int (byte *buf, byte type, uint8_t a1, int a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  free = _write_data < int >(free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_tacho_go(buf, a1, a2) _write_fact_uint8_t_int(buf, _type__io_tacho_go, a1, a2)\n#define write_init(buf) _write_fact_(buf, _type_init)\n\n#define _io_tacho_go_ff(buf) _next__fact(buf,_type__io_tacho_go)\n\nbyte *\n_io_tacho_go_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_2 (buf) != a2)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_tacho_go_bf (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_1 (buf) != a1)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_tacho_go_bb (byte *buf, uint8_t a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_go)) != 0)\n    {\n      if (_io_tacho_go_1 (buf) != a1 || _io_tacho_go_2 (buf) != a2)\n        {\n          buf = buf + _size__io_tacho_go;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define init_(buf) _next__fact(buf,_type_init)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: #_io_tacho_go(OUTB, 100)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_go_bb (_next_state, OUTB, 100)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTB, 100);\n          tacho_run_forever (OUTB);\n          write__io_tacho_go (_next_state, OUTB, 100);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: #_io_tacho_go(OUTC, 100)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_go_bb (_next_state, OUTC, 100)) == 0)\n        {\n          // make io call\n          tacho_set_speed_sp (OUTC, 100);\n          tacho_run_forever (OUTC);\n          write__io_tacho_go (_next_state, OUTC, 100);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_init (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">#_io_tacho_go(OUTB, 100)@next :- init().</span>\n<span class=\"cm\">#_io_tacho_go(OUTC, 100)@next :- init().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 2</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_tacho_go 1 + sizeof(uint8_t)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_init 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">3</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_init</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_tacho_go 1</span>\n<span class=\"cp\">#define _type_init 2</span>\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">uint8_t</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_uint8_t_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_tacho_go(buf, a1, a2) _write_fact_uint8_t_int(buf, _type__io_tacho_go, a1, a2)</span>\n<span class=\"cp\">#define write_init(buf) _write_fact_(buf, _type_init)</span>\n\n<span class=\"cp\">#define _io_tacho_go_ff(buf) _next__fact(buf,_type__io_tacho_go)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_tacho_go_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_tacho_go_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_go</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_go_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_go</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define init_(buf) _next__fact(buf,_type_init)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: #_io_tacho_go(OUTB, 100)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: #_io_tacho_go(OUTC, 100)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_go_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_set_speed_sp</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_run_forever</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_go</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">100</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_init</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"nf\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/stop.dl",
      "template": "no runtime",
      "setting": "normal",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n\n.decl init\ninit@0.\n\n#tacho_stop(#OUTB)@next :- init.\n#tacho_stop(#OUTC)@next :- init.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl init/0()\ninit()@0.\n#_io_tacho_stop(OUTB)@next :- init().\n#_io_tacho_stop(OUTC)@next :- init().\n\n\n\nStrata:\n*/\n\n#define _rulecount 0\n#define _bufsize 256\n\nbyte _fsm1_state = 3;\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n/* SETUP */\n\n\n/* LOOP */\n\nif (_fsm1_state == 1)\n  {\n    {\n    _fsm1_trans1:\n      if (true)\n        {\n          _fsm1_state = 1;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 2)\n  {\n    {\n      tacho_stop (OUTB);\n    }\n    {\n      goto _fsm1_trans1;\n    }\n  }\nelse if (_fsm1_state == 4)\n  {\n    {\n      tacho_stop (OUTB);\n    }\n    {\n      tacho_stop (OUTC);\n    }\n    {\n      goto _fsm1_trans1;\n    }\n  }\nelse if (_fsm1_state == 3)\n  {\n    {\n    _fsm1_trans3:\n      if (OUTB == OUTC)\n        {\n          _fsm1_state = 2;\n        }\n      else if (OUTB != OUTC)\n        {\n          _fsm1_state = 4;\n        }\n      else;\n    }\n  }\nelse;\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">#_io_tacho_stop(OUTB)@next :- init().</span>\n<span class=\"cm\">#_io_tacho_stop(OUTC)@next :- init().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cm\">/* SETUP */</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/stop.dl",
      "template": "no runtime",
      "setting": "no FSM",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n\n.decl init\ninit@0.\n\n#tacho_stop(#OUTB)@next :- init.\n#tacho_stop(#OUTC)@next :- init.\n",
      "tsource": "/*\nProgram 1:\n.decl init/0()\ninit()@0.\n#_io_tacho_stop(OUTB)@next :- init().\n#_io_tacho_stop(OUTC)@next :- init().\n\n\n\nStrata:\n*/\n\n#define _rulecount 2\n#define _bufsize 256\n\n\n\n#define _size__io_tacho_stop 1 + sizeof(uint8_t)\n#define _size_init 1\nbyte _sizes[3] = { 0, _size__io_tacho_stop, _size_init\n};\n\n#define _type__io_tacho_stop 1\n#define _type_init 2\n\n\n\ninline uint8_t\n_io_tacho_stop_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t (byte *buf, byte type, uint8_t a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__io_tacho_stop(buf, a1) _write_fact_uint8_t(buf, _type__io_tacho_stop, a1)\n#define write_init(buf) _write_fact_(buf, _type_init)\n\n#define _io_tacho_stop_f(buf) _next__fact(buf,_type__io_tacho_stop)\n\nbyte *\n_io_tacho_stop_b (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_stop)) != 0)\n    {\n      if (_io_tacho_stop_1 (buf) != a1)\n        {\n          buf = buf + _size__io_tacho_stop;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define init_(buf) _next__fact(buf,_type_init)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: #_io_tacho_stop(OUTB)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_stop_b (_next_state, OUTB)) == 0)\n        {\n          // make io call\n          tacho_stop (OUTB);\n          write__io_tacho_stop (_next_state, OUTB);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: #_io_tacho_stop(OUTC)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_stop_b (_next_state, OUTC)) == 0)\n        {\n          // make io call\n          tacho_stop (OUTC);\n          write__io_tacho_stop (_next_state, OUTC);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n/* SETUP */\nwrite_init (_curr_state);\n_added_facts = true;\n\n\n/* LOOP */\n\n\n\n\n// inductive_phase\n_inductive_rule_1 ();\n_inductive_rule_2 ();\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">#_io_tacho_stop(OUTB)@next :- init().</span>\n<span class=\"cm\">#_io_tacho_stop(OUTC)@next :- init().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 2</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n\n\n<span class=\"cp\">#define _size__io_tacho_stop 1 + sizeof(uint8_t)</span>\n<span class=\"cp\">#define _size_init 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">3</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_stop</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_init</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_tacho_stop 1</span>\n<span class=\"cp\">#define _type_init 2</span>\n\n\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"nf\">_io_tacho_stop_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_uint8_t</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_tacho_stop(buf, a1) _write_fact_uint8_t(buf, _type__io_tacho_stop, a1)</span>\n<span class=\"cp\">#define write_init(buf) _write_fact_(buf, _type_init)</span>\n\n<span class=\"cp\">#define _io_tacho_stop_f(buf) _next__fact(buf,_type__io_tacho_stop)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_tacho_stop_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_stop</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_stop_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_stop</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define init_(buf) _next__fact(buf,_type_init)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: #_io_tacho_stop(OUTB)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_stop_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: #_io_tacho_stop(OUTC)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_stop_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cm\">/* SETUP */</span>\n<span class=\"n\">write_init</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n\n\n\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/stop.dl",
      "template": "arduino",
      "setting": "normal",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n\n.decl init\ninit@0.\n\n#tacho_stop(#OUTB)@next :- init.\n#tacho_stop(#OUTC)@next :- init.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl init/0()\ninit()@0.\n#_io_tacho_stop(OUTB)@next :- init().\n#_io_tacho_stop(OUTC)@next :- init().\n\n\n\nStrata:\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm1_state = 3;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        tacho_stop (OUTB);\n      }\n      {\n        goto _fsm1_trans1;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        tacho_stop (OUTB);\n      }\n      {\n        tacho_stop (OUTC);\n      }\n      {\n        goto _fsm1_trans1;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n      _fsm1_trans3:\n        if (OUTB == OUTC)\n          {\n            _fsm1_state = 2;\n          }\n        else if (OUTB != OUTC)\n          {\n            _fsm1_state = 4;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">#_io_tacho_stop(OUTB)@next :- init().</span>\n<span class=\"cm\">#_io_tacho_stop(OUTC)@next :- init().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/stop.dl",
      "template": "arduino",
      "setting": "no FSM",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n\n.decl init\ninit@0.\n\n#tacho_stop(#OUTB)@next :- init.\n#tacho_stop(#OUTC)@next :- init.\n",
      "tsource": "/*\nProgram 1:\n.decl init/0()\ninit()@0.\n#_io_tacho_stop(OUTB)@next :- init().\n#_io_tacho_stop(OUTC)@next :- init().\n\n\n\nStrata:\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 2\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_tacho_stop 1 + sizeof(uint8_t)\n#define _size_init 1\nbyte _sizes[3] = { 0, _size__io_tacho_stop, _size_init\n};\n\n#define _type__io_tacho_stop 1\n#define _type_init 2\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline uint8_t\n_io_tacho_stop_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t (byte *buf, byte type, uint8_t a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__io_tacho_stop(buf, a1) _write_fact_uint8_t(buf, _type__io_tacho_stop, a1)\n#define write_init(buf) _write_fact_(buf, _type_init)\n\n#define _io_tacho_stop_f(buf) _next__fact(buf,_type__io_tacho_stop)\n\nbyte *\n_io_tacho_stop_b (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_stop)) != 0)\n    {\n      if (_io_tacho_stop_1 (buf) != a1)\n        {\n          buf = buf + _size__io_tacho_stop;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define init_(buf) _next__fact(buf,_type_init)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: #_io_tacho_stop(OUTB)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_stop_b (_next_state, OUTB)) == 0)\n        {\n          // make io call\n          tacho_stop (OUTB);\n          write__io_tacho_stop (_next_state, OUTB);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: #_io_tacho_stop(OUTC)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_stop_b (_next_state, OUTC)) == 0)\n        {\n          // make io call\n          tacho_stop (OUTC);\n          write__io_tacho_stop (_next_state, OUTC);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_init (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">#_io_tacho_stop(OUTB)@next :- init().</span>\n<span class=\"cm\">#_io_tacho_stop(OUTC)@next :- init().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 2</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_tacho_stop 1 + sizeof(uint8_t)</span>\n<span class=\"cp\">#define _size_init 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">3</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_stop</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_init</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_tacho_stop 1</span>\n<span class=\"cp\">#define _type_init 2</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"n\">_io_tacho_stop_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_uint8_t</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_tacho_stop(buf, a1) _write_fact_uint8_t(buf, _type__io_tacho_stop, a1)</span>\n<span class=\"cp\">#define write_init(buf) _write_fact_(buf, _type_init)</span>\n\n<span class=\"cp\">#define _io_tacho_stop_f(buf) _next__fact(buf,_type__io_tacho_stop)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_tacho_stop_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_stop</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_stop_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_stop</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define init_(buf) _next__fact(buf,_type_init)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: #_io_tacho_stop(OUTB)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_stop_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: #_io_tacho_stop(OUTC)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_stop_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_init</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/stop.dl",
      "template": "lego ev3",
      "setting": "normal",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n\n.decl init\ninit@0.\n\n#tacho_stop(#OUTB)@next :- init.\n#tacho_stop(#OUTC)@next :- init.\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl init/0()\ninit()@0.\n#_io_tacho_stop(OUTB)@next :- init().\n#_io_tacho_stop(OUTC)@next :- init().\n\n\n\nStrata:\n*/\n#include \"brick.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm1_state = 3;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 1;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        tacho_stop (OUTB);\n      }\n      {\n        goto _fsm1_trans1;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        tacho_stop (OUTB);\n      }\n      {\n        tacho_stop (OUTC);\n      }\n      {\n        goto _fsm1_trans1;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n      _fsm1_trans3:\n        if (OUTB == OUTC)\n          {\n            _fsm1_state = 2;\n          }\n        else if (OUTB != OUTC)\n          {\n            _fsm1_state = 4;\n          }\n        else;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">#_io_tacho_stop(OUTB)@next :- init().</span>\n<span class=\"cm\">#_io_tacho_stop(OUTC)@next :- init().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans1</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans3</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"n\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "ev3/stop.dl",
      "template": "lego ev3",
      "setting": "no FSM",
      "osource": "%http://in4lio.github.io/ev3dev-c/group__brick.html\n#tacho_set_speed_sp(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); }\n#tacho_stop(Port: uint8_t) = { tacho_stop(#Port); }\n#tacho_run_forever(Port: uint8_t) = { tacho_run_forever(#Port); }\n#tacho_go(Port: uint8_t, Speed: int) = { tacho_set_speed_sp(#Port, #Speed); tacho_run_forever(#Port); }\n\n.decl init\ninit@0.\n\n#tacho_stop(#OUTB)@next :- init.\n#tacho_stop(#OUTC)@next :- init.\n",
      "tsource": "/*\nProgram 1:\n.decl init/0()\ninit()@0.\n#_io_tacho_stop(OUTB)@next :- init().\n#_io_tacho_stop(OUTC)@next :- init().\n\n\n\nStrata:\n*/\n#include \"brick.h\"\n\n#define _rulecount 2\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_tacho_stop 1 + sizeof(uint8_t)\n#define _size_init 1\nbyte _sizes[3] = { 0, _size__io_tacho_stop, _size_init\n};\n\n#define _type__io_tacho_stop 1\n#define _type_init 2\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline uint8_t\n_io_tacho_stop_1 (byte *buf)\n{\n  return _read_data < uint8_t > (buf + 1);\n}\n\n\nvoid\n_write_fact_ (byte *buf, byte type)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_uint8_t (byte *buf, byte type, uint8_t a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < uint8_t > (free, a1);\n  _advance_buff (buf, free);\n}\n\n#define write__io_tacho_stop(buf, a1) _write_fact_uint8_t(buf, _type__io_tacho_stop, a1)\n#define write_init(buf) _write_fact_(buf, _type_init)\n\n#define _io_tacho_stop_f(buf) _next__fact(buf,_type__io_tacho_stop)\n\nbyte *\n_io_tacho_stop_b (byte *buf, uint8_t a1)\n{\n  while ((buf = _next__fact (buf, _type__io_tacho_stop)) != 0)\n    {\n      if (_io_tacho_stop_1 (buf) != a1)\n        {\n          buf = buf + _size__io_tacho_stop;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define init_(buf) _next__fact(buf,_type_init)\n\n\n/*\nProgram Redux:\n\n*/\n\n// _inductive_rule_1: #_io_tacho_stop(OUTB)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_1 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_stop_b (_next_state, OUTB)) == 0)\n        {\n          // make io call\n          tacho_stop (OUTB);\n          write__io_tacho_stop (_next_state, OUTB);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n// _inductive_rule_2: #_io_tacho_stop(OUTC)=>_next_state :- E{init()}.\nvoid\n_inductive_rule_2 ()\n{\n  if (init_ (_curr_state) != 0)\n    {\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_tacho_stop_b (_next_state, OUTC)) == 0)\n        {\n          // make io call\n          tacho_stop (OUTC);\n          write__io_tacho_stop (_next_state, OUTC);\n        }\n      goto jmp0;\n    }\njmp0:;\n};\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n  write_init (_curr_state);\n  _added_facts = true;\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl init/0()</span>\n<span class=\"cm\">init()@0.</span>\n<span class=\"cm\">#_io_tacho_stop(OUTB)@next :- init().</span>\n<span class=\"cm\">#_io_tacho_stop(OUTC)@next :- init().</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 2</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_tacho_stop 1 + sizeof(uint8_t)</span>\n<span class=\"cp\">#define _size_init 1</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">3</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_stop</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_init</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_tacho_stop 1</span>\n<span class=\"cp\">#define _type_init 2</span>\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span>\n<span class=\"n\">_io_tacho_stop_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_uint8_t</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_tacho_stop(buf, a1) _write_fact_uint8_t(buf, _type__io_tacho_stop, a1)</span>\n<span class=\"cp\">#define write_init(buf) _write_fact_(buf, _type_init)</span>\n\n<span class=\"cp\">#define _io_tacho_stop_f(buf) _next__fact(buf,_type__io_tacho_stop)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_tacho_stop_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">uint8_t</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_tacho_stop</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_tacho_stop_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_tacho_stop</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define init_(buf) _next__fact(buf,_type_init)</span>\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _inductive_rule_1: #_io_tacho_stop(OUTB)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_stop_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTB</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: #_io_tacho_stop(OUTC)=&gt;_next_state :- E{init()}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">init_</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_tacho_stop_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"n\">tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_tacho_stop</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">OUTC</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp0</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp0</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n<span class=\"w\">  </span><span class=\"n\">write_init</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"nf\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "heating/chain10-one-end_compilable.dl",
      "template": "no runtime",
      "setting": "normal",
      "osource": "#readWindow(Room: atom, State: int) = { int State = digitalRead(#Room); }\n#readDoor(RoomA: atom, RoomB: atom, Doorstate: int) = { int Doorstate = digitalRead(#RoomA + #RoomB); }\n#heatingOff(Room: atom) = { digitalWrite(#Room, LOW);  }\n\n.decl hasWindow(atom)\n.decl adjacent(atom, atom)\n.decl connected(atom, atom)\n.decl windowOpen(atom)\n.decl doorOpen(atom, atom)\n\n% static example configuration\nhasWindow(1).\nadjacent(1, 2).\nadjacent(2, 3).\nadjacent(3, 4).\nadjacent(4, 5).\nadjacent(5, 6).\nadjacent(6, 7).\nadjacent(7, 8).\nadjacent(8, 9).\nadjacent(9, 10).\n% gathering world state\n#readWindow(R, ?)@next :- hasWindow(R).\n#readDoor(A, B, ?)@next :- adjacent(A, B).\n% deduce model using transitive closure\nwindowOpen(R) :- #readWindow(R, #HIGH).\ndoorOpen(A, B) :- #readDoor(A, B, #HIGH).\nconnected(A, B) :- doorOpen(A, B).\nconnected(B, A) :- doorOpen(A, B).\n%connected(A, C) :- connected(A, B), connected(B, C), A != C.\nconnected(A, C) :- connected(A, B), connected(B, C).\n% effects\n#heatingOff(R)@next :- windowOpen(R).\n#heatingOff(O)@next :- windowOpen(R), connected(R, O).\n",
      "tsource": "build TimeoutExpired",
      "highlighted": "build TimeoutExpired",
      "error": "build TimeoutExpired"
    },
    {
      "filename": "heating/chain10-one-end_compilable.dl",
      "template": "no runtime",
      "setting": "no FSM",
      "osource": "#readWindow(Room: atom, State: int) = { int State = digitalRead(#Room); }\n#readDoor(RoomA: atom, RoomB: atom, Doorstate: int) = { int Doorstate = digitalRead(#RoomA + #RoomB); }\n#heatingOff(Room: atom) = { digitalWrite(#Room, LOW);  }\n\n.decl hasWindow(atom)\n.decl adjacent(atom, atom)\n.decl connected(atom, atom)\n.decl windowOpen(atom)\n.decl doorOpen(atom, atom)\n\n% static example configuration\nhasWindow(1).\nadjacent(1, 2).\nadjacent(2, 3).\nadjacent(3, 4).\nadjacent(4, 5).\nadjacent(5, 6).\nadjacent(6, 7).\nadjacent(7, 8).\nadjacent(8, 9).\nadjacent(9, 10).\n% gathering world state\n#readWindow(R, ?)@next :- hasWindow(R).\n#readDoor(A, B, ?)@next :- adjacent(A, B).\n% deduce model using transitive closure\nwindowOpen(R) :- #readWindow(R, #HIGH).\ndoorOpen(A, B) :- #readDoor(A, B, #HIGH).\nconnected(A, B) :- doorOpen(A, B).\nconnected(B, A) :- doorOpen(A, B).\n%connected(A, C) :- connected(A, B), connected(B, C), A != C.\nconnected(A, C) :- connected(A, B), connected(B, C).\n% effects\n#heatingOff(R)@next :- windowOpen(R).\n#heatingOff(O)@next :- windowOpen(R), connected(R, O).\n",
      "tsource": "/*\nProgram 1:\n.decl adjacent/2(byte, byte)\n.decl connected/2(byte, byte)\n.decl doorOpen/2(byte, byte)\n.decl hasWindow/1(byte)\n.decl windowOpen/1(byte)\nadjacent(1, 2) :- .\nadjacent(2, 3) :- .\nadjacent(3, 4) :- .\nadjacent(4, 5) :- .\nadjacent(5, 6) :- .\nadjacent(6, 7) :- .\nadjacent(7, 8) :- .\nadjacent(8, 9) :- .\nadjacent(9, 10) :- .\nconnected(A, B) :- doorOpen(A, B).\nconnected(A, C) :- connected(A, B), connected(B, C).\nconnected(B, A) :- doorOpen(A, B).\ndoorOpen(A, B) :- _io_readDoor(A, B, HIGH).\nhasWindow(1) :- .\nwindowOpen(R) :- _io_readWindow(R, HIGH).\n#_io_heatingOff(O)@next :- connected(R, O), windowOpen(R).\n#_io_heatingOff(R)@next :- windowOpen(R).\n#_io_readDoor(A, B, _)@next :- adjacent(A, B).\n#_io_readWindow(R, _)@next :- hasWindow(R).\n\n\n\nStrata:\n1: fromList [\"_io_readDoor\"]\n2: fromList [\"_io_readWindow\"]\n3: fromList [\"adjacent\"]\n4: fromList [\"doorOpen\"]\n5: fromList [\"connected\"]\n6: fromList [\"hasWindow\"]\n7: fromList [\"windowOpen\"]\n*/\n\n#define _rulecount 4\n#define _bufsize 256\n\n\n\n#define _size__io_heatingOff 1 + sizeof(atom)\n#define _size__io_readDoor 1 + sizeof(atom)+ sizeof(atom)+ sizeof(int)\n#define _size__io_readWindow 1 + sizeof(atom)+ sizeof(int)\n#define _size_adjacent 1 + sizeof(byte)+ sizeof(byte)\n#define _size_connected 1 + sizeof(byte)+ sizeof(byte)\n#define _size_doorOpen 1 + sizeof(byte)+ sizeof(byte)\n#define _size_hasWindow 1 + sizeof(byte)\n#define _size_windowOpen 1 + sizeof(byte)\nbyte _sizes[9] =\n  { 0, _size__io_heatingOff, _size__io_readDoor, _size__io_readWindow,\n_size_adjacent, _size_connected, _size_doorOpen, _size_hasWindow, _size_windowOpen\n};\n\n#define _type__io_heatingOff 1\n#define _type__io_readDoor 2\n#define _type__io_readWindow 3\n#define _type_adjacent 4\n#define _type_connected 5\n#define _type_doorOpen 6\n#define _type_hasWindow 7\n#define _type_windowOpen 8\n\n\n\ninline atom\n_io_heatingOff_1 (byte *buf)\n{\n  return _read_data < atom > (buf + 1);\n}\n\ninline atom\n_io_readDoor_1 (byte *buf)\n{\n  return _read_data < atom > (buf + 1);\n}\n\ninline atom\n_io_readDoor_2 (byte *buf)\n{\n  return _read_data < atom > (buf + 1 + sizeof (atom));\n}\n\ninline int\n_io_readDoor_3 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (atom) + sizeof (atom));\n}\n\ninline atom\n_io_readWindow_1 (byte *buf)\n{\n  return _read_data < atom > (buf + 1);\n}\n\ninline int\n_io_readWindow_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (atom));\n}\n\ninline byte\nadjacent_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\nadjacent_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\nconnected_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\nconnected_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\ndoorOpen_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\ndoorOpen_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\nhasWindow_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\nwindowOpen_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\nvoid\n_write_fact_atom (byte *buf, byte type, atom a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < atom > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_atom_atom_int (byte *buf, byte type, atom a1, atom a2, int a3)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < atom > (free, a1);\n  free = _write_data < atom > (free, a2);\n  free = _write_data < int >(free, a3);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_atom_int (byte *buf, byte type, atom a1, int a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < atom > (free, a1);\n  free = _write_data < int >(free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_heatingOff(buf, a1) _write_fact_atom(buf, _type__io_heatingOff, a1)\n#define write__io_readDoor(buf, a1, a2, a3) _write_fact_atom_atom_int(buf, _type__io_readDoor, a1, a2, a3)\n#define write__io_readWindow(buf, a1, a2) _write_fact_atom_int(buf, _type__io_readWindow, a1, a2)\n#define write_adjacent(buf, a1, a2) _write_fact_byte_byte(buf, _type_adjacent, a1, a2)\n#define write_connected(buf, a1, a2) _write_fact_byte_byte(buf, _type_connected, a1, a2)\n#define write_doorOpen(buf, a1, a2) _write_fact_byte_byte(buf, _type_doorOpen, a1, a2)\n#define write_hasWindow(buf, a1) _write_fact_byte(buf, _type_hasWindow, a1)\n#define write_windowOpen(buf, a1) _write_fact_byte(buf, _type_windowOpen, a1)\n\n#define _io_heatingOff_f(buf) _next__fact(buf,_type__io_heatingOff)\n\nbyte *\n_io_heatingOff_b (byte *buf, atom a1)\n{\n  while ((buf = _next__fact (buf, _type__io_heatingOff)) != 0)\n    {\n      if (_io_heatingOff_1 (buf) != a1)\n        {\n          buf = buf + _size__io_heatingOff;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_readDoor_fff(buf) _next__fact(buf,_type__io_readDoor)\n\nbyte *\n_io_readDoor_ffb (byte *buf, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_fbf (byte *buf, atom a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_fbb (byte *buf, atom a2, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_2 (buf) != a2 || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bff (byte *buf, atom a1)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bfb (byte *buf, atom a1, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bbf (byte *buf, atom a1, atom a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bbb (byte *buf, atom a1, atom a2, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_2 (buf) != a2\n          || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_readWindow_ff(buf) _next__fact(buf,_type__io_readWindow)\n\nbyte *\n_io_readWindow_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readWindow_bf (byte *buf, atom a1)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_1 (buf) != a1)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readWindow_bb (byte *buf, atom a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_1 (buf) != a1 || _io_readWindow_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define adjacent_ff(buf) _next__fact(buf,_type_adjacent)\n\nbyte *\nadjacent_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_2 (buf) != a2)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nadjacent_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_1 (buf) != a1)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nadjacent_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_1 (buf) != a1 || adjacent_2 (buf) != a2)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define connected_ff(buf) _next__fact(buf,_type_connected)\n\nbyte *\nconnected_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_2 (buf) != a2)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nconnected_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_1 (buf) != a1)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nconnected_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_1 (buf) != a1 || connected_2 (buf) != a2)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define doorOpen_ff(buf) _next__fact(buf,_type_doorOpen)\n\nbyte *\ndoorOpen_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_2 (buf) != a2)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\ndoorOpen_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_1 (buf) != a1)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\ndoorOpen_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_1 (buf) != a1 || doorOpen_2 (buf) != a2)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define hasWindow_f(buf) _next__fact(buf,_type_hasWindow)\n\nbyte *\nhasWindow_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_hasWindow)) != 0)\n    {\n      if (hasWindow_1 (buf) != a1)\n        {\n          buf = buf + _size_hasWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define windowOpen_f(buf) _next__fact(buf,_type_windowOpen)\n\nbyte *\nwindowOpen_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_windowOpen)) != 0)\n    {\n      if (windowOpen_1 (buf) != a1)\n        {\n          buf = buf + _size_windowOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: adjacent(1, 2)=>_curr_state :- .\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 1, 2) == 0)\n    {\n      write_adjacent (_curr_state, 1, 2);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_2: adjacent(2, 3)=>_curr_state :- .\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 2, 3) == 0)\n    {\n      write_adjacent (_curr_state, 2, 3);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_3: adjacent(3, 4)=>_curr_state :- .\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 3, 4) == 0)\n    {\n      write_adjacent (_curr_state, 3, 4);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_4: adjacent(4, 5)=>_curr_state :- .\nbool\n_deductive_rule_4 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 4, 5) == 0)\n    {\n      write_adjacent (_curr_state, 4, 5);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_5: adjacent(5, 6)=>_curr_state :- .\nbool\n_deductive_rule_5 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 5, 6) == 0)\n    {\n      write_adjacent (_curr_state, 5, 6);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_6: adjacent(6, 7)=>_curr_state :- .\nbool\n_deductive_rule_6 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 6, 7) == 0)\n    {\n      write_adjacent (_curr_state, 6, 7);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_7: adjacent(7, 8)=>_curr_state :- .\nbool\n_deductive_rule_7 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 7, 8) == 0)\n    {\n      write_adjacent (_curr_state, 7, 8);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_8: adjacent(8, 9)=>_curr_state :- .\nbool\n_deductive_rule_8 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 8, 9) == 0)\n    {\n      write_adjacent (_curr_state, 8, 9);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_9: adjacent(9, 10)=>_curr_state :- .\nbool\n_deductive_rule_9 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 9, 10) == 0)\n    {\n      write_adjacent (_curr_state, 9, 10);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_10: connected(A, B)=>_curr_state :- U{doorOpen(A, B)}.\nbool\n_deductive_rule_10 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = doorOpen_ff (_tuple1)) != 0)\n    {\n      byte A = doorOpen_1 (_tuple1);\n      byte B = doorOpen_2 (_tuple1);\n      if (connected_ff (_curr_state, A, B) == 0)\n        {\n          write_connected (_curr_state, A, B);\n          _added_facts = true;\n        }\n      _tuple1 += _size_doorOpen;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_11: connected(A, C)=>_curr_state :- U{} E{connected(A, B) connected(B, C)}.\nbool\n_deductive_rule_11 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = connected_ff (_tuple1)) != 0)\n    {\n      byte A = connected_1 (_tuple1);\n      byte B = connected_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = connected_ff (_tuple2)) != 0)\n        {\n          byte B = connected_1 (_tuple2);\n          byte C = connected_2 (_tuple2);\n          if (connected_ff (_curr_state, A, C) == 0)\n            {\n              write_connected (_curr_state, A, C);\n              _added_facts = true;\n            }\n          goto jmp1;\n          _tuple2 += _size_connected;\n        }\n      _tuple1 += _size_connected;\n    }\njmp1:;\n  return _added_facts;\n};\n\n// _deductive_rule_12: connected(B, A)=>_curr_state :- U{doorOpen(A, B)}.\nbool\n_deductive_rule_12 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = doorOpen_ff (_tuple1)) != 0)\n    {\n      byte A = doorOpen_1 (_tuple1);\n      byte B = doorOpen_2 (_tuple1);\n      if (connected_ff (_curr_state, B, A) == 0)\n        {\n          write_connected (_curr_state, B, A);\n          _added_facts = true;\n        }\n      _tuple1 += _size_doorOpen;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_13: doorOpen(A, B)=>_curr_state :- U{_io_readDoor(A, B, HIGH)}.\nbool\n_deductive_rule_13 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_readDoor_ffb (_tuple1, HIGH)) != 0)\n    {\n      atom A = _io_readDoor_1 (_tuple1);\n      atom B = _io_readDoor_2 (_tuple1);\n      if (doorOpen_ff (_curr_state, A, B) == 0)\n        {\n          write_doorOpen (_curr_state, A, B);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_readDoor;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_14: hasWindow(1)=>_curr_state :- .\nbool\n_deductive_rule_14 ()\n{\n  bool _added_facts = false;\n  if (hasWindow_b (_curr_state, 1) == 0)\n    {\n      write_hasWindow (_curr_state, 1);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_15: windowOpen(R)=>_curr_state :- U{_io_readWindow(R, HIGH)}.\nbool\n_deductive_rule_15 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_readWindow_fb (_tuple1, HIGH)) != 0)\n    {\n      atom R = _io_readWindow_1 (_tuple1);\n      if (windowOpen_f (_curr_state, R) == 0)\n        {\n          write_windowOpen (_curr_state, R);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_readWindow;\n    }\n  return _added_facts;\n};\n\n// _inductive_rule_1: #_io_heatingOff(O)=>_next_state :- U{} E{connected(R, O) windowOpen(R)}.\nvoid\n_inductive_rule_1 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = connected_ff (_tuple1)) != 0)\n    {\n      byte R = connected_1 (_tuple1);\n      byte O = connected_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = windowOpen_f (_tuple2)) != 0)\n        {\n          byte R = windowOpen_1 (_tuple2);\n          byte *_tuple3 = _next_state;\n          if ((_tuple3 = _io_heatingOff_b (_next_state, O)) == 0)\n            {\n              // make io call\n              digitalWrite (O, LOW);\n              write__io_heatingOff (_next_state, O);\n            }\n          goto jmp1;\n          _tuple2 += _size_windowOpen;\n        }\n      _tuple1 += _size_connected;\n    }\njmp1:;\n};\n\n// _inductive_rule_2: #_io_heatingOff(R)=>_next_state :- U{windowOpen(R)}.\nvoid\n_inductive_rule_2 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = windowOpen_f (_tuple1)) != 0)\n    {\n      byte R = windowOpen_1 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_heatingOff_b (_next_state, R)) == 0)\n        {\n          // make io call\n          digitalWrite (R, LOW);\n          write__io_heatingOff (_next_state, R);\n        }\n      _tuple1 += _size_windowOpen;\n    }\n};\n\n// _inductive_rule_3: #_io_readDoor(A, B, _)=>_next_state :- U{adjacent(A, B)}.\nvoid\n_inductive_rule_3 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = adjacent_ff (_tuple1)) != 0)\n    {\n      byte A = adjacent_1 (_tuple1);\n      byte B = adjacent_2 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_readDoor_bbf (_next_state, A, B)) == 0)\n        {\n          // make io call\n          int Doorstate = digitalRead (A + B);\n          write__io_readDoor (_next_state, A, B, Doorstate);\n        }\n      _tuple1 += _size_adjacent;\n}};\n\n// _inductive_rule_4: #_io_readWindow(R, _)=>_next_state :- U{hasWindow(R)}.\nvoid\n_inductive_rule_4 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = hasWindow_f (_tuple1)) != 0)\n    {\n      byte R = hasWindow_1 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_readWindow_bf (_next_state, R)) == 0)\n        {\n          // make io call\n          int State = digitalRead (R);\n          write__io_readWindow (_next_state, R, State);\n        }\n      _tuple1 += _size_hasWindow;\n}};\n\n/* SETUP */\n\n\n/* LOOP */\n\n\n\n// deductive phase\n\n\n// stratum 3\n_deductive_rule_1 ();\n_deductive_rule_2 ();\n_deductive_rule_3 ();\n_deductive_rule_4 ();\n_deductive_rule_5 ();\n_deductive_rule_6 ();\n_deductive_rule_7 ();\n_deductive_rule_8 ();\n_deductive_rule_9 ();\n// stratum 4\n_deductive_rule_13 ();\ndo\n  {                             // stratum 5\n    _added_facts = false;\n    _added_facts |= _deductive_rule_10 ();\n    _added_facts |= _deductive_rule_11 ();\n    _added_facts |= _deductive_rule_12 ();\n  }\nwhile (_added_facts);\n// stratum 6\n_deductive_rule_14 ();\n// stratum 7\n_deductive_rule_15 ();\n// inductive_phase\n_inductive_rule_1 ();\n_inductive_rule_2 ();\n_inductive_rule_3 ();\n_inductive_rule_4 ();\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl adjacent/2(byte, byte)</span>\n<span class=\"cm\">.decl connected/2(byte, byte)</span>\n<span class=\"cm\">.decl doorOpen/2(byte, byte)</span>\n<span class=\"cm\">.decl hasWindow/1(byte)</span>\n<span class=\"cm\">.decl windowOpen/1(byte)</span>\n<span class=\"cm\">adjacent(1, 2) :- .</span>\n<span class=\"cm\">adjacent(2, 3) :- .</span>\n<span class=\"cm\">adjacent(3, 4) :- .</span>\n<span class=\"cm\">adjacent(4, 5) :- .</span>\n<span class=\"cm\">adjacent(5, 6) :- .</span>\n<span class=\"cm\">adjacent(6, 7) :- .</span>\n<span class=\"cm\">adjacent(7, 8) :- .</span>\n<span class=\"cm\">adjacent(8, 9) :- .</span>\n<span class=\"cm\">adjacent(9, 10) :- .</span>\n<span class=\"cm\">connected(A, B) :- doorOpen(A, B).</span>\n<span class=\"cm\">connected(A, C) :- connected(A, B), connected(B, C).</span>\n<span class=\"cm\">connected(B, A) :- doorOpen(A, B).</span>\n<span class=\"cm\">doorOpen(A, B) :- _io_readDoor(A, B, HIGH).</span>\n<span class=\"cm\">hasWindow(1) :- .</span>\n<span class=\"cm\">windowOpen(R) :- _io_readWindow(R, HIGH).</span>\n<span class=\"cm\">#_io_heatingOff(O)@next :- connected(R, O), windowOpen(R).</span>\n<span class=\"cm\">#_io_heatingOff(R)@next :- windowOpen(R).</span>\n<span class=\"cm\">#_io_readDoor(A, B, _)@next :- adjacent(A, B).</span>\n<span class=\"cm\">#_io_readWindow(R, _)@next :- hasWindow(R).</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_readDoor&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_io_readWindow&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;adjacent&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;doorOpen&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;connected&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;hasWindow&quot;]</span>\n<span class=\"cm\">7: fromList [&quot;windowOpen&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n\n\n<span class=\"cp\">#define _size__io_heatingOff 1 + sizeof(atom)</span>\n<span class=\"cp\">#define _size__io_readDoor 1 + sizeof(atom)+ sizeof(atom)+ sizeof(int)</span>\n<span class=\"cp\">#define _size__io_readWindow 1 + sizeof(atom)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_adjacent 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size_connected 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size_doorOpen 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size_hasWindow 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_windowOpen 1 + sizeof(byte)</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">9</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_heatingOff</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">,</span>\n<span class=\"n\">_size_adjacent</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_hasWindow</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_heatingOff 1</span>\n<span class=\"cp\">#define _type__io_readDoor 2</span>\n<span class=\"cp\">#define _type__io_readWindow 3</span>\n<span class=\"cp\">#define _type_adjacent 4</span>\n<span class=\"cp\">#define _type_connected 5</span>\n<span class=\"cp\">#define _type_doorOpen 6</span>\n<span class=\"cp\">#define _type_hasWindow 7</span>\n<span class=\"cp\">#define _type_windowOpen 8</span>\n\n\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"n\">atom</span>\n<span class=\"nf\">_io_heatingOff_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"n\">atom</span>\n<span class=\"nf\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"n\">atom</span>\n<span class=\"nf\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">atom</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">atom</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">atom</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"n\">atom</span>\n<span class=\"nf\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">_io_readWindow_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">atom</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">hasWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"nf\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_atom</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_atom_atom_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_atom_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_heatingOff(buf, a1) _write_fact_atom(buf, _type__io_heatingOff, a1)</span>\n<span class=\"cp\">#define write__io_readDoor(buf, a1, a2, a3) _write_fact_atom_atom_int(buf, _type__io_readDoor, a1, a2, a3)</span>\n<span class=\"cp\">#define write__io_readWindow(buf, a1, a2) _write_fact_atom_int(buf, _type__io_readWindow, a1, a2)</span>\n<span class=\"cp\">#define write_adjacent(buf, a1, a2) _write_fact_byte_byte(buf, _type_adjacent, a1, a2)</span>\n<span class=\"cp\">#define write_connected(buf, a1, a2) _write_fact_byte_byte(buf, _type_connected, a1, a2)</span>\n<span class=\"cp\">#define write_doorOpen(buf, a1, a2) _write_fact_byte_byte(buf, _type_doorOpen, a1, a2)</span>\n<span class=\"cp\">#define write_hasWindow(buf, a1) _write_fact_byte(buf, _type_hasWindow, a1)</span>\n<span class=\"cp\">#define write_windowOpen(buf, a1) _write_fact_byte(buf, _type_windowOpen, a1)</span>\n\n<span class=\"cp\">#define _io_heatingOff_f(buf) _next__fact(buf,_type__io_heatingOff)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_heatingOff_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_heatingOff</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_heatingOff_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_heatingOff</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_readDoor_fff(buf) _next__fact(buf,_type__io_readDoor)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readDoor_ffb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readDoor_fbf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readDoor_fbb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readDoor_bff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readDoor_bfb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readDoor_bbf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readDoor_bbb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span>\n<span class=\"w\">          </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_readWindow_ff(buf) _next__fact(buf,_type__io_readWindow)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readWindow_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readWindow_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readWindow_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readWindow_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define adjacent_ff(buf) _next__fact(buf,_type_adjacent)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">adjacent_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_adjacent</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">adjacent_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_adjacent</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_adjacent</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define connected_ff(buf) _next__fact(buf,_type_connected)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">connected_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_connected</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">connected_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_connected</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">connected_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_connected</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define doorOpen_ff(buf) _next__fact(buf,_type_doorOpen)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">doorOpen_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_doorOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">doorOpen_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_doorOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">doorOpen_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_doorOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define hasWindow_f(buf) _next__fact(buf,_type_hasWindow)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">hasWindow_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_hasWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hasWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_hasWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define windowOpen_f(buf) _next__fact(buf,_type_windowOpen)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">windowOpen_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_windowOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: adjacent(1, 2)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: adjacent(2, 3)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: adjacent(3, 4)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_4: adjacent(4, 5)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_5: adjacent(5, 6)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_6: adjacent(6, 7)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_7: adjacent(7, 8)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_8: adjacent(8, 9)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_9: adjacent(9, 10)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_10: connected(A, B)=&gt;_curr_state :- U{doorOpen(A, B)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_10</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_connected</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_11: connected(A, C)=&gt;_curr_state :- U{} E{connected(A, B) connected(B, C)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_11</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">C</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">C</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_connected</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">C</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_12: connected(B, A)=&gt;_curr_state :- U{doorOpen(A, B)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_12</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_connected</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_13: doorOpen(A, B)=&gt;_curr_state :- U{_io_readDoor(A, B, HIGH)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_13</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_ffb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_doorOpen</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_14: hasWindow(1)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_14</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hasWindow_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_hasWindow</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_15: windowOpen(R)=&gt;_curr_state :- U{_io_readWindow(R, HIGH)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_15</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">windowOpen_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_windowOpen</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: #_io_heatingOff(O)=&gt;_next_state :- U{} E{connected(R, O) windowOpen(R)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">O</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_heatingOff_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">O</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">              </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">O</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">write__io_heatingOff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">O</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: #_io_heatingOff(R)=&gt;_next_state :- U{windowOpen(R)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_heatingOff_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">R</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_heatingOff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_readDoor(A, B, _)=&gt;_next_state :- U{adjacent(A, B)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">adjacent_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_bbf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_readDoor</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"p\">}};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_readWindow(R, _)=&gt;_next_state :- U{hasWindow(R)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">hasWindow_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">hasWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">R</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_readWindow</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_hasWindow</span><span class=\"p\">;</span>\n<span class=\"p\">}};</span>\n\n<span class=\"cm\">/* SETUP */</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n\n\n<span class=\"c1\">// deductive phase</span>\n\n\n<span class=\"c1\">// stratum 3</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_deductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_deductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_deductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_deductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 4</span>\n<span class=\"n\">_deductive_rule_13</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"k\">do</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\">                             </span><span class=\"c1\">// stratum 5</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_10</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_11</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_12</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_added_facts</span><span class=\"p\">);</span>\n<span class=\"c1\">// stratum 6</span>\n<span class=\"n\">_deductive_rule_14</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 7</span>\n<span class=\"n\">_deductive_rule_15</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "heating/chain10-one-end_compilable.dl",
      "template": "arduino",
      "setting": "normal",
      "osource": "#readWindow(Room: atom, State: int) = { int State = digitalRead(#Room); }\n#readDoor(RoomA: atom, RoomB: atom, Doorstate: int) = { int Doorstate = digitalRead(#RoomA + #RoomB); }\n#heatingOff(Room: atom) = { digitalWrite(#Room, LOW);  }\n\n.decl hasWindow(atom)\n.decl adjacent(atom, atom)\n.decl connected(atom, atom)\n.decl windowOpen(atom)\n.decl doorOpen(atom, atom)\n\n% static example configuration\nhasWindow(1).\nadjacent(1, 2).\nadjacent(2, 3).\nadjacent(3, 4).\nadjacent(4, 5).\nadjacent(5, 6).\nadjacent(6, 7).\nadjacent(7, 8).\nadjacent(8, 9).\nadjacent(9, 10).\n% gathering world state\n#readWindow(R, ?)@next :- hasWindow(R).\n#readDoor(A, B, ?)@next :- adjacent(A, B).\n% deduce model using transitive closure\nwindowOpen(R) :- #readWindow(R, #HIGH).\ndoorOpen(A, B) :- #readDoor(A, B, #HIGH).\nconnected(A, B) :- doorOpen(A, B).\nconnected(B, A) :- doorOpen(A, B).\n%connected(A, C) :- connected(A, B), connected(B, C), A != C.\nconnected(A, C) :- connected(A, B), connected(B, C).\n% effects\n#heatingOff(R)@next :- windowOpen(R).\n#heatingOff(O)@next :- windowOpen(R), connected(R, O).\n",
      "tsource": "build TimeoutExpired",
      "highlighted": "build TimeoutExpired",
      "error": "build TimeoutExpired"
    },
    {
      "filename": "heating/chain10-one-end_compilable.dl",
      "template": "arduino",
      "setting": "no FSM",
      "osource": "#readWindow(Room: atom, State: int) = { int State = digitalRead(#Room); }\n#readDoor(RoomA: atom, RoomB: atom, Doorstate: int) = { int Doorstate = digitalRead(#RoomA + #RoomB); }\n#heatingOff(Room: atom) = { digitalWrite(#Room, LOW);  }\n\n.decl hasWindow(atom)\n.decl adjacent(atom, atom)\n.decl connected(atom, atom)\n.decl windowOpen(atom)\n.decl doorOpen(atom, atom)\n\n% static example configuration\nhasWindow(1).\nadjacent(1, 2).\nadjacent(2, 3).\nadjacent(3, 4).\nadjacent(4, 5).\nadjacent(5, 6).\nadjacent(6, 7).\nadjacent(7, 8).\nadjacent(8, 9).\nadjacent(9, 10).\n% gathering world state\n#readWindow(R, ?)@next :- hasWindow(R).\n#readDoor(A, B, ?)@next :- adjacent(A, B).\n% deduce model using transitive closure\nwindowOpen(R) :- #readWindow(R, #HIGH).\ndoorOpen(A, B) :- #readDoor(A, B, #HIGH).\nconnected(A, B) :- doorOpen(A, B).\nconnected(B, A) :- doorOpen(A, B).\n%connected(A, C) :- connected(A, B), connected(B, C), A != C.\nconnected(A, C) :- connected(A, B), connected(B, C).\n% effects\n#heatingOff(R)@next :- windowOpen(R).\n#heatingOff(O)@next :- windowOpen(R), connected(R, O).\n",
      "tsource": "/*\nProgram 1:\n.decl adjacent/2(byte, byte)\n.decl connected/2(byte, byte)\n.decl doorOpen/2(byte, byte)\n.decl hasWindow/1(byte)\n.decl windowOpen/1(byte)\nadjacent(1, 2) :- .\nadjacent(2, 3) :- .\nadjacent(3, 4) :- .\nadjacent(4, 5) :- .\nadjacent(5, 6) :- .\nadjacent(6, 7) :- .\nadjacent(7, 8) :- .\nadjacent(8, 9) :- .\nadjacent(9, 10) :- .\nconnected(A, B) :- doorOpen(A, B).\nconnected(A, C) :- connected(A, B), connected(B, C).\nconnected(B, A) :- doorOpen(A, B).\ndoorOpen(A, B) :- _io_readDoor(A, B, HIGH).\nhasWindow(1) :- .\nwindowOpen(R) :- _io_readWindow(R, HIGH).\n#_io_heatingOff(O)@next :- connected(R, O), windowOpen(R).\n#_io_heatingOff(R)@next :- windowOpen(R).\n#_io_readDoor(A, B, _)@next :- adjacent(A, B).\n#_io_readWindow(R, _)@next :- hasWindow(R).\n\n\n\nStrata:\n1: fromList [\"_io_readDoor\"]\n2: fromList [\"_io_readWindow\"]\n3: fromList [\"adjacent\"]\n4: fromList [\"doorOpen\"]\n5: fromList [\"connected\"]\n6: fromList [\"hasWindow\"]\n7: fromList [\"windowOpen\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 4\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_heatingOff 1 + sizeof(atom)\n#define _size__io_readDoor 1 + sizeof(atom)+ sizeof(atom)+ sizeof(int)\n#define _size__io_readWindow 1 + sizeof(atom)+ sizeof(int)\n#define _size_adjacent 1 + sizeof(byte)+ sizeof(byte)\n#define _size_connected 1 + sizeof(byte)+ sizeof(byte)\n#define _size_doorOpen 1 + sizeof(byte)+ sizeof(byte)\n#define _size_hasWindow 1 + sizeof(byte)\n#define _size_windowOpen 1 + sizeof(byte)\nbyte _sizes[9] =\n  { 0, _size__io_heatingOff, _size__io_readDoor, _size__io_readWindow,\n_size_adjacent, _size_connected, _size_doorOpen, _size_hasWindow, _size_windowOpen\n};\n\n#define _type__io_heatingOff 1\n#define _type__io_readDoor 2\n#define _type__io_readWindow 3\n#define _type_adjacent 4\n#define _type_connected 5\n#define _type_doorOpen 6\n#define _type_hasWindow 7\n#define _type_windowOpen 8\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline atom\n_io_heatingOff_1 (byte *buf)\n{\n  return _read_data < atom > (buf + 1);\n}\n\ninline atom\n_io_readDoor_1 (byte *buf)\n{\n  return _read_data < atom > (buf + 1);\n}\n\ninline atom\n_io_readDoor_2 (byte *buf)\n{\n  return _read_data < atom > (buf + 1 + sizeof (atom));\n}\n\ninline int\n_io_readDoor_3 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (atom) + sizeof (atom));\n}\n\ninline atom\n_io_readWindow_1 (byte *buf)\n{\n  return _read_data < atom > (buf + 1);\n}\n\ninline int\n_io_readWindow_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (atom));\n}\n\ninline byte\nadjacent_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\nadjacent_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\nconnected_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\nconnected_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\ndoorOpen_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\ndoorOpen_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\nhasWindow_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\nwindowOpen_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\nvoid\n_write_fact_atom (byte *buf, byte type, atom a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < atom > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_atom_atom_int (byte *buf, byte type, atom a1, atom a2, int a3)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < atom > (free, a1);\n  free = _write_data < atom > (free, a2);\n  free = _write_data < int >(free, a3);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_atom_int (byte *buf, byte type, atom a1, int a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < atom > (free, a1);\n  free = _write_data < int >(free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_heatingOff(buf, a1) _write_fact_atom(buf, _type__io_heatingOff, a1)\n#define write__io_readDoor(buf, a1, a2, a3) _write_fact_atom_atom_int(buf, _type__io_readDoor, a1, a2, a3)\n#define write__io_readWindow(buf, a1, a2) _write_fact_atom_int(buf, _type__io_readWindow, a1, a2)\n#define write_adjacent(buf, a1, a2) _write_fact_byte_byte(buf, _type_adjacent, a1, a2)\n#define write_connected(buf, a1, a2) _write_fact_byte_byte(buf, _type_connected, a1, a2)\n#define write_doorOpen(buf, a1, a2) _write_fact_byte_byte(buf, _type_doorOpen, a1, a2)\n#define write_hasWindow(buf, a1) _write_fact_byte(buf, _type_hasWindow, a1)\n#define write_windowOpen(buf, a1) _write_fact_byte(buf, _type_windowOpen, a1)\n\n#define _io_heatingOff_f(buf) _next__fact(buf,_type__io_heatingOff)\n\nbyte *\n_io_heatingOff_b (byte *buf, atom a1)\n{\n  while ((buf = _next__fact (buf, _type__io_heatingOff)) != 0)\n    {\n      if (_io_heatingOff_1 (buf) != a1)\n        {\n          buf = buf + _size__io_heatingOff;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_readDoor_fff(buf) _next__fact(buf,_type__io_readDoor)\n\nbyte *\n_io_readDoor_ffb (byte *buf, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_fbf (byte *buf, atom a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_fbb (byte *buf, atom a2, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_2 (buf) != a2 || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bff (byte *buf, atom a1)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bfb (byte *buf, atom a1, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bbf (byte *buf, atom a1, atom a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bbb (byte *buf, atom a1, atom a2, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_2 (buf) != a2\n          || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_readWindow_ff(buf) _next__fact(buf,_type__io_readWindow)\n\nbyte *\n_io_readWindow_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readWindow_bf (byte *buf, atom a1)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_1 (buf) != a1)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readWindow_bb (byte *buf, atom a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_1 (buf) != a1 || _io_readWindow_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define adjacent_ff(buf) _next__fact(buf,_type_adjacent)\n\nbyte *\nadjacent_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_2 (buf) != a2)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nadjacent_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_1 (buf) != a1)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nadjacent_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_1 (buf) != a1 || adjacent_2 (buf) != a2)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define connected_ff(buf) _next__fact(buf,_type_connected)\n\nbyte *\nconnected_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_2 (buf) != a2)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nconnected_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_1 (buf) != a1)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nconnected_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_1 (buf) != a1 || connected_2 (buf) != a2)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define doorOpen_ff(buf) _next__fact(buf,_type_doorOpen)\n\nbyte *\ndoorOpen_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_2 (buf) != a2)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\ndoorOpen_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_1 (buf) != a1)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\ndoorOpen_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_1 (buf) != a1 || doorOpen_2 (buf) != a2)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define hasWindow_f(buf) _next__fact(buf,_type_hasWindow)\n\nbyte *\nhasWindow_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_hasWindow)) != 0)\n    {\n      if (hasWindow_1 (buf) != a1)\n        {\n          buf = buf + _size_hasWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define windowOpen_f(buf) _next__fact(buf,_type_windowOpen)\n\nbyte *\nwindowOpen_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_windowOpen)) != 0)\n    {\n      if (windowOpen_1 (buf) != a1)\n        {\n          buf = buf + _size_windowOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: adjacent(1, 2)=>_curr_state :- .\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 1, 2) == 0)\n    {\n      write_adjacent (_curr_state, 1, 2);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_2: adjacent(2, 3)=>_curr_state :- .\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 2, 3) == 0)\n    {\n      write_adjacent (_curr_state, 2, 3);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_3: adjacent(3, 4)=>_curr_state :- .\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 3, 4) == 0)\n    {\n      write_adjacent (_curr_state, 3, 4);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_4: adjacent(4, 5)=>_curr_state :- .\nbool\n_deductive_rule_4 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 4, 5) == 0)\n    {\n      write_adjacent (_curr_state, 4, 5);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_5: adjacent(5, 6)=>_curr_state :- .\nbool\n_deductive_rule_5 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 5, 6) == 0)\n    {\n      write_adjacent (_curr_state, 5, 6);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_6: adjacent(6, 7)=>_curr_state :- .\nbool\n_deductive_rule_6 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 6, 7) == 0)\n    {\n      write_adjacent (_curr_state, 6, 7);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_7: adjacent(7, 8)=>_curr_state :- .\nbool\n_deductive_rule_7 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 7, 8) == 0)\n    {\n      write_adjacent (_curr_state, 7, 8);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_8: adjacent(8, 9)=>_curr_state :- .\nbool\n_deductive_rule_8 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 8, 9) == 0)\n    {\n      write_adjacent (_curr_state, 8, 9);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_9: adjacent(9, 10)=>_curr_state :- .\nbool\n_deductive_rule_9 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 9, 10) == 0)\n    {\n      write_adjacent (_curr_state, 9, 10);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_10: connected(A, B)=>_curr_state :- U{doorOpen(A, B)}.\nbool\n_deductive_rule_10 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = doorOpen_ff (_tuple1)) != 0)\n    {\n      byte A = doorOpen_1 (_tuple1);\n      byte B = doorOpen_2 (_tuple1);\n      if (connected_ff (_curr_state, A, B) == 0)\n        {\n          write_connected (_curr_state, A, B);\n          _added_facts = true;\n        }\n      _tuple1 += _size_doorOpen;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_11: connected(A, C)=>_curr_state :- U{} E{connected(A, B) connected(B, C)}.\nbool\n_deductive_rule_11 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = connected_ff (_tuple1)) != 0)\n    {\n      byte A = connected_1 (_tuple1);\n      byte B = connected_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = connected_ff (_tuple2)) != 0)\n        {\n          byte B = connected_1 (_tuple2);\n          byte C = connected_2 (_tuple2);\n          if (connected_ff (_curr_state, A, C) == 0)\n            {\n              write_connected (_curr_state, A, C);\n              _added_facts = true;\n            }\n          goto jmp1;\n          _tuple2 += _size_connected;\n        }\n      _tuple1 += _size_connected;\n    }\njmp1:;\n  return _added_facts;\n};\n\n// _deductive_rule_12: connected(B, A)=>_curr_state :- U{doorOpen(A, B)}.\nbool\n_deductive_rule_12 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = doorOpen_ff (_tuple1)) != 0)\n    {\n      byte A = doorOpen_1 (_tuple1);\n      byte B = doorOpen_2 (_tuple1);\n      if (connected_ff (_curr_state, B, A) == 0)\n        {\n          write_connected (_curr_state, B, A);\n          _added_facts = true;\n        }\n      _tuple1 += _size_doorOpen;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_13: doorOpen(A, B)=>_curr_state :- U{_io_readDoor(A, B, HIGH)}.\nbool\n_deductive_rule_13 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_readDoor_ffb (_tuple1, HIGH)) != 0)\n    {\n      atom A = _io_readDoor_1 (_tuple1);\n      atom B = _io_readDoor_2 (_tuple1);\n      if (doorOpen_ff (_curr_state, A, B) == 0)\n        {\n          write_doorOpen (_curr_state, A, B);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_readDoor;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_14: hasWindow(1)=>_curr_state :- .\nbool\n_deductive_rule_14 ()\n{\n  bool _added_facts = false;\n  if (hasWindow_b (_curr_state, 1) == 0)\n    {\n      write_hasWindow (_curr_state, 1);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_15: windowOpen(R)=>_curr_state :- U{_io_readWindow(R, HIGH)}.\nbool\n_deductive_rule_15 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_readWindow_fb (_tuple1, HIGH)) != 0)\n    {\n      atom R = _io_readWindow_1 (_tuple1);\n      if (windowOpen_f (_curr_state, R) == 0)\n        {\n          write_windowOpen (_curr_state, R);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_readWindow;\n    }\n  return _added_facts;\n};\n\n// _inductive_rule_1: #_io_heatingOff(O)=>_next_state :- U{} E{connected(R, O) windowOpen(R)}.\nvoid\n_inductive_rule_1 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = connected_ff (_tuple1)) != 0)\n    {\n      byte R = connected_1 (_tuple1);\n      byte O = connected_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = windowOpen_f (_tuple2)) != 0)\n        {\n          byte R = windowOpen_1 (_tuple2);\n          byte *_tuple3 = _next_state;\n          if ((_tuple3 = _io_heatingOff_b (_next_state, O)) == 0)\n            {\n              // make io call\n              digitalWrite (O, LOW);\n              write__io_heatingOff (_next_state, O);\n            }\n          goto jmp1;\n          _tuple2 += _size_windowOpen;\n        }\n      _tuple1 += _size_connected;\n    }\njmp1:;\n};\n\n// _inductive_rule_2: #_io_heatingOff(R)=>_next_state :- U{windowOpen(R)}.\nvoid\n_inductive_rule_2 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = windowOpen_f (_tuple1)) != 0)\n    {\n      byte R = windowOpen_1 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_heatingOff_b (_next_state, R)) == 0)\n        {\n          // make io call\n          digitalWrite (R, LOW);\n          write__io_heatingOff (_next_state, R);\n        }\n      _tuple1 += _size_windowOpen;\n    }\n};\n\n// _inductive_rule_3: #_io_readDoor(A, B, _)=>_next_state :- U{adjacent(A, B)}.\nvoid\n_inductive_rule_3 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = adjacent_ff (_tuple1)) != 0)\n    {\n      byte A = adjacent_1 (_tuple1);\n      byte B = adjacent_2 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_readDoor_bbf (_next_state, A, B)) == 0)\n        {\n          // make io call\n          int Doorstate = digitalRead (A + B);\n          write__io_readDoor (_next_state, A, B, Doorstate);\n        }\n      _tuple1 += _size_adjacent;\n}};\n\n// _inductive_rule_4: #_io_readWindow(R, _)=>_next_state :- U{hasWindow(R)}.\nvoid\n_inductive_rule_4 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = hasWindow_f (_tuple1)) != 0)\n    {\n      byte R = hasWindow_1 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_readWindow_bf (_next_state, R)) == 0)\n        {\n          // make io call\n          int State = digitalRead (R);\n          write__io_readWindow (_next_state, R, State);\n        }\n      _tuple1 += _size_hasWindow;\n}};\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n\n// stratum 3\n  _deductive_rule_1 ();\n  _deductive_rule_2 ();\n  _deductive_rule_3 ();\n  _deductive_rule_4 ();\n  _deductive_rule_5 ();\n  _deductive_rule_6 ();\n  _deductive_rule_7 ();\n  _deductive_rule_8 ();\n  _deductive_rule_9 ();\n// stratum 4\n  _deductive_rule_13 ();\n  do\n    {                           // stratum 5\n      _added_facts = false;\n      _added_facts |= _deductive_rule_10 ();\n      _added_facts |= _deductive_rule_11 ();\n      _added_facts |= _deductive_rule_12 ();\n    }\n  while (_added_facts);\n// stratum 6\n  _deductive_rule_14 ();\n// stratum 7\n  _deductive_rule_15 ();\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl adjacent/2(byte, byte)</span>\n<span class=\"cm\">.decl connected/2(byte, byte)</span>\n<span class=\"cm\">.decl doorOpen/2(byte, byte)</span>\n<span class=\"cm\">.decl hasWindow/1(byte)</span>\n<span class=\"cm\">.decl windowOpen/1(byte)</span>\n<span class=\"cm\">adjacent(1, 2) :- .</span>\n<span class=\"cm\">adjacent(2, 3) :- .</span>\n<span class=\"cm\">adjacent(3, 4) :- .</span>\n<span class=\"cm\">adjacent(4, 5) :- .</span>\n<span class=\"cm\">adjacent(5, 6) :- .</span>\n<span class=\"cm\">adjacent(6, 7) :- .</span>\n<span class=\"cm\">adjacent(7, 8) :- .</span>\n<span class=\"cm\">adjacent(8, 9) :- .</span>\n<span class=\"cm\">adjacent(9, 10) :- .</span>\n<span class=\"cm\">connected(A, B) :- doorOpen(A, B).</span>\n<span class=\"cm\">connected(A, C) :- connected(A, B), connected(B, C).</span>\n<span class=\"cm\">connected(B, A) :- doorOpen(A, B).</span>\n<span class=\"cm\">doorOpen(A, B) :- _io_readDoor(A, B, HIGH).</span>\n<span class=\"cm\">hasWindow(1) :- .</span>\n<span class=\"cm\">windowOpen(R) :- _io_readWindow(R, HIGH).</span>\n<span class=\"cm\">#_io_heatingOff(O)@next :- connected(R, O), windowOpen(R).</span>\n<span class=\"cm\">#_io_heatingOff(R)@next :- windowOpen(R).</span>\n<span class=\"cm\">#_io_readDoor(A, B, _)@next :- adjacent(A, B).</span>\n<span class=\"cm\">#_io_readWindow(R, _)@next :- hasWindow(R).</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_readDoor&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_io_readWindow&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;adjacent&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;doorOpen&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;connected&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;hasWindow&quot;]</span>\n<span class=\"cm\">7: fromList [&quot;windowOpen&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_heatingOff 1 + sizeof(atom)</span>\n<span class=\"cp\">#define _size__io_readDoor 1 + sizeof(atom)+ sizeof(atom)+ sizeof(int)</span>\n<span class=\"cp\">#define _size__io_readWindow 1 + sizeof(atom)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_adjacent 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size_connected 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size_doorOpen 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size_hasWindow 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_windowOpen 1 + sizeof(byte)</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">9</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_heatingOff</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">,</span>\n<span class=\"n\">_size_adjacent</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_hasWindow</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_heatingOff 1</span>\n<span class=\"cp\">#define _type__io_readDoor 2</span>\n<span class=\"cp\">#define _type__io_readWindow 3</span>\n<span class=\"cp\">#define _type_adjacent 4</span>\n<span class=\"cp\">#define _type_connected 5</span>\n<span class=\"cp\">#define _type_doorOpen 6</span>\n<span class=\"cp\">#define _type_hasWindow 7</span>\n<span class=\"cp\">#define _type_windowOpen 8</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"n\">atom</span>\n<span class=\"n\">_io_heatingOff_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"n\">atom</span>\n<span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"n\">atom</span>\n<span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">atom</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">atom</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">atom</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"n\">atom</span>\n<span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_io_readWindow_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">atom</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">hasWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_atom</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_atom_atom_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_atom_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_heatingOff(buf, a1) _write_fact_atom(buf, _type__io_heatingOff, a1)</span>\n<span class=\"cp\">#define write__io_readDoor(buf, a1, a2, a3) _write_fact_atom_atom_int(buf, _type__io_readDoor, a1, a2, a3)</span>\n<span class=\"cp\">#define write__io_readWindow(buf, a1, a2) _write_fact_atom_int(buf, _type__io_readWindow, a1, a2)</span>\n<span class=\"cp\">#define write_adjacent(buf, a1, a2) _write_fact_byte_byte(buf, _type_adjacent, a1, a2)</span>\n<span class=\"cp\">#define write_connected(buf, a1, a2) _write_fact_byte_byte(buf, _type_connected, a1, a2)</span>\n<span class=\"cp\">#define write_doorOpen(buf, a1, a2) _write_fact_byte_byte(buf, _type_doorOpen, a1, a2)</span>\n<span class=\"cp\">#define write_hasWindow(buf, a1) _write_fact_byte(buf, _type_hasWindow, a1)</span>\n<span class=\"cp\">#define write_windowOpen(buf, a1) _write_fact_byte(buf, _type_windowOpen, a1)</span>\n\n<span class=\"cp\">#define _io_heatingOff_f(buf) _next__fact(buf,_type__io_heatingOff)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_heatingOff_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_heatingOff</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_heatingOff_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_heatingOff</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_readDoor_fff(buf) _next__fact(buf,_type__io_readDoor)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_ffb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_fbf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_fbb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_bff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_bfb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_bbf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_bbb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span>\n<span class=\"w\">          </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_readWindow_ff(buf) _next__fact(buf,_type__io_readWindow)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readWindow_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readWindow_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readWindow_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readWindow_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define adjacent_ff(buf) _next__fact(buf,_type_adjacent)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">adjacent_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_adjacent</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">adjacent_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_adjacent</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_adjacent</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define connected_ff(buf) _next__fact(buf,_type_connected)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">connected_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_connected</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">connected_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_connected</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">connected_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_connected</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define doorOpen_ff(buf) _next__fact(buf,_type_doorOpen)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">doorOpen_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_doorOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">doorOpen_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_doorOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">doorOpen_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_doorOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define hasWindow_f(buf) _next__fact(buf,_type_hasWindow)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">hasWindow_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_hasWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hasWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_hasWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define windowOpen_f(buf) _next__fact(buf,_type_windowOpen)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">windowOpen_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_windowOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: adjacent(1, 2)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: adjacent(2, 3)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: adjacent(3, 4)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_4: adjacent(4, 5)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_5: adjacent(5, 6)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_6: adjacent(6, 7)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_7: adjacent(7, 8)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_8: adjacent(8, 9)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_9: adjacent(9, 10)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_10: connected(A, B)=&gt;_curr_state :- U{doorOpen(A, B)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_10</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_connected</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_11: connected(A, C)=&gt;_curr_state :- U{} E{connected(A, B) connected(B, C)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_11</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">C</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">C</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_connected</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">C</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_12: connected(B, A)=&gt;_curr_state :- U{doorOpen(A, B)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_12</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_connected</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_13: doorOpen(A, B)=&gt;_curr_state :- U{_io_readDoor(A, B, HIGH)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_13</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_ffb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_doorOpen</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_14: hasWindow(1)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_14</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hasWindow_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_hasWindow</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_15: windowOpen(R)=&gt;_curr_state :- U{_io_readWindow(R, HIGH)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_15</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">windowOpen_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_windowOpen</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: #_io_heatingOff(O)=&gt;_next_state :- U{} E{connected(R, O) windowOpen(R)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">O</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_heatingOff_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">O</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">              </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">O</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">write__io_heatingOff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">O</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: #_io_heatingOff(R)=&gt;_next_state :- U{windowOpen(R)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_heatingOff_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">R</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_heatingOff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_readDoor(A, B, _)=&gt;_next_state :- U{adjacent(A, B)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">adjacent_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_bbf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_readDoor</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"p\">}};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_readWindow(R, _)=&gt;_next_state :- U{hasWindow(R)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">hasWindow_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">hasWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">R</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_readWindow</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_hasWindow</span><span class=\"p\">;</span>\n<span class=\"p\">}};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n\n<span class=\"c1\">// stratum 3</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 4</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_13</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">do</span>\n<span class=\"w\">    </span><span class=\"p\">{</span><span class=\"w\">                           </span><span class=\"c1\">// stratum 5</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_10</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_11</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_12</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_added_facts</span><span class=\"p\">);</span>\n<span class=\"c1\">// stratum 6</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_14</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 7</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_15</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "heating/chain10-one-end_compilable.dl",
      "template": "lego ev3",
      "setting": "normal",
      "osource": "#readWindow(Room: atom, State: int) = { int State = digitalRead(#Room); }\n#readDoor(RoomA: atom, RoomB: atom, Doorstate: int) = { int Doorstate = digitalRead(#RoomA + #RoomB); }\n#heatingOff(Room: atom) = { digitalWrite(#Room, LOW);  }\n\n.decl hasWindow(atom)\n.decl adjacent(atom, atom)\n.decl connected(atom, atom)\n.decl windowOpen(atom)\n.decl doorOpen(atom, atom)\n\n% static example configuration\nhasWindow(1).\nadjacent(1, 2).\nadjacent(2, 3).\nadjacent(3, 4).\nadjacent(4, 5).\nadjacent(5, 6).\nadjacent(6, 7).\nadjacent(7, 8).\nadjacent(8, 9).\nadjacent(9, 10).\n% gathering world state\n#readWindow(R, ?)@next :- hasWindow(R).\n#readDoor(A, B, ?)@next :- adjacent(A, B).\n% deduce model using transitive closure\nwindowOpen(R) :- #readWindow(R, #HIGH).\ndoorOpen(A, B) :- #readDoor(A, B, #HIGH).\nconnected(A, B) :- doorOpen(A, B).\nconnected(B, A) :- doorOpen(A, B).\n%connected(A, C) :- connected(A, B), connected(B, C), A != C.\nconnected(A, C) :- connected(A, B), connected(B, C).\n% effects\n#heatingOff(R)@next :- windowOpen(R).\n#heatingOff(O)@next :- windowOpen(R), connected(R, O).\n",
      "tsource": "build TimeoutExpired",
      "highlighted": "build TimeoutExpired",
      "error": "build TimeoutExpired"
    },
    {
      "filename": "heating/chain10-one-end_compilable.dl",
      "template": "lego ev3",
      "setting": "no FSM",
      "osource": "#readWindow(Room: atom, State: int) = { int State = digitalRead(#Room); }\n#readDoor(RoomA: atom, RoomB: atom, Doorstate: int) = { int Doorstate = digitalRead(#RoomA + #RoomB); }\n#heatingOff(Room: atom) = { digitalWrite(#Room, LOW);  }\n\n.decl hasWindow(atom)\n.decl adjacent(atom, atom)\n.decl connected(atom, atom)\n.decl windowOpen(atom)\n.decl doorOpen(atom, atom)\n\n% static example configuration\nhasWindow(1).\nadjacent(1, 2).\nadjacent(2, 3).\nadjacent(3, 4).\nadjacent(4, 5).\nadjacent(5, 6).\nadjacent(6, 7).\nadjacent(7, 8).\nadjacent(8, 9).\nadjacent(9, 10).\n% gathering world state\n#readWindow(R, ?)@next :- hasWindow(R).\n#readDoor(A, B, ?)@next :- adjacent(A, B).\n% deduce model using transitive closure\nwindowOpen(R) :- #readWindow(R, #HIGH).\ndoorOpen(A, B) :- #readDoor(A, B, #HIGH).\nconnected(A, B) :- doorOpen(A, B).\nconnected(B, A) :- doorOpen(A, B).\n%connected(A, C) :- connected(A, B), connected(B, C), A != C.\nconnected(A, C) :- connected(A, B), connected(B, C).\n% effects\n#heatingOff(R)@next :- windowOpen(R).\n#heatingOff(O)@next :- windowOpen(R), connected(R, O).\n",
      "tsource": "/*\nProgram 1:\n.decl adjacent/2(byte, byte)\n.decl connected/2(byte, byte)\n.decl doorOpen/2(byte, byte)\n.decl hasWindow/1(byte)\n.decl windowOpen/1(byte)\nadjacent(1, 2) :- .\nadjacent(2, 3) :- .\nadjacent(3, 4) :- .\nadjacent(4, 5) :- .\nadjacent(5, 6) :- .\nadjacent(6, 7) :- .\nadjacent(7, 8) :- .\nadjacent(8, 9) :- .\nadjacent(9, 10) :- .\nconnected(A, B) :- doorOpen(A, B).\nconnected(A, C) :- connected(A, B), connected(B, C).\nconnected(B, A) :- doorOpen(A, B).\ndoorOpen(A, B) :- _io_readDoor(A, B, HIGH).\nhasWindow(1) :- .\nwindowOpen(R) :- _io_readWindow(R, HIGH).\n#_io_heatingOff(O)@next :- connected(R, O), windowOpen(R).\n#_io_heatingOff(R)@next :- windowOpen(R).\n#_io_readDoor(A, B, _)@next :- adjacent(A, B).\n#_io_readWindow(R, _)@next :- hasWindow(R).\n\n\n\nStrata:\n1: fromList [\"_io_readDoor\"]\n2: fromList [\"_io_readWindow\"]\n3: fromList [\"adjacent\"]\n4: fromList [\"doorOpen\"]\n5: fromList [\"connected\"]\n6: fromList [\"hasWindow\"]\n7: fromList [\"windowOpen\"]\n*/\n#include \"brick.h\"\n\n#define _rulecount 4\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_heatingOff 1 + sizeof(atom)\n#define _size__io_readDoor 1 + sizeof(atom)+ sizeof(atom)+ sizeof(int)\n#define _size__io_readWindow 1 + sizeof(atom)+ sizeof(int)\n#define _size_adjacent 1 + sizeof(byte)+ sizeof(byte)\n#define _size_connected 1 + sizeof(byte)+ sizeof(byte)\n#define _size_doorOpen 1 + sizeof(byte)+ sizeof(byte)\n#define _size_hasWindow 1 + sizeof(byte)\n#define _size_windowOpen 1 + sizeof(byte)\nbyte _sizes[9] =\n  { 0, _size__io_heatingOff, _size__io_readDoor, _size__io_readWindow,\n_size_adjacent, _size_connected, _size_doorOpen, _size_hasWindow, _size_windowOpen\n};\n\n#define _type__io_heatingOff 1\n#define _type__io_readDoor 2\n#define _type__io_readWindow 3\n#define _type_adjacent 4\n#define _type_connected 5\n#define _type_doorOpen 6\n#define _type_hasWindow 7\n#define _type_windowOpen 8\n\n\n\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline atom\n_io_heatingOff_1 (byte *buf)\n{\n  return _read_data < atom > (buf + 1);\n}\n\ninline atom\n_io_readDoor_1 (byte *buf)\n{\n  return _read_data < atom > (buf + 1);\n}\n\ninline atom\n_io_readDoor_2 (byte *buf)\n{\n  return _read_data < atom > (buf + 1 + sizeof (atom));\n}\n\ninline int\n_io_readDoor_3 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (atom) + sizeof (atom));\n}\n\ninline atom\n_io_readWindow_1 (byte *buf)\n{\n  return _read_data < atom > (buf + 1);\n}\n\ninline int\n_io_readWindow_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (atom));\n}\n\ninline byte\nadjacent_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\nadjacent_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\nconnected_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\nconnected_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\ndoorOpen_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\ndoorOpen_2 (byte *buf)\n{\n  return _read_data < byte > (buf + 1 + sizeof (byte));\n}\n\ninline byte\nhasWindow_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\ninline byte\nwindowOpen_1 (byte *buf)\n{\n  return _read_data < byte > (buf + 1);\n}\n\nvoid\n_write_fact_atom (byte *buf, byte type, atom a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < atom > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_atom_atom_int (byte *buf, byte type, atom a1, atom a2, int a3)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < atom > (free, a1);\n  free = _write_data < atom > (free, a2);\n  free = _write_data < int >(free, a3);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_atom_int (byte *buf, byte type, atom a1, int a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < atom > (free, a1);\n  free = _write_data < int >(free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte (byte *buf, byte type, byte a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_byte_byte (byte *buf, byte type, byte a1, byte a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < byte > (free, a1);\n  free = _write_data < byte > (free, a2);\n  _advance_buff (buf, free);\n}\n\n#define write__io_heatingOff(buf, a1) _write_fact_atom(buf, _type__io_heatingOff, a1)\n#define write__io_readDoor(buf, a1, a2, a3) _write_fact_atom_atom_int(buf, _type__io_readDoor, a1, a2, a3)\n#define write__io_readWindow(buf, a1, a2) _write_fact_atom_int(buf, _type__io_readWindow, a1, a2)\n#define write_adjacent(buf, a1, a2) _write_fact_byte_byte(buf, _type_adjacent, a1, a2)\n#define write_connected(buf, a1, a2) _write_fact_byte_byte(buf, _type_connected, a1, a2)\n#define write_doorOpen(buf, a1, a2) _write_fact_byte_byte(buf, _type_doorOpen, a1, a2)\n#define write_hasWindow(buf, a1) _write_fact_byte(buf, _type_hasWindow, a1)\n#define write_windowOpen(buf, a1) _write_fact_byte(buf, _type_windowOpen, a1)\n\n#define _io_heatingOff_f(buf) _next__fact(buf,_type__io_heatingOff)\n\nbyte *\n_io_heatingOff_b (byte *buf, atom a1)\n{\n  while ((buf = _next__fact (buf, _type__io_heatingOff)) != 0)\n    {\n      if (_io_heatingOff_1 (buf) != a1)\n        {\n          buf = buf + _size__io_heatingOff;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_readDoor_fff(buf) _next__fact(buf,_type__io_readDoor)\n\nbyte *\n_io_readDoor_ffb (byte *buf, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_fbf (byte *buf, atom a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_fbb (byte *buf, atom a2, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_2 (buf) != a2 || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bff (byte *buf, atom a1)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bfb (byte *buf, atom a1, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bbf (byte *buf, atom a1, atom a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bbb (byte *buf, atom a1, atom a2, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_2 (buf) != a2\n          || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_readWindow_ff(buf) _next__fact(buf,_type__io_readWindow)\n\nbyte *\n_io_readWindow_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readWindow_bf (byte *buf, atom a1)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_1 (buf) != a1)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readWindow_bb (byte *buf, atom a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_1 (buf) != a1 || _io_readWindow_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define adjacent_ff(buf) _next__fact(buf,_type_adjacent)\n\nbyte *\nadjacent_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_2 (buf) != a2)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nadjacent_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_1 (buf) != a1)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nadjacent_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_1 (buf) != a1 || adjacent_2 (buf) != a2)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define connected_ff(buf) _next__fact(buf,_type_connected)\n\nbyte *\nconnected_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_2 (buf) != a2)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nconnected_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_1 (buf) != a1)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nconnected_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_1 (buf) != a1 || connected_2 (buf) != a2)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define doorOpen_ff(buf) _next__fact(buf,_type_doorOpen)\n\nbyte *\ndoorOpen_fb (byte *buf, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_2 (buf) != a2)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\ndoorOpen_bf (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_1 (buf) != a1)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\ndoorOpen_bb (byte *buf, byte a1, byte a2)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_1 (buf) != a1 || doorOpen_2 (buf) != a2)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define hasWindow_f(buf) _next__fact(buf,_type_hasWindow)\n\nbyte *\nhasWindow_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_hasWindow)) != 0)\n    {\n      if (hasWindow_1 (buf) != a1)\n        {\n          buf = buf + _size_hasWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define windowOpen_f(buf) _next__fact(buf,_type_windowOpen)\n\nbyte *\nwindowOpen_b (byte *buf, byte a1)\n{\n  while ((buf = _next__fact (buf, _type_windowOpen)) != 0)\n    {\n      if (windowOpen_1 (buf) != a1)\n        {\n          buf = buf + _size_windowOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: adjacent(1, 2)=>_curr_state :- .\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 1, 2) == 0)\n    {\n      write_adjacent (_curr_state, 1, 2);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_2: adjacent(2, 3)=>_curr_state :- .\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 2, 3) == 0)\n    {\n      write_adjacent (_curr_state, 2, 3);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_3: adjacent(3, 4)=>_curr_state :- .\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 3, 4) == 0)\n    {\n      write_adjacent (_curr_state, 3, 4);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_4: adjacent(4, 5)=>_curr_state :- .\nbool\n_deductive_rule_4 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 4, 5) == 0)\n    {\n      write_adjacent (_curr_state, 4, 5);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_5: adjacent(5, 6)=>_curr_state :- .\nbool\n_deductive_rule_5 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 5, 6) == 0)\n    {\n      write_adjacent (_curr_state, 5, 6);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_6: adjacent(6, 7)=>_curr_state :- .\nbool\n_deductive_rule_6 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 6, 7) == 0)\n    {\n      write_adjacent (_curr_state, 6, 7);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_7: adjacent(7, 8)=>_curr_state :- .\nbool\n_deductive_rule_7 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 7, 8) == 0)\n    {\n      write_adjacent (_curr_state, 7, 8);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_8: adjacent(8, 9)=>_curr_state :- .\nbool\n_deductive_rule_8 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 8, 9) == 0)\n    {\n      write_adjacent (_curr_state, 8, 9);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_9: adjacent(9, 10)=>_curr_state :- .\nbool\n_deductive_rule_9 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 9, 10) == 0)\n    {\n      write_adjacent (_curr_state, 9, 10);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_10: connected(A, B)=>_curr_state :- U{doorOpen(A, B)}.\nbool\n_deductive_rule_10 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = doorOpen_ff (_tuple1)) != 0)\n    {\n      byte A = doorOpen_1 (_tuple1);\n      byte B = doorOpen_2 (_tuple1);\n      if (connected_ff (_curr_state, A, B) == 0)\n        {\n          write_connected (_curr_state, A, B);\n          _added_facts = true;\n        }\n      _tuple1 += _size_doorOpen;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_11: connected(A, C)=>_curr_state :- U{} E{connected(A, B) connected(B, C)}.\nbool\n_deductive_rule_11 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = connected_ff (_tuple1)) != 0)\n    {\n      byte A = connected_1 (_tuple1);\n      byte B = connected_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = connected_ff (_tuple2)) != 0)\n        {\n          byte B = connected_1 (_tuple2);\n          byte C = connected_2 (_tuple2);\n          if (connected_ff (_curr_state, A, C) == 0)\n            {\n              write_connected (_curr_state, A, C);\n              _added_facts = true;\n            }\n          goto jmp1;\n          _tuple2 += _size_connected;\n        }\n      _tuple1 += _size_connected;\n    }\njmp1:;\n  return _added_facts;\n};\n\n// _deductive_rule_12: connected(B, A)=>_curr_state :- U{doorOpen(A, B)}.\nbool\n_deductive_rule_12 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = doorOpen_ff (_tuple1)) != 0)\n    {\n      byte A = doorOpen_1 (_tuple1);\n      byte B = doorOpen_2 (_tuple1);\n      if (connected_ff (_curr_state, B, A) == 0)\n        {\n          write_connected (_curr_state, B, A);\n          _added_facts = true;\n        }\n      _tuple1 += _size_doorOpen;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_13: doorOpen(A, B)=>_curr_state :- U{_io_readDoor(A, B, HIGH)}.\nbool\n_deductive_rule_13 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_readDoor_ffb (_tuple1, HIGH)) != 0)\n    {\n      atom A = _io_readDoor_1 (_tuple1);\n      atom B = _io_readDoor_2 (_tuple1);\n      if (doorOpen_ff (_curr_state, A, B) == 0)\n        {\n          write_doorOpen (_curr_state, A, B);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_readDoor;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_14: hasWindow(1)=>_curr_state :- .\nbool\n_deductive_rule_14 ()\n{\n  bool _added_facts = false;\n  if (hasWindow_b (_curr_state, 1) == 0)\n    {\n      write_hasWindow (_curr_state, 1);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_15: windowOpen(R)=>_curr_state :- U{_io_readWindow(R, HIGH)}.\nbool\n_deductive_rule_15 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_readWindow_fb (_tuple1, HIGH)) != 0)\n    {\n      atom R = _io_readWindow_1 (_tuple1);\n      if (windowOpen_f (_curr_state, R) == 0)\n        {\n          write_windowOpen (_curr_state, R);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_readWindow;\n    }\n  return _added_facts;\n};\n\n// _inductive_rule_1: #_io_heatingOff(O)=>_next_state :- U{} E{connected(R, O) windowOpen(R)}.\nvoid\n_inductive_rule_1 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = connected_ff (_tuple1)) != 0)\n    {\n      byte R = connected_1 (_tuple1);\n      byte O = connected_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = windowOpen_f (_tuple2)) != 0)\n        {\n          byte R = windowOpen_1 (_tuple2);\n          byte *_tuple3 = _next_state;\n          if ((_tuple3 = _io_heatingOff_b (_next_state, O)) == 0)\n            {\n              // make io call\n              digitalWrite (O, LOW);\n              write__io_heatingOff (_next_state, O);\n            }\n          goto jmp1;\n          _tuple2 += _size_windowOpen;\n        }\n      _tuple1 += _size_connected;\n    }\njmp1:;\n};\n\n// _inductive_rule_2: #_io_heatingOff(R)=>_next_state :- U{windowOpen(R)}.\nvoid\n_inductive_rule_2 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = windowOpen_f (_tuple1)) != 0)\n    {\n      byte R = windowOpen_1 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_heatingOff_b (_next_state, R)) == 0)\n        {\n          // make io call\n          digitalWrite (R, LOW);\n          write__io_heatingOff (_next_state, R);\n        }\n      _tuple1 += _size_windowOpen;\n    }\n};\n\n// _inductive_rule_3: #_io_readDoor(A, B, _)=>_next_state :- U{adjacent(A, B)}.\nvoid\n_inductive_rule_3 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = adjacent_ff (_tuple1)) != 0)\n    {\n      byte A = adjacent_1 (_tuple1);\n      byte B = adjacent_2 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_readDoor_bbf (_next_state, A, B)) == 0)\n        {\n          // make io call\n          int Doorstate = digitalRead (A + B);\n          write__io_readDoor (_next_state, A, B, Doorstate);\n        }\n      _tuple1 += _size_adjacent;\n}};\n\n// _inductive_rule_4: #_io_readWindow(R, _)=>_next_state :- U{hasWindow(R)}.\nvoid\n_inductive_rule_4 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = hasWindow_f (_tuple1)) != 0)\n    {\n      byte R = hasWindow_1 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_readWindow_bf (_next_state, R)) == 0)\n        {\n          // make io call\n          int State = digitalRead (R);\n          write__io_readWindow (_next_state, R, State);\n        }\n      _tuple1 += _size_hasWindow;\n}};\n\n#endif\n\nvoid\nsetup ()\n{\n  brick_init ();\n\n#if _rulecount > 0\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n\n// stratum 3\n  _deductive_rule_1 ();\n  _deductive_rule_2 ();\n  _deductive_rule_3 ();\n  _deductive_rule_4 ();\n  _deductive_rule_5 ();\n  _deductive_rule_6 ();\n  _deductive_rule_7 ();\n  _deductive_rule_8 ();\n  _deductive_rule_9 ();\n// stratum 4\n  _deductive_rule_13 ();\n  do\n    {                           // stratum 5\n      _added_facts = false;\n      _added_facts |= _deductive_rule_10 ();\n      _added_facts |= _deductive_rule_11 ();\n      _added_facts |= _deductive_rule_12 ();\n    }\n  while (_added_facts);\n// stratum 6\n  _deductive_rule_14 ();\n// stratum 7\n  _deductive_rule_15 ();\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n\n\n  // Buffer clearing and swapping\n  clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n\nint\nmain ()\n{\n  setup ();\n  while (true)\n    loop ();\n\n  brick_uninit ();\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl adjacent/2(byte, byte)</span>\n<span class=\"cm\">.decl connected/2(byte, byte)</span>\n<span class=\"cm\">.decl doorOpen/2(byte, byte)</span>\n<span class=\"cm\">.decl hasWindow/1(byte)</span>\n<span class=\"cm\">.decl windowOpen/1(byte)</span>\n<span class=\"cm\">adjacent(1, 2) :- .</span>\n<span class=\"cm\">adjacent(2, 3) :- .</span>\n<span class=\"cm\">adjacent(3, 4) :- .</span>\n<span class=\"cm\">adjacent(4, 5) :- .</span>\n<span class=\"cm\">adjacent(5, 6) :- .</span>\n<span class=\"cm\">adjacent(6, 7) :- .</span>\n<span class=\"cm\">adjacent(7, 8) :- .</span>\n<span class=\"cm\">adjacent(8, 9) :- .</span>\n<span class=\"cm\">adjacent(9, 10) :- .</span>\n<span class=\"cm\">connected(A, B) :- doorOpen(A, B).</span>\n<span class=\"cm\">connected(A, C) :- connected(A, B), connected(B, C).</span>\n<span class=\"cm\">connected(B, A) :- doorOpen(A, B).</span>\n<span class=\"cm\">doorOpen(A, B) :- _io_readDoor(A, B, HIGH).</span>\n<span class=\"cm\">hasWindow(1) :- .</span>\n<span class=\"cm\">windowOpen(R) :- _io_readWindow(R, HIGH).</span>\n<span class=\"cm\">#_io_heatingOff(O)@next :- connected(R, O), windowOpen(R).</span>\n<span class=\"cm\">#_io_heatingOff(R)@next :- windowOpen(R).</span>\n<span class=\"cm\">#_io_readDoor(A, B, _)@next :- adjacent(A, B).</span>\n<span class=\"cm\">#_io_readWindow(R, _)@next :- hasWindow(R).</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_readDoor&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_io_readWindow&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;adjacent&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;doorOpen&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;connected&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;hasWindow&quot;]</span>\n<span class=\"cm\">7: fromList [&quot;windowOpen&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;brick.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_heatingOff 1 + sizeof(atom)</span>\n<span class=\"cp\">#define _size__io_readDoor 1 + sizeof(atom)+ sizeof(atom)+ sizeof(int)</span>\n<span class=\"cp\">#define _size__io_readWindow 1 + sizeof(atom)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_adjacent 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size_connected 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size_doorOpen 1 + sizeof(byte)+ sizeof(byte)</span>\n<span class=\"cp\">#define _size_hasWindow 1 + sizeof(byte)</span>\n<span class=\"cp\">#define _size_windowOpen 1 + sizeof(byte)</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">9</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_heatingOff</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">,</span>\n<span class=\"n\">_size_adjacent</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_hasWindow</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_heatingOff 1</span>\n<span class=\"cp\">#define _type__io_readDoor 2</span>\n<span class=\"cp\">#define _type__io_readWindow 3</span>\n<span class=\"cp\">#define _type_adjacent 4</span>\n<span class=\"cp\">#define _type_connected 5</span>\n<span class=\"cp\">#define _type_doorOpen 6</span>\n<span class=\"cp\">#define _type_hasWindow 7</span>\n<span class=\"cp\">#define _type_windowOpen 8</span>\n\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"n\">atom</span>\n<span class=\"n\">_io_heatingOff_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"n\">atom</span>\n<span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"n\">atom</span>\n<span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">atom</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">atom</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">atom</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"n\">atom</span>\n<span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_io_readWindow_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">atom</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">hasWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">byte</span>\n<span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_atom</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_atom_atom_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_atom_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_byte_byte</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_heatingOff(buf, a1) _write_fact_atom(buf, _type__io_heatingOff, a1)</span>\n<span class=\"cp\">#define write__io_readDoor(buf, a1, a2, a3) _write_fact_atom_atom_int(buf, _type__io_readDoor, a1, a2, a3)</span>\n<span class=\"cp\">#define write__io_readWindow(buf, a1, a2) _write_fact_atom_int(buf, _type__io_readWindow, a1, a2)</span>\n<span class=\"cp\">#define write_adjacent(buf, a1, a2) _write_fact_byte_byte(buf, _type_adjacent, a1, a2)</span>\n<span class=\"cp\">#define write_connected(buf, a1, a2) _write_fact_byte_byte(buf, _type_connected, a1, a2)</span>\n<span class=\"cp\">#define write_doorOpen(buf, a1, a2) _write_fact_byte_byte(buf, _type_doorOpen, a1, a2)</span>\n<span class=\"cp\">#define write_hasWindow(buf, a1) _write_fact_byte(buf, _type_hasWindow, a1)</span>\n<span class=\"cp\">#define write_windowOpen(buf, a1) _write_fact_byte(buf, _type_windowOpen, a1)</span>\n\n<span class=\"cp\">#define _io_heatingOff_f(buf) _next__fact(buf,_type__io_heatingOff)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_heatingOff_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_heatingOff</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_heatingOff_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_heatingOff</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_readDoor_fff(buf) _next__fact(buf,_type__io_readDoor)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_ffb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_fbf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_fbb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_bff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_bfb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_bbf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_bbb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span>\n<span class=\"w\">          </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_readWindow_ff(buf) _next__fact(buf,_type__io_readWindow)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readWindow_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readWindow_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readWindow_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readWindow_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define adjacent_ff(buf) _next__fact(buf,_type_adjacent)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">adjacent_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_adjacent</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">adjacent_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_adjacent</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_adjacent</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define connected_ff(buf) _next__fact(buf,_type_connected)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">connected_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_connected</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">connected_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_connected</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">connected_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_connected</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define doorOpen_ff(buf) _next__fact(buf,_type_doorOpen)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">doorOpen_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_doorOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">doorOpen_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_doorOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">doorOpen_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_doorOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define hasWindow_f(buf) _next__fact(buf,_type_hasWindow)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">hasWindow_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_hasWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hasWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_hasWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define windowOpen_f(buf) _next__fact(buf,_type_windowOpen)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">windowOpen_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_windowOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: adjacent(1, 2)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: adjacent(2, 3)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: adjacent(3, 4)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_4: adjacent(4, 5)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_5: adjacent(5, 6)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_6: adjacent(6, 7)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_7: adjacent(7, 8)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_8: adjacent(8, 9)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_9: adjacent(9, 10)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_10: connected(A, B)=&gt;_curr_state :- U{doorOpen(A, B)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_10</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_connected</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_11: connected(A, C)=&gt;_curr_state :- U{} E{connected(A, B) connected(B, C)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_11</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">C</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">C</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"n\">write_connected</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">C</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_12: connected(B, A)=&gt;_curr_state :- U{doorOpen(A, B)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_12</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_connected</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_13: doorOpen(A, B)=&gt;_curr_state :- U{_io_readDoor(A, B, HIGH)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_13</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_ffb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_doorOpen</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_14: hasWindow(1)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_14</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hasWindow_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_hasWindow</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_15: windowOpen(R)=&gt;_curr_state :- U{_io_readWindow(R, HIGH)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_15</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">atom</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">windowOpen_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_windowOpen</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: #_io_heatingOff(O)=&gt;_next_state :- U{} E{connected(R, O) windowOpen(R)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">O</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_heatingOff_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">O</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">              </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">O</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">write__io_heatingOff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">O</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: #_io_heatingOff(R)=&gt;_next_state :- U{windowOpen(R)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_heatingOff_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">R</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_heatingOff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_readDoor(A, B, _)=&gt;_next_state :- U{adjacent(A, B)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">adjacent_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_bbf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_readDoor</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"p\">}};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_readWindow(R, _)=&gt;_next_state :- U{hasWindow(R)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">hasWindow_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">hasWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">R</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_readWindow</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_hasWindow</span><span class=\"p\">;</span>\n<span class=\"p\">}};</span>\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">brick_init</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"w\">  </span><span class=\"c1\">// deductive phase</span>\n\n\n<span class=\"c1\">// stratum 3</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 4</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_13</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">do</span>\n<span class=\"w\">    </span><span class=\"p\">{</span><span class=\"w\">                           </span><span class=\"c1\">// stratum 5</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_10</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_11</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_12</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_added_facts</span><span class=\"p\">);</span>\n<span class=\"c1\">// stratum 6</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_14</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 7</span>\n<span class=\"w\">  </span><span class=\"n\">_deductive_rule_15</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">int</span>\n<span class=\"nf\">main</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">();</span>\n\n<span class=\"w\">  </span><span class=\"n\">brick_uninit</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "heating/chain6-both-ends_compilable.dl",
      "template": "no runtime",
      "setting": "normal",
      "osource": "#readWindow(Room: int, State: int) = { int State = digitalRead(#Room); }\n#readDoor(RoomA: int, RoomB: int, Doorstate: int) = { int Doorstate = digitalRead(#RoomA + #RoomB); }\n#heatingOff(Room: int) = { digitalWrite(#Room, LOW);  }\n\n.decl hasWindow(int)\n.decl adjacent(int, int)\n.decl connected(int, int)\n.decl windowOpen(int)\n.decl doorOpen(int, int)\n\n% static example configuration\nhasWindow(1).\nhasWindow(6).\nadjacent(1, 2).\nadjacent(2, 3).\nadjacent(3, 4).\nadjacent(4, 5).\nadjacent(5, 6).\n% gathering world state\n#readWindow(R, ?)@next :- hasWindow(R).\n#readDoor(A, B, ?)@next :- adjacent(A, B).\n% deduce model using transitive closure\nwindowOpen(R) :- #readWindow(R, #HIGH).\ndoorOpen(A, B) :- #readDoor(A, B, #HIGH).\nconnected(A, B) :- doorOpen(A, B).\nconnected(B, A) :- doorOpen(A, B).\nconnected(A, C) :- connected(A, B), connected(B, C), A != C.\n% effects\n#heatingOff(R)@next :- windowOpen(R).\n#heatingOff(O)@next :- windowOpen(R), connected(R, O).\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl adjacent/2(int, int)\n.decl connected/2(int, int)\n.decl doorOpen/2(int, int)\n.decl hasWindow/1(int)\n.decl windowOpen/1(int)\nadjacent(1, 2) :- .\nadjacent(2, 3) :- .\nadjacent(3, 4) :- .\nadjacent(4, 5) :- .\nadjacent(5, 6) :- .\nconnected(A, B) :- doorOpen(A, B).\nconnected(A, C) :- connected(A, B), connected(B, C), ArithComp (ArithNEQ \"A\" \"C\").\nconnected(B, A) :- doorOpen(A, B).\ndoorOpen(A, B) :- _io_readDoor(A, B, HIGH).\nhasWindow(1) :- .\nhasWindow(6) :- .\nwindowOpen(R) :- _io_readWindow(R, HIGH).\n#_io_heatingOff(O)@next :- connected(R, O), windowOpen(R).\n#_io_heatingOff(R)@next :- windowOpen(R).\n#_io_readDoor(A, B, _)@next :- adjacent(A, B).\n#_io_readWindow(R, _)@next :- hasWindow(R).\n\n\n\nStrata:\n1: fromList [\"_io_readDoor\"]\n2: fromList [\"_io_readWindow\"]\n3: fromList [\"adjacent\"]\n4: fromList [\"doorOpen\"]\n5: fromList [\"connected\"]\n6: fromList [\"hasWindow\"]\n7: fromList [\"windowOpen\"]\n*/\n\n#define _rulecount 0\n#define _bufsize 256\n\nbyte _fsm1_state = 1;\nint _fsm1_slot_1;\nint _fsm1_slot_2;\nint _fsm1_slot_3;\nint _fsm1_slot_4;\nint _fsm1_slot_5;\nint _fsm1_slot_6;\nint _fsm1_slot_7;\n\n\nbyte _sizes[1] = { 0 };\n\n\n\n\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n/* SETUP */\n\n\n/* LOOP */\n\nif (_fsm1_state == 1)\n  {\n    {\n    _fsm1_trans1:\n      if (true)\n        {\n          _fsm1_state = 2;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 23)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (2, LOW);\n    }\n    {\n      digitalWrite (3, LOW);\n    }\n    {\n      digitalWrite (4, LOW);\n    }\n    {\n      digitalWrite (5, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n    _fsm1_trans23:\n      if (((HIGH == _fsm1_slot_1)\n           &&\n           (((HIGH == _fsm1_slot_2)\n             &&\n             (((HIGH == _fsm1_slot_3)\n               &&\n               (((HIGH == _fsm1_slot_4)\n                 &&\n                 (((HIGH == _fsm1_slot_5)\n                   && (((HIGH == _fsm1_slot_6) && (HIGH != _fsm1_slot_7))\n                       || ((HIGH == _fsm1_slot_7) && (HIGH != _fsm1_slot_6))))\n                  || ((HIGH == _fsm1_slot_6)\n                      && ((HIGH == _fsm1_slot_7) && (HIGH != _fsm1_slot_5)))))\n                || ((HIGH == _fsm1_slot_5)\n                    && ((HIGH == _fsm1_slot_6)\n                        && ((HIGH == _fsm1_slot_7)\n                            && (HIGH != _fsm1_slot_4))))))\n              || ((HIGH == _fsm1_slot_4)\n                  && ((HIGH == _fsm1_slot_5)\n                      && ((HIGH == _fsm1_slot_6)\n                          && ((HIGH == _fsm1_slot_7)\n                              && (HIGH != _fsm1_slot_3)))))))\n            || ((HIGH == _fsm1_slot_3)\n                && ((HIGH == _fsm1_slot_4)\n                    && ((HIGH == _fsm1_slot_5)\n                        && ((HIGH == _fsm1_slot_6)\n                            && ((HIGH == _fsm1_slot_7)\n                                && (HIGH != _fsm1_slot_2))))))))\n          || ((HIGH == _fsm1_slot_2)\n              && ((HIGH == _fsm1_slot_3)\n                  && ((HIGH == _fsm1_slot_4)\n                      && ((HIGH == _fsm1_slot_5)\n                          && ((HIGH == _fsm1_slot_6)\n                              && (HIGH == _fsm1_slot_7)))))))\n        {\n          _fsm1_state = 23;\n        }\n      else\n        if ((HIGH == _fsm1_slot_1)\n            && ((HIGH == _fsm1_slot_2)\n                && ((HIGH == _fsm1_slot_3)\n                    && ((HIGH == _fsm1_slot_4)\n                        && ((HIGH == _fsm1_slot_6)\n                            && ((HIGH != _fsm1_slot_5)\n                                && (HIGH != _fsm1_slot_7)))))))\n        {\n          _fsm1_state = 17;\n        }\n      else\n        if ((HIGH == _fsm1_slot_1)\n            && ((HIGH == _fsm1_slot_2)\n                && ((HIGH == _fsm1_slot_3)\n                    && ((HIGH == _fsm1_slot_6)\n                        && ((HIGH == _fsm1_slot_7)\n                            && ((HIGH != _fsm1_slot_4)\n                                && (HIGH != _fsm1_slot_5)))))))\n        {\n          _fsm1_state = 18;\n        }\n      else\n        if ((HIGH == _fsm1_slot_1)\n            && ((HIGH == _fsm1_slot_2)\n                && ((HIGH == _fsm1_slot_3)\n                    && ((HIGH == _fsm1_slot_6)\n                        && ((HIGH != _fsm1_slot_4)\n                            && (HIGH != _fsm1_slot_7))))))\n        {\n          _fsm1_state = 12;\n        }\n      else\n        if ((HIGH == _fsm1_slot_1)\n            && ((HIGH == _fsm1_slot_2)\n                && ((HIGH == _fsm1_slot_5)\n                    && ((HIGH == _fsm1_slot_6)\n                        && ((HIGH == _fsm1_slot_7)\n                            && ((HIGH != _fsm1_slot_3)\n                                && (HIGH != _fsm1_slot_4)))))))\n        {\n          _fsm1_state = 19;\n        }\n      else\n        if ((HIGH == _fsm1_slot_1)\n            && ((HIGH == _fsm1_slot_2)\n                && ((HIGH == _fsm1_slot_6)\n                    && ((HIGH == _fsm1_slot_7)\n                        && ((HIGH != _fsm1_slot_3)\n                            && (HIGH != _fsm1_slot_5))))))\n        {\n          _fsm1_state = 13;\n        }\n      else\n        if ((HIGH == _fsm1_slot_1)\n            && ((HIGH == _fsm1_slot_2)\n                && ((HIGH == _fsm1_slot_6)\n                    && ((HIGH != _fsm1_slot_3) && (HIGH != _fsm1_slot_7)))))\n        {\n          _fsm1_state = 8;\n        }\n      else\n        if ((HIGH == _fsm1_slot_1)\n            && ((HIGH == _fsm1_slot_4)\n                && ((HIGH == _fsm1_slot_5)\n                    && ((HIGH == _fsm1_slot_6)\n                        && ((HIGH == _fsm1_slot_7)\n                            && ((HIGH != _fsm1_slot_2)\n                                && (HIGH != _fsm1_slot_3)))))))\n        {\n          _fsm1_state = 20;\n        }\n      else\n        if ((HIGH == _fsm1_slot_1)\n            && ((HIGH == _fsm1_slot_5)\n                && ((HIGH == _fsm1_slot_6)\n                    && ((HIGH == _fsm1_slot_7)\n                        && ((HIGH != _fsm1_slot_2)\n                            && (HIGH != _fsm1_slot_4))))))\n        {\n          _fsm1_state = 14;\n        }\n      else\n        if ((HIGH == _fsm1_slot_1)\n            && ((HIGH == _fsm1_slot_6)\n                && ((HIGH == _fsm1_slot_7)\n                    && ((HIGH != _fsm1_slot_2) && (HIGH != _fsm1_slot_5)))))\n        {\n          _fsm1_state = 9;\n        }\n      else\n        if ((HIGH == _fsm1_slot_1)\n            && ((HIGH == _fsm1_slot_6)\n                && ((HIGH != _fsm1_slot_2) && (HIGH != _fsm1_slot_7))))\n        {\n          _fsm1_state = 5;\n        }\n      else\n        if ((HIGH == _fsm1_slot_2)\n            && ((HIGH == _fsm1_slot_3)\n                && ((HIGH == _fsm1_slot_4)\n                    && ((HIGH == _fsm1_slot_5)\n                        && ((HIGH == _fsm1_slot_7)\n                            && ((HIGH != _fsm1_slot_1)\n                                && (HIGH != _fsm1_slot_6)))))))\n        {\n          _fsm1_state = 22;\n        }\n      else\n        if ((HIGH == _fsm1_slot_3)\n            && ((HIGH == _fsm1_slot_4)\n                && ((HIGH == _fsm1_slot_5)\n                    && ((HIGH == _fsm1_slot_6)\n                        && ((HIGH == _fsm1_slot_7)\n                            && ((HIGH != _fsm1_slot_1)\n                                && (HIGH != _fsm1_slot_2)))))))\n        {\n          _fsm1_state = 21;\n        }\n      else\n        if ((HIGH == _fsm1_slot_3)\n            && ((HIGH == _fsm1_slot_4)\n                && ((HIGH == _fsm1_slot_5)\n                    && ((HIGH == _fsm1_slot_7)\n                        && ((HIGH != _fsm1_slot_2)\n                            && (HIGH != _fsm1_slot_6))))))\n        {\n          _fsm1_state = 16;\n        }\n      else\n        if ((HIGH == _fsm1_slot_4)\n            && ((HIGH == _fsm1_slot_5)\n                && ((HIGH == _fsm1_slot_6)\n                    && ((HIGH == _fsm1_slot_7)\n                        && ((HIGH != _fsm1_slot_1)\n                            && (HIGH != _fsm1_slot_3))))))\n        {\n          _fsm1_state = 15;\n        }\n      else\n        if ((HIGH == _fsm1_slot_4)\n            && ((HIGH == _fsm1_slot_5)\n                && ((HIGH == _fsm1_slot_7)\n                    && ((HIGH != _fsm1_slot_3) && (HIGH != _fsm1_slot_6)))))\n        {\n          _fsm1_state = 11;\n        }\n      else\n        if ((HIGH == _fsm1_slot_5)\n            && ((HIGH == _fsm1_slot_6)\n                && ((HIGH == _fsm1_slot_7)\n                    && ((HIGH != _fsm1_slot_1) && (HIGH != _fsm1_slot_4)))))\n        {\n          _fsm1_state = 10;\n        }\n      else\n        if ((HIGH == _fsm1_slot_5)\n            && ((HIGH == _fsm1_slot_7)\n                && ((HIGH != _fsm1_slot_4) && (HIGH != _fsm1_slot_6))))\n        {\n          _fsm1_state = 7;\n        }\n      else\n        if ((HIGH == _fsm1_slot_6)\n            && ((HIGH == _fsm1_slot_7)\n                && ((HIGH != _fsm1_slot_1) && (HIGH != _fsm1_slot_5))))\n        {\n          _fsm1_state = 6;\n        }\n      else\n        if ((HIGH == _fsm1_slot_6)\n            && ((HIGH != _fsm1_slot_1) && (HIGH != _fsm1_slot_7)))\n        {\n          _fsm1_state = 3;\n        }\n      else\n        if ((HIGH == _fsm1_slot_7)\n            && ((HIGH != _fsm1_slot_5) && (HIGH != _fsm1_slot_6)))\n        {\n          _fsm1_state = 4;\n        }\n      else if ((HIGH != _fsm1_slot_6) && (HIGH != _fsm1_slot_7))\n        {\n          _fsm1_state = 2;\n        }\n      else;\n    }\n  }\nelse if (_fsm1_state == 17)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (2, LOW);\n    }\n    {\n      digitalWrite (3, LOW);\n    }\n    {\n      digitalWrite (4, LOW);\n    }\n    {\n      digitalWrite (5, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 18)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (2, LOW);\n    }\n    {\n      digitalWrite (3, LOW);\n    }\n    {\n      digitalWrite (4, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 12)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (2, LOW);\n    }\n    {\n      digitalWrite (3, LOW);\n    }\n    {\n      digitalWrite (4, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 19)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (2, LOW);\n    }\n    {\n      digitalWrite (3, LOW);\n    }\n    {\n      digitalWrite (5, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 13)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (2, LOW);\n    }\n    {\n      digitalWrite (3, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 8)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (2, LOW);\n    }\n    {\n      digitalWrite (3, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 20)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (2, LOW);\n    }\n    {\n      digitalWrite (4, LOW);\n    }\n    {\n      digitalWrite (5, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 14)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (2, LOW);\n    }\n    {\n      digitalWrite (5, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 9)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (2, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 5)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (2, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 21)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (3, LOW);\n    }\n    {\n      digitalWrite (4, LOW);\n    }\n    {\n      digitalWrite (5, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 15)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (4, LOW);\n    }\n    {\n      digitalWrite (5, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 10)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (5, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 6)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 3)\n  {\n    {\n      digitalWrite (1, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 22)\n  {\n    {\n      digitalWrite (2, LOW);\n    }\n    {\n      digitalWrite (3, LOW);\n    }\n    {\n      digitalWrite (4, LOW);\n    }\n    {\n      digitalWrite (5, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 16)\n  {\n    {\n      digitalWrite (3, LOW);\n    }\n    {\n      digitalWrite (4, LOW);\n    }\n    {\n      digitalWrite (5, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 11)\n  {\n    {\n      digitalWrite (4, LOW);\n    }\n    {\n      digitalWrite (5, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 7)\n  {\n    {\n      digitalWrite (5, LOW);\n    }\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 4)\n  {\n    {\n      digitalWrite (6, LOW);\n    }\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse if (_fsm1_state == 2)\n  {\n    {\n      int Doorstate = digitalRead (1 + 2);\n      _fsm1_slot_1 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (2 + 3);\n      _fsm1_slot_2 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (3 + 4);\n      _fsm1_slot_3 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (4 + 5);\n      _fsm1_slot_4 = Doorstate;\n    }\n    {\n      int Doorstate = digitalRead (5 + 6);\n      _fsm1_slot_5 = Doorstate;\n    }\n    {\n      int State = digitalRead (1);\n      _fsm1_slot_6 = State;\n    }\n    {\n      int State = digitalRead (6);\n      _fsm1_slot_7 = State;\n    }\n    {\n      goto _fsm1_trans23;\n    }\n  }\nelse;\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl adjacent/2(int, int)</span>\n<span class=\"cm\">.decl connected/2(int, int)</span>\n<span class=\"cm\">.decl doorOpen/2(int, int)</span>\n<span class=\"cm\">.decl hasWindow/1(int)</span>\n<span class=\"cm\">.decl windowOpen/1(int)</span>\n<span class=\"cm\">adjacent(1, 2) :- .</span>\n<span class=\"cm\">adjacent(2, 3) :- .</span>\n<span class=\"cm\">adjacent(3, 4) :- .</span>\n<span class=\"cm\">adjacent(4, 5) :- .</span>\n<span class=\"cm\">adjacent(5, 6) :- .</span>\n<span class=\"cm\">connected(A, B) :- doorOpen(A, B).</span>\n<span class=\"cm\">connected(A, C) :- connected(A, B), connected(B, C), ArithComp (ArithNEQ &quot;A&quot; &quot;C&quot;).</span>\n<span class=\"cm\">connected(B, A) :- doorOpen(A, B).</span>\n<span class=\"cm\">doorOpen(A, B) :- _io_readDoor(A, B, HIGH).</span>\n<span class=\"cm\">hasWindow(1) :- .</span>\n<span class=\"cm\">hasWindow(6) :- .</span>\n<span class=\"cm\">windowOpen(R) :- _io_readWindow(R, HIGH).</span>\n<span class=\"cm\">#_io_heatingOff(O)@next :- connected(R, O), windowOpen(R).</span>\n<span class=\"cm\">#_io_heatingOff(R)@next :- windowOpen(R).</span>\n<span class=\"cm\">#_io_readDoor(A, B, _)@next :- adjacent(A, B).</span>\n<span class=\"cm\">#_io_readWindow(R, _)@next :- hasWindow(R).</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_readDoor&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_io_readWindow&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;adjacent&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;doorOpen&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;connected&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;hasWindow&quot;]</span>\n<span class=\"cm\">7: fromList [&quot;windowOpen&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n<span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">;</span>\n<span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">;</span>\n<span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">;</span>\n<span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">;</span>\n<span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">;</span>\n<span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">;</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n\n\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cm\">/* SETUP */</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n<span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">23</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nl\">_fsm1_trans23</span><span class=\"p\">:</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">           </span><span class=\"o\">&amp;&amp;</span>\n<span class=\"w\">           </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">             </span><span class=\"o\">&amp;&amp;</span>\n<span class=\"w\">             </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">               </span><span class=\"o\">&amp;&amp;</span>\n<span class=\"w\">               </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                 </span><span class=\"o\">&amp;&amp;</span>\n<span class=\"w\">                 </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                   </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">))</span>\n<span class=\"w\">                       </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">))))</span>\n<span class=\"w\">                  </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)))))</span>\n<span class=\"w\">                </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">))))))</span>\n<span class=\"w\">              </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)))))))</span>\n<span class=\"w\">            </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">))))))))</span>\n<span class=\"w\">          </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)))))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">23</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)))))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">17</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)))))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">18</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">))))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)))))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">19</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">))))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)))))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">20</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">))))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">14</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">                                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)))))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">22</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">                                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)))))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">21</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">))))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">16</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">))))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">15</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">))))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">))</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">17</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">18</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">19</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">20</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">14</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">21</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">15</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">22</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">16</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">else</span><span class=\"p\">;</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "heating/chain6-both-ends_compilable.dl",
      "template": "no runtime",
      "setting": "no FSM",
      "osource": "#readWindow(Room: int, State: int) = { int State = digitalRead(#Room); }\n#readDoor(RoomA: int, RoomB: int, Doorstate: int) = { int Doorstate = digitalRead(#RoomA + #RoomB); }\n#heatingOff(Room: int) = { digitalWrite(#Room, LOW);  }\n\n.decl hasWindow(int)\n.decl adjacent(int, int)\n.decl connected(int, int)\n.decl windowOpen(int)\n.decl doorOpen(int, int)\n\n% static example configuration\nhasWindow(1).\nhasWindow(6).\nadjacent(1, 2).\nadjacent(2, 3).\nadjacent(3, 4).\nadjacent(4, 5).\nadjacent(5, 6).\n% gathering world state\n#readWindow(R, ?)@next :- hasWindow(R).\n#readDoor(A, B, ?)@next :- adjacent(A, B).\n% deduce model using transitive closure\nwindowOpen(R) :- #readWindow(R, #HIGH).\ndoorOpen(A, B) :- #readDoor(A, B, #HIGH).\nconnected(A, B) :- doorOpen(A, B).\nconnected(B, A) :- doorOpen(A, B).\nconnected(A, C) :- connected(A, B), connected(B, C), A != C.\n% effects\n#heatingOff(R)@next :- windowOpen(R).\n#heatingOff(O)@next :- windowOpen(R), connected(R, O).\n",
      "tsource": "/*\nProgram 1:\n.decl adjacent/2(int, int)\n.decl connected/2(int, int)\n.decl doorOpen/2(int, int)\n.decl hasWindow/1(int)\n.decl windowOpen/1(int)\nadjacent(1, 2) :- .\nadjacent(2, 3) :- .\nadjacent(3, 4) :- .\nadjacent(4, 5) :- .\nadjacent(5, 6) :- .\nconnected(A, B) :- doorOpen(A, B).\nconnected(A, C) :- connected(A, B), connected(B, C), ArithComp (ArithNEQ \"A\" \"C\").\nconnected(B, A) :- doorOpen(A, B).\ndoorOpen(A, B) :- _io_readDoor(A, B, HIGH).\nhasWindow(1) :- .\nhasWindow(6) :- .\nwindowOpen(R) :- _io_readWindow(R, HIGH).\n#_io_heatingOff(O)@next :- connected(R, O), windowOpen(R).\n#_io_heatingOff(R)@next :- windowOpen(R).\n#_io_readDoor(A, B, _)@next :- adjacent(A, B).\n#_io_readWindow(R, _)@next :- hasWindow(R).\n\n\n\nStrata:\n1: fromList [\"_io_readDoor\"]\n2: fromList [\"_io_readWindow\"]\n3: fromList [\"adjacent\"]\n4: fromList [\"doorOpen\"]\n5: fromList [\"connected\"]\n6: fromList [\"hasWindow\"]\n7: fromList [\"windowOpen\"]\n*/\n\n#define _rulecount 4\n#define _bufsize 256\n\n\n\n#define _size__io_heatingOff 1 + sizeof(int)\n#define _size__io_readDoor 1 + sizeof(int)+ sizeof(int)+ sizeof(int)\n#define _size__io_readWindow 1 + sizeof(int)+ sizeof(int)\n#define _size_adjacent 1 + sizeof(int)+ sizeof(int)\n#define _size_connected 1 + sizeof(int)+ sizeof(int)\n#define _size_doorOpen 1 + sizeof(int)+ sizeof(int)\n#define _size_hasWindow 1 + sizeof(int)\n#define _size_windowOpen 1 + sizeof(int)\nbyte _sizes[9] =\n  { 0, _size__io_heatingOff, _size__io_readDoor, _size__io_readWindow,\n_size_adjacent, _size_connected, _size_doorOpen, _size_hasWindow, _size_windowOpen\n};\n\n#define _type__io_heatingOff 1\n#define _type__io_readDoor 2\n#define _type__io_readWindow 3\n#define _type_adjacent 4\n#define _type_connected 5\n#define _type_doorOpen 6\n#define _type_hasWindow 7\n#define _type_windowOpen 8\n\n\n\ninline int\n_io_heatingOff_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline int\n_io_readDoor_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline int\n_io_readDoor_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (int));\n}\n\ninline int\n_io_readDoor_3 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (int) + sizeof (int));\n}\n\ninline int\n_io_readWindow_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline int\n_io_readWindow_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (int));\n}\n\ninline int\nadjacent_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline int\nadjacent_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (int));\n}\n\ninline int\nconnected_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline int\nconnected_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (int));\n}\n\ninline int\ndoorOpen_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline int\ndoorOpen_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (int));\n}\n\ninline int\nhasWindow_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline int\nwindowOpen_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\nvoid\n_write_fact_int (byte *buf, byte type, int a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < int >(free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_int_int (byte *buf, byte type, int a1, int a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < int >(free, a1);\n  free = _write_data < int >(free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_int_int_int (byte *buf, byte type, int a1, int a2, int a3)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < int >(free, a1);\n  free = _write_data < int >(free, a2);\n  free = _write_data < int >(free, a3);\n  _advance_buff (buf, free);\n}\n\n#define write__io_heatingOff(buf, a1) _write_fact_int(buf, _type__io_heatingOff, a1)\n#define write__io_readDoor(buf, a1, a2, a3) _write_fact_int_int_int(buf, _type__io_readDoor, a1, a2, a3)\n#define write__io_readWindow(buf, a1, a2) _write_fact_int_int(buf, _type__io_readWindow, a1, a2)\n#define write_adjacent(buf, a1, a2) _write_fact_int_int(buf, _type_adjacent, a1, a2)\n#define write_connected(buf, a1, a2) _write_fact_int_int(buf, _type_connected, a1, a2)\n#define write_doorOpen(buf, a1, a2) _write_fact_int_int(buf, _type_doorOpen, a1, a2)\n#define write_hasWindow(buf, a1) _write_fact_int(buf, _type_hasWindow, a1)\n#define write_windowOpen(buf, a1) _write_fact_int(buf, _type_windowOpen, a1)\n\n#define _io_heatingOff_f(buf) _next__fact(buf,_type__io_heatingOff)\n\nbyte *\n_io_heatingOff_b (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type__io_heatingOff)) != 0)\n    {\n      if (_io_heatingOff_1 (buf) != a1)\n        {\n          buf = buf + _size__io_heatingOff;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_readDoor_fff(buf) _next__fact(buf,_type__io_readDoor)\n\nbyte *\n_io_readDoor_ffb (byte *buf, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_fbf (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_fbb (byte *buf, int a2, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_2 (buf) != a2 || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bff (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bfb (byte *buf, int a1, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bbf (byte *buf, int a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bbb (byte *buf, int a1, int a2, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_2 (buf) != a2\n          || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_readWindow_ff(buf) _next__fact(buf,_type__io_readWindow)\n\nbyte *\n_io_readWindow_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readWindow_bf (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_1 (buf) != a1)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readWindow_bb (byte *buf, int a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_1 (buf) != a1 || _io_readWindow_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define adjacent_ff(buf) _next__fact(buf,_type_adjacent)\n\nbyte *\nadjacent_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_2 (buf) != a2)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nadjacent_bf (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_1 (buf) != a1)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nadjacent_bb (byte *buf, int a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_1 (buf) != a1 || adjacent_2 (buf) != a2)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define connected_ff(buf) _next__fact(buf,_type_connected)\n\nbyte *\nconnected_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_2 (buf) != a2)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nconnected_bf (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_1 (buf) != a1)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nconnected_bb (byte *buf, int a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_1 (buf) != a1 || connected_2 (buf) != a2)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define doorOpen_ff(buf) _next__fact(buf,_type_doorOpen)\n\nbyte *\ndoorOpen_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_2 (buf) != a2)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\ndoorOpen_bf (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_1 (buf) != a1)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\ndoorOpen_bb (byte *buf, int a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_1 (buf) != a1 || doorOpen_2 (buf) != a2)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define hasWindow_f(buf) _next__fact(buf,_type_hasWindow)\n\nbyte *\nhasWindow_b (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type_hasWindow)) != 0)\n    {\n      if (hasWindow_1 (buf) != a1)\n        {\n          buf = buf + _size_hasWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define windowOpen_f(buf) _next__fact(buf,_type_windowOpen)\n\nbyte *\nwindowOpen_b (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type_windowOpen)) != 0)\n    {\n      if (windowOpen_1 (buf) != a1)\n        {\n          buf = buf + _size_windowOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: adjacent(1, 2)=>_curr_state :- .\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 1, 2) == 0)\n    {\n      write_adjacent (_curr_state, 1, 2);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_2: adjacent(2, 3)=>_curr_state :- .\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 2, 3) == 0)\n    {\n      write_adjacent (_curr_state, 2, 3);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_3: adjacent(3, 4)=>_curr_state :- .\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 3, 4) == 0)\n    {\n      write_adjacent (_curr_state, 3, 4);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_4: adjacent(4, 5)=>_curr_state :- .\nbool\n_deductive_rule_4 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 4, 5) == 0)\n    {\n      write_adjacent (_curr_state, 4, 5);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_5: adjacent(5, 6)=>_curr_state :- .\nbool\n_deductive_rule_5 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 5, 6) == 0)\n    {\n      write_adjacent (_curr_state, 5, 6);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_6: connected(A, B)=>_curr_state :- U{doorOpen(A, B)}.\nbool\n_deductive_rule_6 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = doorOpen_ff (_tuple1)) != 0)\n    {\n      int A = doorOpen_1 (_tuple1);\n      int B = doorOpen_2 (_tuple1);\n      if (connected_ff (_curr_state, A, B) == 0)\n        {\n          write_connected (_curr_state, A, B);\n          _added_facts = true;\n        }\n      _tuple1 += _size_doorOpen;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_7: connected(A, C)=>_curr_state :- U{} E{connected(A, B) connected(B, C) ArithComp (ArithNEQ \"A\" \"C\")}.\nbool\n_deductive_rule_7 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = connected_ff (_tuple1)) != 0)\n    {\n      int A = connected_1 (_tuple1);\n      int B = connected_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = connected_ff (_tuple2)) != 0)\n        {\n          int B = connected_1 (_tuple2);\n          int C = connected_2 (_tuple2);\n          if (A != C)\n            {\n              if (connected_ff (_curr_state, A, C) == 0)\n                {\n                  write_connected (_curr_state, A, C);\n                  _added_facts = true;\n                }\n              goto jmp1;\n            }\n          _tuple2 += _size_connected;\n        }\n      _tuple1 += _size_connected;\n    }\njmp1:;\n  return _added_facts;\n};\n\n// _deductive_rule_8: connected(B, A)=>_curr_state :- U{doorOpen(A, B)}.\nbool\n_deductive_rule_8 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = doorOpen_ff (_tuple1)) != 0)\n    {\n      int A = doorOpen_1 (_tuple1);\n      int B = doorOpen_2 (_tuple1);\n      if (connected_ff (_curr_state, B, A) == 0)\n        {\n          write_connected (_curr_state, B, A);\n          _added_facts = true;\n        }\n      _tuple1 += _size_doorOpen;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_9: doorOpen(A, B)=>_curr_state :- U{_io_readDoor(A, B, HIGH)}.\nbool\n_deductive_rule_9 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_readDoor_ffb (_tuple1, HIGH)) != 0)\n    {\n      int A = _io_readDoor_1 (_tuple1);\n      int B = _io_readDoor_2 (_tuple1);\n      if (doorOpen_ff (_curr_state, A, B) == 0)\n        {\n          write_doorOpen (_curr_state, A, B);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_readDoor;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_10: hasWindow(1)=>_curr_state :- .\nbool\n_deductive_rule_10 ()\n{\n  bool _added_facts = false;\n  if (hasWindow_b (_curr_state, 1) == 0)\n    {\n      write_hasWindow (_curr_state, 1);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_11: hasWindow(6)=>_curr_state :- .\nbool\n_deductive_rule_11 ()\n{\n  bool _added_facts = false;\n  if (hasWindow_b (_curr_state, 6) == 0)\n    {\n      write_hasWindow (_curr_state, 6);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_12: windowOpen(R)=>_curr_state :- U{_io_readWindow(R, HIGH)}.\nbool\n_deductive_rule_12 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_readWindow_fb (_tuple1, HIGH)) != 0)\n    {\n      int R = _io_readWindow_1 (_tuple1);\n      if (windowOpen_f (_curr_state, R) == 0)\n        {\n          write_windowOpen (_curr_state, R);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_readWindow;\n    }\n  return _added_facts;\n};\n\n// _inductive_rule_1: #_io_heatingOff(O)=>_next_state :- U{} E{connected(R, O) windowOpen(R)}.\nvoid\n_inductive_rule_1 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = connected_ff (_tuple1)) != 0)\n    {\n      int R = connected_1 (_tuple1);\n      int O = connected_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = windowOpen_f (_tuple2)) != 0)\n        {\n          int R = windowOpen_1 (_tuple2);\n          byte *_tuple3 = _next_state;\n          if ((_tuple3 = _io_heatingOff_b (_next_state, O)) == 0)\n            {\n              // make io call\n              digitalWrite (O, LOW);\n              write__io_heatingOff (_next_state, O);\n            }\n          goto jmp1;\n          _tuple2 += _size_windowOpen;\n        }\n      _tuple1 += _size_connected;\n    }\njmp1:;\n};\n\n// _inductive_rule_2: #_io_heatingOff(R)=>_next_state :- U{windowOpen(R)}.\nvoid\n_inductive_rule_2 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = windowOpen_f (_tuple1)) != 0)\n    {\n      int R = windowOpen_1 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_heatingOff_b (_next_state, R)) == 0)\n        {\n          // make io call\n          digitalWrite (R, LOW);\n          write__io_heatingOff (_next_state, R);\n        }\n      _tuple1 += _size_windowOpen;\n    }\n};\n\n// _inductive_rule_3: #_io_readDoor(A, B, _)=>_next_state :- U{adjacent(A, B)}.\nvoid\n_inductive_rule_3 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = adjacent_ff (_tuple1)) != 0)\n    {\n      int A = adjacent_1 (_tuple1);\n      int B = adjacent_2 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_readDoor_bbf (_next_state, A, B)) == 0)\n        {\n          // make io call\n          int Doorstate = digitalRead (A + B);\n          write__io_readDoor (_next_state, A, B, Doorstate);\n        }\n      _tuple1 += _size_adjacent;\n}};\n\n// _inductive_rule_4: #_io_readWindow(R, _)=>_next_state :- U{hasWindow(R)}.\nvoid\n_inductive_rule_4 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = hasWindow_f (_tuple1)) != 0)\n    {\n      int R = hasWindow_1 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_readWindow_bf (_next_state, R)) == 0)\n        {\n          // make io call\n          int State = digitalRead (R);\n          write__io_readWindow (_next_state, R, State);\n        }\n      _tuple1 += _size_hasWindow;\n}};\n\n/* SETUP */\n\n\n/* LOOP */\n\n\n\n// deductive phase\n\n\n// stratum 3\n_deductive_rule_1 ();\n_deductive_rule_2 ();\n_deductive_rule_3 ();\n_deductive_rule_4 ();\n_deductive_rule_5 ();\n// stratum 4\n_deductive_rule_9 ();\ndo\n  {                             // stratum 5\n    _added_facts = false;\n    _added_facts |= _deductive_rule_6 ();\n    _added_facts |= _deductive_rule_7 ();\n    _added_facts |= _deductive_rule_8 ();\n  }\nwhile (_added_facts);\n// stratum 6\n_deductive_rule_10 ();\n_deductive_rule_11 ();\n// stratum 7\n_deductive_rule_12 ();\n// inductive_phase\n_inductive_rule_1 ();\n_inductive_rule_2 ();\n_inductive_rule_3 ();\n_inductive_rule_4 ();\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl adjacent/2(int, int)</span>\n<span class=\"cm\">.decl connected/2(int, int)</span>\n<span class=\"cm\">.decl doorOpen/2(int, int)</span>\n<span class=\"cm\">.decl hasWindow/1(int)</span>\n<span class=\"cm\">.decl windowOpen/1(int)</span>\n<span class=\"cm\">adjacent(1, 2) :- .</span>\n<span class=\"cm\">adjacent(2, 3) :- .</span>\n<span class=\"cm\">adjacent(3, 4) :- .</span>\n<span class=\"cm\">adjacent(4, 5) :- .</span>\n<span class=\"cm\">adjacent(5, 6) :- .</span>\n<span class=\"cm\">connected(A, B) :- doorOpen(A, B).</span>\n<span class=\"cm\">connected(A, C) :- connected(A, B), connected(B, C), ArithComp (ArithNEQ &quot;A&quot; &quot;C&quot;).</span>\n<span class=\"cm\">connected(B, A) :- doorOpen(A, B).</span>\n<span class=\"cm\">doorOpen(A, B) :- _io_readDoor(A, B, HIGH).</span>\n<span class=\"cm\">hasWindow(1) :- .</span>\n<span class=\"cm\">hasWindow(6) :- .</span>\n<span class=\"cm\">windowOpen(R) :- _io_readWindow(R, HIGH).</span>\n<span class=\"cm\">#_io_heatingOff(O)@next :- connected(R, O), windowOpen(R).</span>\n<span class=\"cm\">#_io_heatingOff(R)@next :- windowOpen(R).</span>\n<span class=\"cm\">#_io_readDoor(A, B, _)@next :- adjacent(A, B).</span>\n<span class=\"cm\">#_io_readWindow(R, _)@next :- hasWindow(R).</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_readDoor&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_io_readWindow&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;adjacent&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;doorOpen&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;connected&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;hasWindow&quot;]</span>\n<span class=\"cm\">7: fromList [&quot;windowOpen&quot;]</span>\n<span class=\"cm\">*/</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n\n\n<span class=\"cp\">#define _size__io_heatingOff 1 + sizeof(int)</span>\n<span class=\"cp\">#define _size__io_readDoor 1 + sizeof(int)+ sizeof(int)+ sizeof(int)</span>\n<span class=\"cp\">#define _size__io_readWindow 1 + sizeof(int)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_adjacent 1 + sizeof(int)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_connected 1 + sizeof(int)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_doorOpen 1 + sizeof(int)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_hasWindow 1 + sizeof(int)</span>\n<span class=\"cp\">#define _size_windowOpen 1 + sizeof(int)</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">9</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_heatingOff</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">,</span>\n<span class=\"n\">_size_adjacent</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_hasWindow</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_heatingOff 1</span>\n<span class=\"cp\">#define _type__io_readDoor 2</span>\n<span class=\"cp\">#define _type__io_readWindow 3</span>\n<span class=\"cp\">#define _type_adjacent 4</span>\n<span class=\"cp\">#define _type_connected 5</span>\n<span class=\"cp\">#define _type_doorOpen 6</span>\n<span class=\"cp\">#define _type_hasWindow 7</span>\n<span class=\"cp\">#define _type_windowOpen 8</span>\n\n\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">_io_heatingOff_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">_io_readWindow_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">hasWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"nf\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_int_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nf\">_write_fact_int_int_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_heatingOff(buf, a1) _write_fact_int(buf, _type__io_heatingOff, a1)</span>\n<span class=\"cp\">#define write__io_readDoor(buf, a1, a2, a3) _write_fact_int_int_int(buf, _type__io_readDoor, a1, a2, a3)</span>\n<span class=\"cp\">#define write__io_readWindow(buf, a1, a2) _write_fact_int_int(buf, _type__io_readWindow, a1, a2)</span>\n<span class=\"cp\">#define write_adjacent(buf, a1, a2) _write_fact_int_int(buf, _type_adjacent, a1, a2)</span>\n<span class=\"cp\">#define write_connected(buf, a1, a2) _write_fact_int_int(buf, _type_connected, a1, a2)</span>\n<span class=\"cp\">#define write_doorOpen(buf, a1, a2) _write_fact_int_int(buf, _type_doorOpen, a1, a2)</span>\n<span class=\"cp\">#define write_hasWindow(buf, a1) _write_fact_int(buf, _type_hasWindow, a1)</span>\n<span class=\"cp\">#define write_windowOpen(buf, a1) _write_fact_int(buf, _type_windowOpen, a1)</span>\n\n<span class=\"cp\">#define _io_heatingOff_f(buf) _next__fact(buf,_type__io_heatingOff)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_heatingOff_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_heatingOff</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_heatingOff_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_heatingOff</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_readDoor_fff(buf) _next__fact(buf,_type__io_readDoor)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readDoor_ffb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readDoor_fbf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readDoor_fbb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readDoor_bff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readDoor_bfb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readDoor_bbf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readDoor_bbb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span>\n<span class=\"w\">          </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_readWindow_ff(buf) _next__fact(buf,_type__io_readWindow)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readWindow_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readWindow_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readWindow_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_io_readWindow_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define adjacent_ff(buf) _next__fact(buf,_type_adjacent)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">adjacent_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_adjacent</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">adjacent_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_adjacent</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_adjacent</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define connected_ff(buf) _next__fact(buf,_type_connected)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">connected_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_connected</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">connected_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_connected</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">connected_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_connected</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define doorOpen_ff(buf) _next__fact(buf,_type_doorOpen)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">doorOpen_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_doorOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">doorOpen_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_doorOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">doorOpen_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_doorOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define hasWindow_f(buf) _next__fact(buf,_type_hasWindow)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">hasWindow_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_hasWindow</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hasWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_hasWindow</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define windowOpen_f(buf) _next__fact(buf,_type_windowOpen)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">windowOpen_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type_windowOpen</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n<span class=\"c1\">// _deductive_rule_1: adjacent(1, 2)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_2: adjacent(2, 3)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_3: adjacent(3, 4)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_4: adjacent(4, 5)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_5: adjacent(5, 6)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">adjacent_bb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_adjacent</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_6: connected(A, B)=&gt;_curr_state :- U{doorOpen(A, B)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_connected</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_7: connected(A, C)=&gt;_curr_state :- U{} E{connected(A, B) connected(B, C) ArithComp (ArithNEQ &quot;A&quot; &quot;C&quot;)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">C</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">C</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">C</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"p\">{</span>\n<span class=\"w\">                  </span><span class=\"n\">write_connected</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">C</span><span class=\"p\">);</span>\n<span class=\"w\">                  </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">                </span><span class=\"p\">}</span>\n<span class=\"w\">              </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_8: connected(B, A)=&gt;_curr_state :- U{doorOpen(A, B)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_connected</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_9: doorOpen(A, B)=&gt;_curr_state :- U{_io_readDoor(A, B, HIGH)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_ffb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">doorOpen_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_doorOpen</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_10: hasWindow(1)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_10</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hasWindow_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_hasWindow</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_11: hasWindow(6)=&gt;_curr_state :- .</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_11</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">hasWindow_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"n\">write_hasWindow</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _deductive_rule_12: windowOpen(R)=&gt;_curr_state :- U{_io_readWindow(R, HIGH)}.</span>\n<span class=\"kr\">bool</span>\n<span class=\"nf\">_deductive_rule_12</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_fb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">HIGH</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">windowOpen_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">write_windowOpen</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">true</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"p\">;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_1: #_io_heatingOff(O)=&gt;_next_state :- U{} E{connected(R, O) windowOpen(R)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">O</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple2</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_heatingOff_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">O</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"p\">{</span>\n<span class=\"w\">              </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">              </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">O</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">              </span><span class=\"n\">write__io_heatingOff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">O</span><span class=\"p\">);</span>\n<span class=\"w\">            </span><span class=\"p\">}</span>\n<span class=\"w\">          </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">jmp1</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"nl\">jmp1</span><span class=\"p\">:;</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_2: #_io_heatingOff(R)=&gt;_next_state :- U{windowOpen(R)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_heatingOff_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">R</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_heatingOff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">};</span>\n\n<span class=\"c1\">// _inductive_rule_3: #_io_readDoor(A, B, _)=&gt;_next_state :- U{adjacent(A, B)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">adjacent_ff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_bbf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">A</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_readDoor</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">A</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">B</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_adjacent</span><span class=\"p\">;</span>\n<span class=\"p\">}};</span>\n\n<span class=\"c1\">// _inductive_rule_4: #_io_readWindow(R, _)=&gt;_next_state :- U{hasWindow(R)}.</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">hasWindow_f</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">hasWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_tuple1</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">_tuple2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_io_readWindow_bf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"c1\">// make io call</span>\n<span class=\"w\">          </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">R</span><span class=\"p\">);</span>\n<span class=\"w\">          </span><span class=\"n\">write__io_readWindow</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_next_state</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">R</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"n\">_tuple1</span><span class=\"w\"> </span><span class=\"o\">+=</span><span class=\"w\"> </span><span class=\"n\">_size_hasWindow</span><span class=\"p\">;</span>\n<span class=\"p\">}};</span>\n\n<span class=\"cm\">/* SETUP */</span>\n\n\n<span class=\"cm\">/* LOOP */</span>\n\n\n\n<span class=\"c1\">// deductive phase</span>\n\n\n<span class=\"c1\">// stratum 3</span>\n<span class=\"n\">_deductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_deductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_deductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_deductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_deductive_rule_5</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 4</span>\n<span class=\"n\">_deductive_rule_9</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"k\">do</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\">                             </span><span class=\"c1\">// stratum 5</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_6</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_7</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">|=</span><span class=\"w\"> </span><span class=\"n\">_deductive_rule_8</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_added_facts</span><span class=\"p\">);</span>\n<span class=\"c1\">// stratum 6</span>\n<span class=\"n\">_deductive_rule_10</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_deductive_rule_11</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// stratum 7</span>\n<span class=\"n\">_deductive_rule_12</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"c1\">// inductive_phase</span>\n<span class=\"n\">_inductive_rule_1</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_2</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_3</span><span class=\"w\"> </span><span class=\"p\">();</span>\n<span class=\"n\">_inductive_rule_4</span><span class=\"w\"> </span><span class=\"p\">();</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "heating/chain6-both-ends_compilable.dl",
      "template": "arduino",
      "setting": "normal",
      "osource": "#readWindow(Room: int, State: int) = { int State = digitalRead(#Room); }\n#readDoor(RoomA: int, RoomB: int, Doorstate: int) = { int Doorstate = digitalRead(#RoomA + #RoomB); }\n#heatingOff(Room: int) = { digitalWrite(#Room, LOW);  }\n\n.decl hasWindow(int)\n.decl adjacent(int, int)\n.decl connected(int, int)\n.decl windowOpen(int)\n.decl doorOpen(int, int)\n\n% static example configuration\nhasWindow(1).\nhasWindow(6).\nadjacent(1, 2).\nadjacent(2, 3).\nadjacent(3, 4).\nadjacent(4, 5).\nadjacent(5, 6).\n% gathering world state\n#readWindow(R, ?)@next :- hasWindow(R).\n#readDoor(A, B, ?)@next :- adjacent(A, B).\n% deduce model using transitive closure\nwindowOpen(R) :- #readWindow(R, #HIGH).\ndoorOpen(A, B) :- #readDoor(A, B, #HIGH).\nconnected(A, B) :- doorOpen(A, B).\nconnected(B, A) :- doorOpen(A, B).\nconnected(A, C) :- connected(A, B), connected(B, C), A != C.\n% effects\n#heatingOff(R)@next :- windowOpen(R).\n#heatingOff(O)@next :- windowOpen(R), connected(R, O).\n",
      "tsource": "/*\nProgram 1:\n\n\n\nProgram 2:\n.decl adjacent/2(int, int)\n.decl connected/2(int, int)\n.decl doorOpen/2(int, int)\n.decl hasWindow/1(int)\n.decl windowOpen/1(int)\nadjacent(1, 2) :- .\nadjacent(2, 3) :- .\nadjacent(3, 4) :- .\nadjacent(4, 5) :- .\nadjacent(5, 6) :- .\nconnected(A, B) :- doorOpen(A, B).\nconnected(A, C) :- connected(A, B), connected(B, C), ArithComp (ArithNEQ \"A\" \"C\").\nconnected(B, A) :- doorOpen(A, B).\ndoorOpen(A, B) :- _io_readDoor(A, B, HIGH).\nhasWindow(1) :- .\nhasWindow(6) :- .\nwindowOpen(R) :- _io_readWindow(R, HIGH).\n#_io_heatingOff(O)@next :- connected(R, O), windowOpen(R).\n#_io_heatingOff(R)@next :- windowOpen(R).\n#_io_readDoor(A, B, _)@next :- adjacent(A, B).\n#_io_readWindow(R, _)@next :- hasWindow(R).\n\n\n\nStrata:\n1: fromList [\"_io_readDoor\"]\n2: fromList [\"_io_readWindow\"]\n3: fromList [\"adjacent\"]\n4: fromList [\"doorOpen\"]\n5: fromList [\"connected\"]\n6: fromList [\"hasWindow\"]\n7: fromList [\"windowOpen\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 0\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\nbyte _fsm1_state = 1;\nint _fsm1_slot_1;\nint _fsm1_slot_2;\nint _fsm1_slot_3;\nint _fsm1_slot_4;\nint _fsm1_slot_5;\nint _fsm1_slot_6;\nint _fsm1_slot_7;\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n\nbyte _sizes[1] = { 0 };\n\n\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\n\n\n\n\n\n\n\n/*\nProgram Redux:\n\n*/\n\n\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n  if (_fsm1_state == 1)\n    {\n      {\n      _fsm1_trans1:\n        if (true)\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 23)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (2, LOW);\n      }\n      {\n        digitalWrite (3, LOW);\n      }\n      {\n        digitalWrite (4, LOW);\n      }\n      {\n        digitalWrite (5, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n      _fsm1_trans23:\n        if (((HIGH == _fsm1_slot_1)\n             &&\n             (((HIGH == _fsm1_slot_2)\n               &&\n               (((HIGH == _fsm1_slot_3)\n                 &&\n                 (((HIGH == _fsm1_slot_4)\n                   &&\n                   (((HIGH == _fsm1_slot_5)\n                     && (((HIGH == _fsm1_slot_6) && (HIGH != _fsm1_slot_7))\n                         || ((HIGH == _fsm1_slot_7)\n                             && (HIGH != _fsm1_slot_6))))\n                    || ((HIGH == _fsm1_slot_6)\n                        && ((HIGH == _fsm1_slot_7)\n                            && (HIGH != _fsm1_slot_5)))))\n                  || ((HIGH == _fsm1_slot_5)\n                      && ((HIGH == _fsm1_slot_6)\n                          && ((HIGH == _fsm1_slot_7)\n                              && (HIGH != _fsm1_slot_4))))))\n                || ((HIGH == _fsm1_slot_4)\n                    && ((HIGH == _fsm1_slot_5)\n                        && ((HIGH == _fsm1_slot_6)\n                            && ((HIGH == _fsm1_slot_7)\n                                && (HIGH != _fsm1_slot_3)))))))\n              || ((HIGH == _fsm1_slot_3)\n                  && ((HIGH == _fsm1_slot_4)\n                      && ((HIGH == _fsm1_slot_5)\n                          && ((HIGH == _fsm1_slot_6)\n                              && ((HIGH == _fsm1_slot_7)\n                                  && (HIGH != _fsm1_slot_2))))))))\n            || ((HIGH == _fsm1_slot_2)\n                && ((HIGH == _fsm1_slot_3)\n                    && ((HIGH == _fsm1_slot_4)\n                        && ((HIGH == _fsm1_slot_5)\n                            && ((HIGH == _fsm1_slot_6)\n                                && (HIGH == _fsm1_slot_7)))))))\n          {\n            _fsm1_state = 23;\n          }\n        else\n          if ((HIGH == _fsm1_slot_1)\n              && ((HIGH == _fsm1_slot_2)\n                  && ((HIGH == _fsm1_slot_3)\n                      && ((HIGH == _fsm1_slot_4)\n                          && ((HIGH == _fsm1_slot_6)\n                              && ((HIGH != _fsm1_slot_5)\n                                  && (HIGH != _fsm1_slot_7)))))))\n          {\n            _fsm1_state = 17;\n          }\n        else\n          if ((HIGH == _fsm1_slot_1)\n              && ((HIGH == _fsm1_slot_2)\n                  && ((HIGH == _fsm1_slot_3)\n                      && ((HIGH == _fsm1_slot_6)\n                          && ((HIGH == _fsm1_slot_7)\n                              && ((HIGH != _fsm1_slot_4)\n                                  && (HIGH != _fsm1_slot_5)))))))\n          {\n            _fsm1_state = 18;\n          }\n        else\n          if ((HIGH == _fsm1_slot_1)\n              && ((HIGH == _fsm1_slot_2)\n                  && ((HIGH == _fsm1_slot_3)\n                      && ((HIGH == _fsm1_slot_6)\n                          && ((HIGH != _fsm1_slot_4)\n                              && (HIGH != _fsm1_slot_7))))))\n          {\n            _fsm1_state = 12;\n          }\n        else\n          if ((HIGH == _fsm1_slot_1)\n              && ((HIGH == _fsm1_slot_2)\n                  && ((HIGH == _fsm1_slot_5)\n                      && ((HIGH == _fsm1_slot_6)\n                          && ((HIGH == _fsm1_slot_7)\n                              && ((HIGH != _fsm1_slot_3)\n                                  && (HIGH != _fsm1_slot_4)))))))\n          {\n            _fsm1_state = 19;\n          }\n        else\n          if ((HIGH == _fsm1_slot_1)\n              && ((HIGH == _fsm1_slot_2)\n                  && ((HIGH == _fsm1_slot_6)\n                      && ((HIGH == _fsm1_slot_7)\n                          && ((HIGH != _fsm1_slot_3)\n                              && (HIGH != _fsm1_slot_5))))))\n          {\n            _fsm1_state = 13;\n          }\n        else\n          if ((HIGH == _fsm1_slot_1)\n              && ((HIGH == _fsm1_slot_2)\n                  && ((HIGH == _fsm1_slot_6)\n                      && ((HIGH != _fsm1_slot_3) && (HIGH != _fsm1_slot_7)))))\n          {\n            _fsm1_state = 8;\n          }\n        else\n          if ((HIGH == _fsm1_slot_1)\n              && ((HIGH == _fsm1_slot_4)\n                  && ((HIGH == _fsm1_slot_5)\n                      && ((HIGH == _fsm1_slot_6)\n                          && ((HIGH == _fsm1_slot_7)\n                              && ((HIGH != _fsm1_slot_2)\n                                  && (HIGH != _fsm1_slot_3)))))))\n          {\n            _fsm1_state = 20;\n          }\n        else\n          if ((HIGH == _fsm1_slot_1)\n              && ((HIGH == _fsm1_slot_5)\n                  && ((HIGH == _fsm1_slot_6)\n                      && ((HIGH == _fsm1_slot_7)\n                          && ((HIGH != _fsm1_slot_2)\n                              && (HIGH != _fsm1_slot_4))))))\n          {\n            _fsm1_state = 14;\n          }\n        else\n          if ((HIGH == _fsm1_slot_1)\n              && ((HIGH == _fsm1_slot_6)\n                  && ((HIGH == _fsm1_slot_7)\n                      && ((HIGH != _fsm1_slot_2) && (HIGH != _fsm1_slot_5)))))\n          {\n            _fsm1_state = 9;\n          }\n        else\n          if ((HIGH == _fsm1_slot_1)\n              && ((HIGH == _fsm1_slot_6)\n                  && ((HIGH != _fsm1_slot_2) && (HIGH != _fsm1_slot_7))))\n          {\n            _fsm1_state = 5;\n          }\n        else\n          if ((HIGH == _fsm1_slot_2)\n              && ((HIGH == _fsm1_slot_3)\n                  && ((HIGH == _fsm1_slot_4)\n                      && ((HIGH == _fsm1_slot_5)\n                          && ((HIGH == _fsm1_slot_7)\n                              && ((HIGH != _fsm1_slot_1)\n                                  && (HIGH != _fsm1_slot_6)))))))\n          {\n            _fsm1_state = 22;\n          }\n        else\n          if ((HIGH == _fsm1_slot_3)\n              && ((HIGH == _fsm1_slot_4)\n                  && ((HIGH == _fsm1_slot_5)\n                      && ((HIGH == _fsm1_slot_6)\n                          && ((HIGH == _fsm1_slot_7)\n                              && ((HIGH != _fsm1_slot_1)\n                                  && (HIGH != _fsm1_slot_2)))))))\n          {\n            _fsm1_state = 21;\n          }\n        else\n          if ((HIGH == _fsm1_slot_3)\n              && ((HIGH == _fsm1_slot_4)\n                  && ((HIGH == _fsm1_slot_5)\n                      && ((HIGH == _fsm1_slot_7)\n                          && ((HIGH != _fsm1_slot_2)\n                              && (HIGH != _fsm1_slot_6))))))\n          {\n            _fsm1_state = 16;\n          }\n        else\n          if ((HIGH == _fsm1_slot_4)\n              && ((HIGH == _fsm1_slot_5)\n                  && ((HIGH == _fsm1_slot_6)\n                      && ((HIGH == _fsm1_slot_7)\n                          && ((HIGH != _fsm1_slot_1)\n                              && (HIGH != _fsm1_slot_3))))))\n          {\n            _fsm1_state = 15;\n          }\n        else\n          if ((HIGH == _fsm1_slot_4)\n              && ((HIGH == _fsm1_slot_5)\n                  && ((HIGH == _fsm1_slot_7)\n                      && ((HIGH != _fsm1_slot_3) && (HIGH != _fsm1_slot_6)))))\n          {\n            _fsm1_state = 11;\n          }\n        else\n          if ((HIGH == _fsm1_slot_5)\n              && ((HIGH == _fsm1_slot_6)\n                  && ((HIGH == _fsm1_slot_7)\n                      && ((HIGH != _fsm1_slot_1) && (HIGH != _fsm1_slot_4)))))\n          {\n            _fsm1_state = 10;\n          }\n        else\n          if ((HIGH == _fsm1_slot_5)\n              && ((HIGH == _fsm1_slot_7)\n                  && ((HIGH != _fsm1_slot_4) && (HIGH != _fsm1_slot_6))))\n          {\n            _fsm1_state = 7;\n          }\n        else\n          if ((HIGH == _fsm1_slot_6)\n              && ((HIGH == _fsm1_slot_7)\n                  && ((HIGH != _fsm1_slot_1) && (HIGH != _fsm1_slot_5))))\n          {\n            _fsm1_state = 6;\n          }\n        else\n          if ((HIGH == _fsm1_slot_6)\n              && ((HIGH != _fsm1_slot_1) && (HIGH != _fsm1_slot_7)))\n          {\n            _fsm1_state = 3;\n          }\n        else\n          if ((HIGH == _fsm1_slot_7)\n              && ((HIGH != _fsm1_slot_5) && (HIGH != _fsm1_slot_6)))\n          {\n            _fsm1_state = 4;\n          }\n        else if ((HIGH != _fsm1_slot_6) && (HIGH != _fsm1_slot_7))\n          {\n            _fsm1_state = 2;\n          }\n        else;\n      }\n    }\n  else if (_fsm1_state == 17)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (2, LOW);\n      }\n      {\n        digitalWrite (3, LOW);\n      }\n      {\n        digitalWrite (4, LOW);\n      }\n      {\n        digitalWrite (5, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 18)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (2, LOW);\n      }\n      {\n        digitalWrite (3, LOW);\n      }\n      {\n        digitalWrite (4, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 12)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (2, LOW);\n      }\n      {\n        digitalWrite (3, LOW);\n      }\n      {\n        digitalWrite (4, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 19)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (2, LOW);\n      }\n      {\n        digitalWrite (3, LOW);\n      }\n      {\n        digitalWrite (5, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 13)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (2, LOW);\n      }\n      {\n        digitalWrite (3, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 8)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (2, LOW);\n      }\n      {\n        digitalWrite (3, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 20)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (2, LOW);\n      }\n      {\n        digitalWrite (4, LOW);\n      }\n      {\n        digitalWrite (5, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 14)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (2, LOW);\n      }\n      {\n        digitalWrite (5, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 9)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (2, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 5)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (2, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 21)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (3, LOW);\n      }\n      {\n        digitalWrite (4, LOW);\n      }\n      {\n        digitalWrite (5, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 15)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (4, LOW);\n      }\n      {\n        digitalWrite (5, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 10)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (5, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 6)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 3)\n    {\n      {\n        digitalWrite (1, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 22)\n    {\n      {\n        digitalWrite (2, LOW);\n      }\n      {\n        digitalWrite (3, LOW);\n      }\n      {\n        digitalWrite (4, LOW);\n      }\n      {\n        digitalWrite (5, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 16)\n    {\n      {\n        digitalWrite (3, LOW);\n      }\n      {\n        digitalWrite (4, LOW);\n      }\n      {\n        digitalWrite (5, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 11)\n    {\n      {\n        digitalWrite (4, LOW);\n      }\n      {\n        digitalWrite (5, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 7)\n    {\n      {\n        digitalWrite (5, LOW);\n      }\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 4)\n    {\n      {\n        digitalWrite (6, LOW);\n      }\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else if (_fsm1_state == 2)\n    {\n      {\n        int Doorstate = digitalRead (1 + 2);\n        _fsm1_slot_1 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (2 + 3);\n        _fsm1_slot_2 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (3 + 4);\n        _fsm1_slot_3 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (4 + 5);\n        _fsm1_slot_4 = Doorstate;\n      }\n      {\n        int Doorstate = digitalRead (5 + 6);\n        _fsm1_slot_5 = Doorstate;\n      }\n      {\n        int State = digitalRead (1);\n        _fsm1_slot_6 = State;\n      }\n      {\n        int State = digitalRead (6);\n        _fsm1_slot_7 = State;\n      }\n      {\n        goto _fsm1_trans23;\n      }\n    }\n  else;\n\n\n#if _rulecount > 0\n\n\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n\n\n\n<span class=\"cm\">Program 2:</span>\n<span class=\"cm\">.decl adjacent/2(int, int)</span>\n<span class=\"cm\">.decl connected/2(int, int)</span>\n<span class=\"cm\">.decl doorOpen/2(int, int)</span>\n<span class=\"cm\">.decl hasWindow/1(int)</span>\n<span class=\"cm\">.decl windowOpen/1(int)</span>\n<span class=\"cm\">adjacent(1, 2) :- .</span>\n<span class=\"cm\">adjacent(2, 3) :- .</span>\n<span class=\"cm\">adjacent(3, 4) :- .</span>\n<span class=\"cm\">adjacent(4, 5) :- .</span>\n<span class=\"cm\">adjacent(5, 6) :- .</span>\n<span class=\"cm\">connected(A, B) :- doorOpen(A, B).</span>\n<span class=\"cm\">connected(A, C) :- connected(A, B), connected(B, C), ArithComp (ArithNEQ &quot;A&quot; &quot;C&quot;).</span>\n<span class=\"cm\">connected(B, A) :- doorOpen(A, B).</span>\n<span class=\"cm\">doorOpen(A, B) :- _io_readDoor(A, B, HIGH).</span>\n<span class=\"cm\">hasWindow(1) :- .</span>\n<span class=\"cm\">hasWindow(6) :- .</span>\n<span class=\"cm\">windowOpen(R) :- _io_readWindow(R, HIGH).</span>\n<span class=\"cm\">#_io_heatingOff(O)@next :- connected(R, O), windowOpen(R).</span>\n<span class=\"cm\">#_io_heatingOff(R)@next :- windowOpen(R).</span>\n<span class=\"cm\">#_io_readDoor(A, B, _)@next :- adjacent(A, B).</span>\n<span class=\"cm\">#_io_readWindow(R, _)@next :- hasWindow(R).</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_readDoor&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_io_readWindow&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;adjacent&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;doorOpen&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;connected&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;hasWindow&quot;]</span>\n<span class=\"cm\">7: fromList [&quot;windowOpen&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 0</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">;</span>\n<span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">;</span>\n<span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">;</span>\n<span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">;</span>\n<span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">;</span>\n<span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">;</span>\n<span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">;</span>\n<span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">;</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"w\"> </span><span class=\"p\">};</span>\n\n\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n\n\n\n\n\n\n\n<span class=\"cm\">/*</span>\n<span class=\"cm\">Program Redux:</span>\n\n<span class=\"cm\">*/</span>\n\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">setup</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#endif</span>\n\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"nb\">loop</span><span class=\"w\"> </span><span class=\"p\">()</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans1</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">23</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"nl\">_fsm1_trans23</span><span class=\"p\">:</span>\n<span class=\"w\">        </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">             </span><span class=\"o\">&amp;&amp;</span>\n<span class=\"w\">             </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">               </span><span class=\"o\">&amp;&amp;</span>\n<span class=\"w\">               </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                 </span><span class=\"o\">&amp;&amp;</span>\n<span class=\"w\">                 </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                   </span><span class=\"o\">&amp;&amp;</span>\n<span class=\"w\">                   </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                     </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">))</span>\n<span class=\"w\">                         </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                             </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">))))</span>\n<span class=\"w\">                    </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)))))</span>\n<span class=\"w\">                  </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">))))))</span>\n<span class=\"w\">                </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)))))))</span>\n<span class=\"w\">              </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">))))))))</span>\n<span class=\"w\">            </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                        </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                            </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                                </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)))))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">23</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)))))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">17</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)))))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">18</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">))))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)))))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">19</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">))))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)))))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">20</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">))))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">14</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">                                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)))))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">22</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">                                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)))))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">21</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_2</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">))))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">16</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                          </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span>\n<span class=\"w\">                              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">))))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">15</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_3</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                      </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_4</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">                  </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">))))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span>\n<span class=\"w\">          </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">)</span>\n<span class=\"w\">              </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_5</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_6</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">&amp;&amp;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">HIGH</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">_fsm1_slot_7</span><span class=\"p\">))</span>\n<span class=\"w\">          </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"p\">}</span>\n<span class=\"w\">        </span><span class=\"k\">else</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">17</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">18</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">12</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">19</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">13</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">8</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">20</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">14</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">9</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">21</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">15</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">22</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">16</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">11</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">7</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nf\">digitalWrite</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">LOW</span><span class=\"p\">);</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"w\"> </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_fsm1_state</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">2</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_1</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_3</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">4</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">5</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_4</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_5</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">Doorstate</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_6</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">digitalRead</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"n\">_fsm1_slot_7</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">State</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"k\">goto</span><span class=\"w\"> </span><span class=\"n\">_fsm1_trans23</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">else</span><span class=\"p\">;</span>\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n\n\n\n\n<span class=\"w\">  </span><span class=\"c1\">// Buffer clearing and swapping</span>\n<span class=\"w\">  </span><span class=\"n\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_curr_state</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_temp</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_temp</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n<span class=\"p\">}</span>\n</pre></div>\n",
      "error": ""
    },
    {
      "filename": "heating/chain6-both-ends_compilable.dl",
      "template": "arduino",
      "setting": "no FSM",
      "osource": "#readWindow(Room: int, State: int) = { int State = digitalRead(#Room); }\n#readDoor(RoomA: int, RoomB: int, Doorstate: int) = { int Doorstate = digitalRead(#RoomA + #RoomB); }\n#heatingOff(Room: int) = { digitalWrite(#Room, LOW);  }\n\n.decl hasWindow(int)\n.decl adjacent(int, int)\n.decl connected(int, int)\n.decl windowOpen(int)\n.decl doorOpen(int, int)\n\n% static example configuration\nhasWindow(1).\nhasWindow(6).\nadjacent(1, 2).\nadjacent(2, 3).\nadjacent(3, 4).\nadjacent(4, 5).\nadjacent(5, 6).\n% gathering world state\n#readWindow(R, ?)@next :- hasWindow(R).\n#readDoor(A, B, ?)@next :- adjacent(A, B).\n% deduce model using transitive closure\nwindowOpen(R) :- #readWindow(R, #HIGH).\ndoorOpen(A, B) :- #readDoor(A, B, #HIGH).\nconnected(A, B) :- doorOpen(A, B).\nconnected(B, A) :- doorOpen(A, B).\nconnected(A, C) :- connected(A, B), connected(B, C), A != C.\n% effects\n#heatingOff(R)@next :- windowOpen(R).\n#heatingOff(O)@next :- windowOpen(R), connected(R, O).\n",
      "tsource": "/*\nProgram 1:\n.decl adjacent/2(int, int)\n.decl connected/2(int, int)\n.decl doorOpen/2(int, int)\n.decl hasWindow/1(int)\n.decl windowOpen/1(int)\nadjacent(1, 2) :- .\nadjacent(2, 3) :- .\nadjacent(3, 4) :- .\nadjacent(4, 5) :- .\nadjacent(5, 6) :- .\nconnected(A, B) :- doorOpen(A, B).\nconnected(A, C) :- connected(A, B), connected(B, C), ArithComp (ArithNEQ \"A\" \"C\").\nconnected(B, A) :- doorOpen(A, B).\ndoorOpen(A, B) :- _io_readDoor(A, B, HIGH).\nhasWindow(1) :- .\nhasWindow(6) :- .\nwindowOpen(R) :- _io_readWindow(R, HIGH).\n#_io_heatingOff(O)@next :- connected(R, O), windowOpen(R).\n#_io_heatingOff(R)@next :- windowOpen(R).\n#_io_readDoor(A, B, _)@next :- adjacent(A, B).\n#_io_readWindow(R, _)@next :- hasWindow(R).\n\n\n\nStrata:\n1: fromList [\"_io_readDoor\"]\n2: fromList [\"_io_readWindow\"]\n3: fromList [\"adjacent\"]\n4: fromList [\"doorOpen\"]\n5: fromList [\"connected\"]\n6: fromList [\"hasWindow\"]\n7: fromList [\"windowOpen\"]\n*/\n#include \"Arduino.h\"\n\n#define _rulecount 4\n#define _bufsize 256\n\n#if _rulecount > 0\nstatic byte _buffer0[_bufsize];\nstatic byte _buffer1[_bufsize];\nstatic byte *_curr_state = 0;\nstatic byte *_curr_free = 0;\nstatic byte *_next_state = 0;\nstatic byte *_next_free = 0;\nstatic bool _added_facts = false;\n#endif\n\n\n\n#if _rulecount > 0\nvoid\n_advance_buff (byte *src, byte *new_free)\n{\n  if (src == _curr_state)\n    _curr_free = new_free;\n  if (src == _next_state)\n    _next_free = new_free;\n  *new_free = 0;\n}\n\ninline void\n_clear_buff (byte *src)\n{\n  _advance_buff (src, src);\n}\n\n#define _size__io_heatingOff 1 + sizeof(int)\n#define _size__io_readDoor 1 + sizeof(int)+ sizeof(int)+ sizeof(int)\n#define _size__io_readWindow 1 + sizeof(int)+ sizeof(int)\n#define _size_adjacent 1 + sizeof(int)+ sizeof(int)\n#define _size_connected 1 + sizeof(int)+ sizeof(int)\n#define _size_doorOpen 1 + sizeof(int)+ sizeof(int)\n#define _size_hasWindow 1 + sizeof(int)\n#define _size_windowOpen 1 + sizeof(int)\nbyte _sizes[9] =\n  { 0, _size__io_heatingOff, _size__io_readDoor, _size__io_readWindow,\n_size_adjacent, _size_connected, _size_doorOpen, _size_hasWindow, _size_windowOpen\n};\n\n#define _type__io_heatingOff 1\n#define _type__io_readDoor 2\n#define _type__io_readWindow 3\n#define _type_adjacent 4\n#define _type_connected 5\n#define _type_doorOpen 6\n#define _type_hasWindow 7\n#define _type_windowOpen 8\n#endif\n\n\n\n#if _rulecount > 0\nbyte *\n_next__free (byte *buf)\n{\n  if (buf == _curr_state)\n    return _curr_free;\n  if (buf == _next_state)\n    return _next_free;\n  return 0;\n}\n\nbyte *\n_next__fact (byte *buf, byte type)\n{\n  while (true)\n    {\n      if (*buf == type)\n        return buf;\n      if (*buf == 0)\n        return 0;\n      buf = buf + _sizes[*buf];\n    }\n}\n\ntemplate < typename T > byte * _write_data (byte *buf, T value)\n{\n  ((T *) buf)[0] = value;\n  return &buf[sizeof (T)];\n}\n\ntemplate < typename T > T _read_data (byte *buf)\n{\n  return *((T *) buf);\n}\n\ninline int\n_io_heatingOff_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline int\n_io_readDoor_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline int\n_io_readDoor_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (int));\n}\n\ninline int\n_io_readDoor_3 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (int) + sizeof (int));\n}\n\ninline int\n_io_readWindow_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline int\n_io_readWindow_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (int));\n}\n\ninline int\nadjacent_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline int\nadjacent_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (int));\n}\n\ninline int\nconnected_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline int\nconnected_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (int));\n}\n\ninline int\ndoorOpen_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline int\ndoorOpen_2 (byte *buf)\n{\n  return _read_data < int >(buf + 1 + sizeof (int));\n}\n\ninline int\nhasWindow_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\ninline int\nwindowOpen_1 (byte *buf)\n{\n  return _read_data < int >(buf + 1);\n}\n\nvoid\n_write_fact_int (byte *buf, byte type, int a1)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < int >(free, a1);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_int_int (byte *buf, byte type, int a1, int a2)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < int >(free, a1);\n  free = _write_data < int >(free, a2);\n  _advance_buff (buf, free);\n}\n\nvoid\n_write_fact_int_int_int (byte *buf, byte type, int a1, int a2, int a3)\n{\n  byte *free = _next__free (buf);\n  free = _write_data < byte > (free, type);\n  free = _write_data < int >(free, a1);\n  free = _write_data < int >(free, a2);\n  free = _write_data < int >(free, a3);\n  _advance_buff (buf, free);\n}\n\n#define write__io_heatingOff(buf, a1) _write_fact_int(buf, _type__io_heatingOff, a1)\n#define write__io_readDoor(buf, a1, a2, a3) _write_fact_int_int_int(buf, _type__io_readDoor, a1, a2, a3)\n#define write__io_readWindow(buf, a1, a2) _write_fact_int_int(buf, _type__io_readWindow, a1, a2)\n#define write_adjacent(buf, a1, a2) _write_fact_int_int(buf, _type_adjacent, a1, a2)\n#define write_connected(buf, a1, a2) _write_fact_int_int(buf, _type_connected, a1, a2)\n#define write_doorOpen(buf, a1, a2) _write_fact_int_int(buf, _type_doorOpen, a1, a2)\n#define write_hasWindow(buf, a1) _write_fact_int(buf, _type_hasWindow, a1)\n#define write_windowOpen(buf, a1) _write_fact_int(buf, _type_windowOpen, a1)\n\n#define _io_heatingOff_f(buf) _next__fact(buf,_type__io_heatingOff)\n\nbyte *\n_io_heatingOff_b (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type__io_heatingOff)) != 0)\n    {\n      if (_io_heatingOff_1 (buf) != a1)\n        {\n          buf = buf + _size__io_heatingOff;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_readDoor_fff(buf) _next__fact(buf,_type__io_readDoor)\n\nbyte *\n_io_readDoor_ffb (byte *buf, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_fbf (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_fbb (byte *buf, int a2, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_2 (buf) != a2 || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bff (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bfb (byte *buf, int a1, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bbf (byte *buf, int a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readDoor_bbb (byte *buf, int a1, int a2, int a3)\n{\n  while ((buf = _next__fact (buf, _type__io_readDoor)) != 0)\n    {\n      if (_io_readDoor_1 (buf) != a1 || _io_readDoor_2 (buf) != a2\n          || _io_readDoor_3 (buf) != a3)\n        {\n          buf = buf + _size__io_readDoor;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define _io_readWindow_ff(buf) _next__fact(buf,_type__io_readWindow)\n\nbyte *\n_io_readWindow_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readWindow_bf (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_1 (buf) != a1)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\n_io_readWindow_bb (byte *buf, int a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type__io_readWindow)) != 0)\n    {\n      if (_io_readWindow_1 (buf) != a1 || _io_readWindow_2 (buf) != a2)\n        {\n          buf = buf + _size__io_readWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define adjacent_ff(buf) _next__fact(buf,_type_adjacent)\n\nbyte *\nadjacent_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_2 (buf) != a2)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nadjacent_bf (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_1 (buf) != a1)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nadjacent_bb (byte *buf, int a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type_adjacent)) != 0)\n    {\n      if (adjacent_1 (buf) != a1 || adjacent_2 (buf) != a2)\n        {\n          buf = buf + _size_adjacent;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define connected_ff(buf) _next__fact(buf,_type_connected)\n\nbyte *\nconnected_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_2 (buf) != a2)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nconnected_bf (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_1 (buf) != a1)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\nconnected_bb (byte *buf, int a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type_connected)) != 0)\n    {\n      if (connected_1 (buf) != a1 || connected_2 (buf) != a2)\n        {\n          buf = buf + _size_connected;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define doorOpen_ff(buf) _next__fact(buf,_type_doorOpen)\n\nbyte *\ndoorOpen_fb (byte *buf, int a2)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_2 (buf) != a2)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\ndoorOpen_bf (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_1 (buf) != a1)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\nbyte *\ndoorOpen_bb (byte *buf, int a1, int a2)\n{\n  while ((buf = _next__fact (buf, _type_doorOpen)) != 0)\n    {\n      if (doorOpen_1 (buf) != a1 || doorOpen_2 (buf) != a2)\n        {\n          buf = buf + _size_doorOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define hasWindow_f(buf) _next__fact(buf,_type_hasWindow)\n\nbyte *\nhasWindow_b (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type_hasWindow)) != 0)\n    {\n      if (hasWindow_1 (buf) != a1)\n        {\n          buf = buf + _size_hasWindow;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n#define windowOpen_f(buf) _next__fact(buf,_type_windowOpen)\n\nbyte *\nwindowOpen_b (byte *buf, int a1)\n{\n  while ((buf = _next__fact (buf, _type_windowOpen)) != 0)\n    {\n      if (windowOpen_1 (buf) != a1)\n        {\n          buf = buf + _size_windowOpen;\n          continue;\n        }\n      return buf;\n    }\n  return buf;\n}\n\n/*\nProgram Redux:\n\n*/\n\n// _deductive_rule_1: adjacent(1, 2)=>_curr_state :- .\nbool\n_deductive_rule_1 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 1, 2) == 0)\n    {\n      write_adjacent (_curr_state, 1, 2);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_2: adjacent(2, 3)=>_curr_state :- .\nbool\n_deductive_rule_2 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 2, 3) == 0)\n    {\n      write_adjacent (_curr_state, 2, 3);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_3: adjacent(3, 4)=>_curr_state :- .\nbool\n_deductive_rule_3 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 3, 4) == 0)\n    {\n      write_adjacent (_curr_state, 3, 4);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_4: adjacent(4, 5)=>_curr_state :- .\nbool\n_deductive_rule_4 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 4, 5) == 0)\n    {\n      write_adjacent (_curr_state, 4, 5);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_5: adjacent(5, 6)=>_curr_state :- .\nbool\n_deductive_rule_5 ()\n{\n  bool _added_facts = false;\n  if (adjacent_bb (_curr_state, 5, 6) == 0)\n    {\n      write_adjacent (_curr_state, 5, 6);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_6: connected(A, B)=>_curr_state :- U{doorOpen(A, B)}.\nbool\n_deductive_rule_6 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = doorOpen_ff (_tuple1)) != 0)\n    {\n      int A = doorOpen_1 (_tuple1);\n      int B = doorOpen_2 (_tuple1);\n      if (connected_ff (_curr_state, A, B) == 0)\n        {\n          write_connected (_curr_state, A, B);\n          _added_facts = true;\n        }\n      _tuple1 += _size_doorOpen;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_7: connected(A, C)=>_curr_state :- U{} E{connected(A, B) connected(B, C) ArithComp (ArithNEQ \"A\" \"C\")}.\nbool\n_deductive_rule_7 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = connected_ff (_tuple1)) != 0)\n    {\n      int A = connected_1 (_tuple1);\n      int B = connected_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = connected_ff (_tuple2)) != 0)\n        {\n          int B = connected_1 (_tuple2);\n          int C = connected_2 (_tuple2);\n          if (A != C)\n            {\n              if (connected_ff (_curr_state, A, C) == 0)\n                {\n                  write_connected (_curr_state, A, C);\n                  _added_facts = true;\n                }\n              goto jmp1;\n            }\n          _tuple2 += _size_connected;\n        }\n      _tuple1 += _size_connected;\n    }\njmp1:;\n  return _added_facts;\n};\n\n// _deductive_rule_8: connected(B, A)=>_curr_state :- U{doorOpen(A, B)}.\nbool\n_deductive_rule_8 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = doorOpen_ff (_tuple1)) != 0)\n    {\n      int A = doorOpen_1 (_tuple1);\n      int B = doorOpen_2 (_tuple1);\n      if (connected_ff (_curr_state, B, A) == 0)\n        {\n          write_connected (_curr_state, B, A);\n          _added_facts = true;\n        }\n      _tuple1 += _size_doorOpen;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_9: doorOpen(A, B)=>_curr_state :- U{_io_readDoor(A, B, HIGH)}.\nbool\n_deductive_rule_9 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_readDoor_ffb (_tuple1, HIGH)) != 0)\n    {\n      int A = _io_readDoor_1 (_tuple1);\n      int B = _io_readDoor_2 (_tuple1);\n      if (doorOpen_ff (_curr_state, A, B) == 0)\n        {\n          write_doorOpen (_curr_state, A, B);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_readDoor;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_10: hasWindow(1)=>_curr_state :- .\nbool\n_deductive_rule_10 ()\n{\n  bool _added_facts = false;\n  if (hasWindow_b (_curr_state, 1) == 0)\n    {\n      write_hasWindow (_curr_state, 1);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_11: hasWindow(6)=>_curr_state :- .\nbool\n_deductive_rule_11 ()\n{\n  bool _added_facts = false;\n  if (hasWindow_b (_curr_state, 6) == 0)\n    {\n      write_hasWindow (_curr_state, 6);\n      _added_facts = true;\n    }\n  return _added_facts;\n};\n\n// _deductive_rule_12: windowOpen(R)=>_curr_state :- U{_io_readWindow(R, HIGH)}.\nbool\n_deductive_rule_12 ()\n{\n  bool _added_facts = false;\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = _io_readWindow_fb (_tuple1, HIGH)) != 0)\n    {\n      int R = _io_readWindow_1 (_tuple1);\n      if (windowOpen_f (_curr_state, R) == 0)\n        {\n          write_windowOpen (_curr_state, R);\n          _added_facts = true;\n        }\n      _tuple1 += _size__io_readWindow;\n    }\n  return _added_facts;\n};\n\n// _inductive_rule_1: #_io_heatingOff(O)=>_next_state :- U{} E{connected(R, O) windowOpen(R)}.\nvoid\n_inductive_rule_1 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = connected_ff (_tuple1)) != 0)\n    {\n      int R = connected_1 (_tuple1);\n      int O = connected_2 (_tuple1);\n      byte *_tuple2 = _curr_state;\n      while ((_tuple2 = windowOpen_f (_tuple2)) != 0)\n        {\n          int R = windowOpen_1 (_tuple2);\n          byte *_tuple3 = _next_state;\n          if ((_tuple3 = _io_heatingOff_b (_next_state, O)) == 0)\n            {\n              // make io call\n              digitalWrite (O, LOW);\n              write__io_heatingOff (_next_state, O);\n            }\n          goto jmp1;\n          _tuple2 += _size_windowOpen;\n        }\n      _tuple1 += _size_connected;\n    }\njmp1:;\n};\n\n// _inductive_rule_2: #_io_heatingOff(R)=>_next_state :- U{windowOpen(R)}.\nvoid\n_inductive_rule_2 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = windowOpen_f (_tuple1)) != 0)\n    {\n      int R = windowOpen_1 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_heatingOff_b (_next_state, R)) == 0)\n        {\n          // make io call\n          digitalWrite (R, LOW);\n          write__io_heatingOff (_next_state, R);\n        }\n      _tuple1 += _size_windowOpen;\n    }\n};\n\n// _inductive_rule_3: #_io_readDoor(A, B, _)=>_next_state :- U{adjacent(A, B)}.\nvoid\n_inductive_rule_3 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = adjacent_ff (_tuple1)) != 0)\n    {\n      int A = adjacent_1 (_tuple1);\n      int B = adjacent_2 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_readDoor_bbf (_next_state, A, B)) == 0)\n        {\n          // make io call\n          int Doorstate = digitalRead (A + B);\n          write__io_readDoor (_next_state, A, B, Doorstate);\n        }\n      _tuple1 += _size_adjacent;\n}};\n\n// _inductive_rule_4: #_io_readWindow(R, _)=>_next_state :- U{hasWindow(R)}.\nvoid\n_inductive_rule_4 ()\n{\n  byte *_tuple1 = _curr_state;\n  while ((_tuple1 = hasWindow_f (_tuple1)) != 0)\n    {\n      int R = hasWindow_1 (_tuple1);\n      byte *_tuple2 = _next_state;\n      if ((_tuple2 = _io_readWindow_bf (_next_state, R)) == 0)\n        {\n          // make io call\n          int State = digitalRead (R);\n          write__io_readWindow (_next_state, R, State);\n        }\n      _tuple1 += _size_hasWindow;\n}};\n\n#endif\n\nvoid\nsetup ()\n{\n#if _rulecount > 0\n\n  _curr_state = _buffer0;\n  _curr_free = _curr_state;\n  _next_state = _buffer1;\n  _next_free = _next_state;\n\n\n#endif\n\n}\n\nvoid\nloop ()\n{\n\n\n#if _rulecount > 0\n  // deductive phase\n\n\n// stratum 3\n  _deductive_rule_1 ();\n  _deductive_rule_2 ();\n  _deductive_rule_3 ();\n  _deductive_rule_4 ();\n  _deductive_rule_5 ();\n// stratum 4\n  _deductive_rule_9 ();\n  do\n    {                           // stratum 5\n      _added_facts = false;\n      _added_facts |= _deductive_rule_6 ();\n      _added_facts |= _deductive_rule_7 ();\n      _added_facts |= _deductive_rule_8 ();\n    }\n  while (_added_facts);\n// stratum 6\n  _deductive_rule_10 ();\n  _deductive_rule_11 ();\n// stratum 7\n  _deductive_rule_12 ();\n// inductive_phase\n  _inductive_rule_1 ();\n  _inductive_rule_2 ();\n  _inductive_rule_3 ();\n  _inductive_rule_4 ();\n\n\n  // Buffer clearing and swapping\n  _clear_buff (_curr_state);\n  byte *_temp = _curr_state;\n  _curr_state = _next_state;\n  _next_state = _temp;\n  _temp = _curr_free;\n  _curr_free = _next_free;\n  _next_free = _temp;\n#endif\n}\n",
      "highlighted": "<div class=\"highlight\"><pre><span></span><span class=\"cm\">/*</span>\n<span class=\"cm\">Program 1:</span>\n<span class=\"cm\">.decl adjacent/2(int, int)</span>\n<span class=\"cm\">.decl connected/2(int, int)</span>\n<span class=\"cm\">.decl doorOpen/2(int, int)</span>\n<span class=\"cm\">.decl hasWindow/1(int)</span>\n<span class=\"cm\">.decl windowOpen/1(int)</span>\n<span class=\"cm\">adjacent(1, 2) :- .</span>\n<span class=\"cm\">adjacent(2, 3) :- .</span>\n<span class=\"cm\">adjacent(3, 4) :- .</span>\n<span class=\"cm\">adjacent(4, 5) :- .</span>\n<span class=\"cm\">adjacent(5, 6) :- .</span>\n<span class=\"cm\">connected(A, B) :- doorOpen(A, B).</span>\n<span class=\"cm\">connected(A, C) :- connected(A, B), connected(B, C), ArithComp (ArithNEQ &quot;A&quot; &quot;C&quot;).</span>\n<span class=\"cm\">connected(B, A) :- doorOpen(A, B).</span>\n<span class=\"cm\">doorOpen(A, B) :- _io_readDoor(A, B, HIGH).</span>\n<span class=\"cm\">hasWindow(1) :- .</span>\n<span class=\"cm\">hasWindow(6) :- .</span>\n<span class=\"cm\">windowOpen(R) :- _io_readWindow(R, HIGH).</span>\n<span class=\"cm\">#_io_heatingOff(O)@next :- connected(R, O), windowOpen(R).</span>\n<span class=\"cm\">#_io_heatingOff(R)@next :- windowOpen(R).</span>\n<span class=\"cm\">#_io_readDoor(A, B, _)@next :- adjacent(A, B).</span>\n<span class=\"cm\">#_io_readWindow(R, _)@next :- hasWindow(R).</span>\n\n\n\n<span class=\"cm\">Strata:</span>\n<span class=\"cm\">1: fromList [&quot;_io_readDoor&quot;]</span>\n<span class=\"cm\">2: fromList [&quot;_io_readWindow&quot;]</span>\n<span class=\"cm\">3: fromList [&quot;adjacent&quot;]</span>\n<span class=\"cm\">4: fromList [&quot;doorOpen&quot;]</span>\n<span class=\"cm\">5: fromList [&quot;connected&quot;]</span>\n<span class=\"cm\">6: fromList [&quot;hasWindow&quot;]</span>\n<span class=\"cm\">7: fromList [&quot;windowOpen&quot;]</span>\n<span class=\"cm\">*/</span>\n<span class=\"cp\">#include</span><span class=\"w\"> </span><span class=\"cpf\">&quot;Arduino.h&quot;</span>\n\n<span class=\"cp\">#define _rulecount 4</span>\n<span class=\"cp\">#define _bufsize 256</span>\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer0</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_buffer1</span><span class=\"p\">[</span><span class=\"n\">_bufsize</span><span class=\"p\">];</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_state</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"kr\">static</span><span class=\"w\"> </span><span class=\"kr\">bool</span><span class=\"w\"> </span><span class=\"n\">_added_facts</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">false</span><span class=\"p\">;</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">void</span>\n<span class=\"nf\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_curr_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"n\">_next_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">new_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"o\">*</span><span class=\"n\">new_free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">void</span>\n<span class=\"nf\">_clear_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">src</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">src</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">src</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _size__io_heatingOff 1 + sizeof(int)</span>\n<span class=\"cp\">#define _size__io_readDoor 1 + sizeof(int)+ sizeof(int)+ sizeof(int)</span>\n<span class=\"cp\">#define _size__io_readWindow 1 + sizeof(int)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_adjacent 1 + sizeof(int)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_connected 1 + sizeof(int)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_doorOpen 1 + sizeof(int)+ sizeof(int)</span>\n<span class=\"cp\">#define _size_hasWindow 1 + sizeof(int)</span>\n<span class=\"cp\">#define _size_windowOpen 1 + sizeof(int)</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"mi\">9</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">  </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_heatingOff</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size__io_readWindow</span><span class=\"p\">,</span>\n<span class=\"n\">_size_adjacent</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_connected</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_doorOpen</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_hasWindow</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_size_windowOpen</span>\n<span class=\"p\">};</span>\n\n<span class=\"cp\">#define _type__io_heatingOff 1</span>\n<span class=\"cp\">#define _type__io_readDoor 2</span>\n<span class=\"cp\">#define _type__io_readWindow 3</span>\n<span class=\"cp\">#define _type_adjacent 4</span>\n<span class=\"cp\">#define _type_connected 5</span>\n<span class=\"cp\">#define _type_doorOpen 6</span>\n<span class=\"cp\">#define _type_hasWindow 7</span>\n<span class=\"cp\">#define _type_windowOpen 8</span>\n<span class=\"cp\">#endif</span>\n\n\n\n<span class=\"cp\">#if _rulecount &gt; 0</span>\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_curr_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_curr_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">_next_state</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_next_free</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"nf\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">true</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">;</span>\n<span class=\"w\">      </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_sizes</span><span class=\"p\">[</span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">];</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">value</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">&amp;</span><span class=\"n\">buf</span><span class=\"p\">[</span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">T</span><span class=\"p\">)];</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">template</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"n\">typename</span><span class=\"w\"> </span><span class=\"nc\">T</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">((</span><span class=\"n\">T</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_io_heatingOff_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_io_readWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">_io_readWindow_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">adjacent_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">adjacent_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">connected_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">connected_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">doorOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">doorOpen_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"kr\">sizeof</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">int</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">hasWindow_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">inline</span><span class=\"w\"> </span><span class=\"kr\">int</span>\n<span class=\"n\">windowOpen_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">_read_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_int_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">void</span>\n<span class=\"n\">_write_fact_int_int_int</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__free</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">type</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">free</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_write_data</span><span class=\"w\"> </span><span class=\"o\">&lt;</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">free</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">);</span>\n<span class=\"w\">  </span><span class=\"n\">_advance_buff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">free</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define write__io_heatingOff(buf, a1) _write_fact_int(buf, _type__io_heatingOff, a1)</span>\n<span class=\"cp\">#define write__io_readDoor(buf, a1, a2, a3) _write_fact_int_int_int(buf, _type__io_readDoor, a1, a2, a3)</span>\n<span class=\"cp\">#define write__io_readWindow(buf, a1, a2) _write_fact_int_int(buf, _type__io_readWindow, a1, a2)</span>\n<span class=\"cp\">#define write_adjacent(buf, a1, a2) _write_fact_int_int(buf, _type_adjacent, a1, a2)</span>\n<span class=\"cp\">#define write_connected(buf, a1, a2) _write_fact_int_int(buf, _type_connected, a1, a2)</span>\n<span class=\"cp\">#define write_doorOpen(buf, a1, a2) _write_fact_int_int(buf, _type_doorOpen, a1, a2)</span>\n<span class=\"cp\">#define write_hasWindow(buf, a1) _write_fact_int(buf, _type_hasWindow, a1)</span>\n<span class=\"cp\">#define write_windowOpen(buf, a1) _write_fact_int(buf, _type_windowOpen, a1)</span>\n\n<span class=\"cp\">#define _io_heatingOff_f(buf) _next__fact(buf,_type__io_heatingOff)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_heatingOff_b</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_heatingOff</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_heatingOff_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_heatingOff</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"cp\">#define _io_readDoor_fff(buf) _next__fact(buf,_type__io_readDoor)</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_ffb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_fbf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_fbb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_bff</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_bfb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_3</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a3</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_bbf</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kr\">int</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"k\">while</span><span class=\"w\"> </span><span class=\"p\">((</span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">_next__fact</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">_type__io_readDoor</span><span class=\"p\">))</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"k\">if</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">_io_readDoor_1</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a1</span><span class=\"w\"> </span><span class=\"o\">||</span><span class=\"w\"> </span><span class=\"n\">_io_readDoor_2</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">buf</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">!=</span><span class=\"w\"> </span><span class=\"n\">a2</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"p\">{</span>\n<span class=\"w\">          </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"n\">_size__io_readDoor</span><span class=\"p\">;</span>\n<span class=\"w\">          </span><span class=\"k\">continue</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">      </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"n\">buf</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span>\n<span class=\"n\">_io_readDoor_bbb</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"kr\">byte</span><span class=\"w\"> </span><span class=\"o\">*</span><span clas