Exercise logic.propositional.proof.unicode

Description
Prove two propositions equivalent (unicode support)

Strategy

<label name="proofequivalent">
  <sequence>
    <let>
      <decl var="5">
        <orelse>
          <sequence>
            <orelse>
              <let>
                <decl var="1">
                  <choice>
                    <rule name="top-is-not"/>
                    <rule name="top-is-equiv"/>
                    <rule name="top-is-impl"/>
                    <orelse>
                      <rule name="top-is-and"/>
                      <rule name="top-is-and.com"/>
                    </orelse>
                    <orelse>
                      <rule name="top-is-or"/>
                      <rule name="top-is-or.com"/>
                    </orelse>
                    <sequence>
                      <rule name="navigator.down"/>
                      <succeed/>
                      <let>
                        <decl var="2">
                          <choice>
                            <var var="1"/>
                            <sequence>
                              <rule name="navigator.right"/>
                              <succeed/>
                              <var var="2"/>
                            </sequence>
                          </choice>
                        </decl>
                        <var var="2"/>
                      </let>
                      <orelse>
                        <rule name="navigator.up"/>
                        <succeed/>
                      </orelse>
                    </sequence>
                  </choice>
                </decl>
                <var var="1"/>
              </let>
              <choice>
                <label name="orrules">
                  <choice>
                    <rule name="logic.propositional.falsezeroor"/>
                    <rule name="logic.propositional.truezeroor"/>
                    <rule name="logic.propositional.idempor"/>
                    <rule name="logic.propositional.absorpor"/>
                    <rule name="logic.propositional.complor"/>
                    <fail/>
                  </choice>
                </label>
                <let>
                  <decl var="3">
                    <choice>
                      <sequence>
                        <rule name="check"/>
                        <orelse>
                          <label name="simplify">
                            <let>
                              <decl var="1">
                                <preference>
                                  <choice>
                                    <label name="orrules">
                                      <choice>
                                        <rule name="logic.propositional.falsezeroor"/>
                                        <rule name="logic.propositional.truezeroor"/>
                                        <rule name="logic.propositional.idempor"/>
                                        <rule name="logic.propositional.absorpor"/>
                                        <rule name="logic.propositional.complor"/>
                                        <fail/>
                                      </choice>
                                    </label>
                                    <label name="andrules">
                                      <choice>
                                        <rule name="logic.propositional.falsezeroand"/>
                                        <rule name="logic.propositional.truezeroand"/>
                                        <rule name="logic.propositional.idempand"/>
                                        <rule name="logic.propositional.absorpand"/>
                                        <rule name="logic.propositional.compland"/>
                                        <fail/>
                                      </choice>
                                    </label>
                                    <rule name="logic.propositional.nottrue"/>
                                    <rule name="logic.propositional.notfalse"/>
                                    <rule name="logic.propositional.notnot"/>
                                    <fail/>
                                  </choice>
                                  <sequence>
                                    <rule name="navigator.down"/>
                                    <succeed/>
                                    <let>
                                      <decl var="2">
                                        <choice>
                                          <var var="1"/>
                                          <sequence>
                                            <rule name="navigator.right"/>
                                            <succeed/>
                                            <var var="2"/>
                                          </sequence>
                                        </choice>
                                      </decl>
                                      <var var="2"/>
                                    </let>
                                    <orelse>
                                      <rule name="navigator.up"/>
                                      <succeed/>
                                    </orelse>
                                  </sequence>
                                </preference>
                              </decl>
                              <var var="1"/>
                            </let>
                          </label>
                          <preference>
                            <label name="specialsort">
                              <let>
                                <decl var="1">
                                  <choice>
                                    <rule name="complor.sort"/>
                                    <rule name="compland.sort"/>
                                    <sequence>
                                      <rule name="navigator.down"/>
                                      <succeed/>
                                      <let>
                                        <decl var="2">
                                          <choice>
                                            <var var="1"/>
                                            <sequence>
                                              <rule name="navigator.right"/>
                                              <succeed/>
                                              <var var="2"/>
                                            </sequence>
                                          </choice>
                                        </decl>
                                        <var var="2"/>
                                      </let>
                                      <orelse>
                                        <rule name="navigator.up"/>
                                        <succeed/>
                                      </orelse>
                                    </sequence>
                                  </choice>
                                </decl>
                                <var var="1"/>
                              </let>
                            </label>
                            <label name="specialdistrnot">
                              <let>
                                <decl var="1">
                                  <choice>
                                    <sequence>
                                      <rule name="check"/>
                                      <rule name="logic.propositional.oroverand"/>
                                    </sequence>
                                    <sequence>
                                      <rule name="check"/>
                                      <rule name="logic.propositional.andoveror"/>
                                    </sequence>
                                    <sequence>
                                      <rule name="navigator.down"/>
                                      <succeed/>
                                      <let>
                                        <decl var="2">
                                          <choice>
                                            <var var="1"/>
                                            <sequence>
                                              <rule name="navigator.right"/>
                                              <succeed/>
                                              <var var="2"/>
                                            </sequence>
                                          </choice>
                                        </decl>
                                        <var var="2"/>
                                      </let>
                                      <orelse>
                                        <rule name="navigator.up"/>
                                        <succeed/>
                                      </orelse>
                                    </sequence>
                                  </choice>
                                </decl>
                                <var var="1"/>
                              </let>
                            </label>
                            <label name="specialdemorgannot">
                              <let>
                                <decl var="1">
                                  <choice>
                                    <sequence>
                                      <rule name="check"/>
                                      <preference>
                                        <rule name="logic.propositional.gendemorganor"/>
                                        <rule name="logic.propositional.demorganor"/>
                                      </preference>
                                    </sequence>
                                    <sequence>
                                      <rule name="check"/>
                                      <preference>
                                        <rule name="logic.propositional.gendemorganand"/>
                                        <rule name="logic.propositional.demorganand"/>
                                      </preference>
                                    </sequence>
                                    <sequence>
                                      <rule name="navigator.down"/>
                                      <succeed/>
                                      <let>
                                        <decl var="2">
                                          <choice>
                                            <var var="1"/>
                                            <sequence>
                                              <rule name="navigator.right"/>
                                              <succeed/>
                                              <var var="2"/>
                                            </sequence>
                                          </choice>
                                        </decl>
                                        <var var="2"/>
                                      </let>
                                      <orelse>
                                        <rule name="navigator.up"/>
                                        <succeed/>
                                      </orelse>
                                    </sequence>
                                  </choice>
                                </decl>
                                <var var="1"/>
                              </let>
                            </label>
                          </preference>
                          <preference>
                            <label name="eliminateimplequiv">
                              <preference>
                                <let>
                                  <decl var="1">
                                    <choice>
                                      <rule name="logic.propositional.defimpl"/>
                                      <sequence>
                                        <rule name="navigator.down"/>
                                        <succeed/>
                                        <let>
                                          <decl var="2">
                                            <choice>
                                              <var var="1"/>
                                              <sequence>
                                                <rule name="navigator.right"/>
                                                <succeed/>
                                                <var var="2"/>
                                              </sequence>
                                            </choice>
                                          </decl>
                                          <var var="2"/>
                                        </let>
                                        <orelse>
                                          <rule name="navigator.up"/>
                                          <succeed/>
                                        </orelse>
                                      </sequence>
                                    </choice>
                                  </decl>
                                  <var var="1"/>
                                </let>
                                <let>
                                  <decl var="1">
                                    <preference>
                                      <sequence>
                                        <rule name="navigator.down"/>
                                        <succeed/>
                                        <let>
                                          <decl var="2">
                                            <choice>
                                              <var var="1"/>
                                              <sequence>
                                                <rule name="navigator.right"/>
                                                <succeed/>
                                                <var var="2"/>
                                              </sequence>
                                            </choice>
                                          </decl>
                                          <var var="2"/>
                                        </let>
                                        <orelse>
                                          <rule name="navigator.up"/>
                                          <succeed/>
                                        </orelse>
                                      </sequence>
                                      <rule name="logic.propositional.defequiv"/>
                                    </preference>
                                  </decl>
                                  <var var="1"/>
                                </let>
                              </preference>
                            </label>
                            <label name="demorgan">
                              <let>
                                <decl var="1">
                                  <choice>
                                    <preference>
                                      <rule name="logic.propositional.gendemorganor"/>
                                      <rule name="logic.propositional.demorganor"/>
                                    </preference>
                                    <preference>
                                      <rule name="logic.propositional.gendemorganand"/>
                                      <rule name="logic.propositional.demorganand"/>
                                    </preference>
                                    <sequence>
                                      <rule name="navigator.down"/>
                                      <succeed/>
                                      <let>
                                        <decl var="2">
                                          <choice>
                                            <var var="1"/>
                                            <sequence>
                                              <rule name="navigator.right"/>
                                              <succeed/>
                                              <var var="2"/>
                                            </sequence>
                                          </choice>
                                        </decl>
                                        <var var="2"/>
                                      </let>
                                      <orelse>
                                        <rule name="navigator.up"/>
                                        <succeed/>
                                      </orelse>
                                    </sequence>
                                  </choice>
                                </decl>
                                <var var="1"/>
                              </let>
                            </label>
                          </preference>
                        </orelse>
                      </sequence>
                      <sequence>
                        <rule name="check"/>
                        <rule name="navigator.down"/>
                        <succeed/>
                        <let>
                          <decl var="4">
                            <choice>
                              <var var="3"/>
                              <sequence>
                                <rule name="navigator.right"/>
                                <succeed/>
                                <var var="4"/>
                              </sequence>
                            </choice>
                          </decl>
                          <var var="4"/>
                        </let>
                        <orelse>
                          <rule name="navigator.up"/>
                          <succeed/>
                        </orelse>
                      </sequence>
                    </choice>
                  </decl>
                  <var var="3"/>
                </let>
              </choice>
              <sequence>
                <let>
                  <decl var="3">
                    <orelse>
                      <sequence>
                        <let>
                          <decl var="1">
                            <choice>
                              <rule name="command.common-literal-special"/>
                              <sequence>
                                <rule name="navigator.down"/>
                                <succeed/>
                                <let>
                                  <decl var="2">
                                    <choice>
                                      <var var="1"/>
                                      <sequence>
                                        <rule name="navigator.right"/>
                                        <succeed/>
                                        <var var="2"/>
                                      </sequence>
                                    </choice>
                                  </decl>
                                  <var var="2"/>
                                </let>
                                <orelse>
                                  <rule name="navigator.up"/>
                                  <succeed/>
                                </orelse>
                              </sequence>
                            </choice>
                          </decl>
                          <var var="1"/>
                        </let>
                        <var var="3"/>
                      </sequence>
                      <succeed/>
                    </orelse>
                  </decl>
                  <var var="3"/>
                </let>
                <let>
                  <decl var="1">
                    <choice>
                      <rule name="andoveror.inv.common-literal"/>
                      <sequence>
                        <rule name="navigator.down"/>
                        <succeed/>
                        <let>
                          <decl var="2">
                            <choice>
                              <var var="1"/>
                              <sequence>
                                <rule name="navigator.right"/>
                                <succeed/>
                                <var var="2"/>
                              </sequence>
                            </choice>
                          </decl>
                          <var var="2"/>
                        </let>
                        <orelse>
                          <rule name="navigator.up"/>
                          <succeed/>
                        </orelse>
                      </sequence>
                    </choice>
                  </decl>
                  <var var="1"/>
                </let>
                <let>
                  <decl var="3">
                    <orelse>
                      <sequence>
                        <let>
                          <decl var="1">
                            <choice>
                              <rule name="andoveror.inv.common-literal"/>
                              <sequence>
                                <rule name="navigator.down"/>
                                <succeed/>
                                <let>
                                  <decl var="2">
                                    <choice>
                                      <var var="1"/>
                                      <sequence>
                                        <rule name="navigator.right"/>
                                        <succeed/>
                                        <var var="2"/>
                                      </sequence>
                                    </choice>
                                  </decl>
                                  <var var="2"/>
                                </let>
                                <orelse>
                                  <rule name="navigator.up"/>
                                  <succeed/>
                                </orelse>
                              </sequence>
                            </choice>
                          </decl>
                          <var var="1"/>
                        </let>
                        <var var="3"/>
                      </sequence>
                      <succeed/>
                    </orelse>
                  </decl>
                  <var var="3"/>
                </let>
                <let>
                  <decl var="3">
                    <orelse>
                      <sequence>
                        <let>
                          <decl var="1">
                            <choice>
                              <rule name="top-is-and"/>
                              <sequence>
                                <rule name="navigator.down"/>
                                <succeed/>
                                <let>
                                  <decl var="2">
                                    <choice>
                                      <var var="1"/>
                                      <sequence>
                                        <rule name="navigator.right"/>
                                        <succeed/>
                                        <var var="2"/>
                                      </sequence>
                                    </choice>
                                  </decl>
                                  <var var="2"/>
                                </let>
                                <orelse>
                                  <rule name="navigator.up"/>
                                  <succeed/>
                                </orelse>
                              </sequence>
                            </choice>
                          </decl>
                          <var var="1"/>
                        </let>
                        <var var="3"/>
                      </sequence>
                      <succeed/>
                    </orelse>
                  </decl>
                  <var var="3"/>
                </let>
              </sequence>
              <label name="distrand">
                <let>
                  <decl var="1">
                    <preference>
                      <sequence>
                        <rule name="navigator.down"/>
                        <succeed/>
                        <let>
                          <decl var="2">
                            <choice>
                              <var var="1"/>
                              <sequence>
                                <rule name="navigator.right"/>
                                <succeed/>
                                <var var="2"/>
                              </sequence>
                            </choice>
                          </decl>
                          <var var="2"/>
                        </let>
                        <orelse>
                          <rule name="navigator.up"/>
                          <succeed/>
                        </orelse>
                      </sequence>
                      <rule name="logic.propositional.genandoveror"/>
                      <rule name="logic.propositional.andoveror"/>
                    </preference>
                  </decl>
                  <var var="1"/>
                </let>
              </label>
              <sequence>
                <rule name="is-dnf"/>
                <let>
                  <decl var="3">
                    <orelse>
                      <sequence>
                        <let>
                          <decl var="1">
                            <choice>
                              <rule name="command.common-literal"/>
                              <sequence>
                                <rule name="navigator.down"/>
                                <succeed/>
                                <let>
                                  <decl var="2">
                                    <choice>
                                      <var var="1"/>
                                      <sequence>
                                        <rule name="navigator.right"/>
                                        <succeed/>
                                        <var var="2"/>
                                      </sequence>
                                    </choice>
                                  </decl>
                                  <var var="2"/>
                                </let>
                                <orelse>
                                  <rule name="navigator.up"/>
                                  <succeed/>
                                </orelse>
                              </sequence>
                            </choice>
                          </decl>
                          <var var="1"/>
                        </let>
                        <var var="3"/>
                      </sequence>
                      <succeed/>
                    </orelse>
                  </decl>
                  <var var="3"/>
                </let>
                <let>
                  <decl var="1">
                    <choice>
                      <rule name="andoveror.inv.common-literal"/>
                      <sequence>
                        <rule name="navigator.down"/>
                        <succeed/>
                        <let>
                          <decl var="2">
                            <choice>
                              <var var="1"/>
                              <sequence>
                                <rule name="navigator.right"/>
                                <succeed/>
                                <var var="2"/>
                              </sequence>
                            </choice>
                          </decl>
                          <var var="2"/>
                        </let>
                        <orelse>
                          <rule name="navigator.up"/>
                          <succeed/>
                        </orelse>
                      </sequence>
                    </choice>
                  </decl>
                  <var var="1"/>
                </let>
                <let>
                  <decl var="3">
                    <orelse>
                      <sequence>
                        <let>
                          <decl var="1">
                            <choice>
                              <rule name="andoveror.inv.common-literal"/>
                              <sequence>
                                <rule name="navigator.down"/>
                                <succeed/>
                                <let>
                                  <decl var="2">
                                    <choice>
                                      <var var="1"/>
                                      <sequence>
                                        <rule name="navigator.right"/>
                                        <succeed/>
                                        <var var="2"/>
                                      </sequence>
                                    </choice>
                                  </decl>
                                  <var var="2"/>
                                </let>
                                <orelse>
                                  <rule name="navigator.up"/>
                                  <succeed/>
                                </orelse>
                              </sequence>
                            </choice>
                          </decl>
                          <var var="1"/>
                        </let>
                        <var var="3"/>
                      </sequence>
                      <succeed/>
                    </orelse>
                  </decl>
                  <var var="3"/>
                </let>
                <let>
                  <decl var="3">
                    <orelse>
                      <sequence>
                        <let>
                          <decl var="1">
                            <choice>
                              <rule name="top-is-and"/>
                              <sequence>
                                <rule name="navigator.down"/>
                                <succeed/>
                                <let>
                                  <decl var="2">
                                    <choice>
                                      <var var="1"/>
                                      <sequence>
                                        <rule name="navigator.right"/>
                                        <succeed/>
                                        <var var="2"/>
                                      </sequence>
                                    </choice>
                                  </decl>
                                  <var var="2"/>
                                </let>
                                <orelse>
                                  <rule name="navigator.up"/>
                                  <succeed/>
                                </orelse>
                              </sequence>
                            </choice>
                          </decl>
                          <var var="1"/>
                        </let>
                        <var var="3"/>
                      </sequence>
                      <succeed/>
                    </orelse>
                  </decl>
                  <var var="3"/>
                </let>
              </sequence>
            </orelse>
            <var var="5"/>
          </sequence>
          <succeed/>
        </orelse>
      </decl>
      <var var="5"/>
    </let>
    <rule name="is-dnf"/>
    <let>
      <decl var="6">
        <orelse>
          <sequence>
            <orelse>
              <let>
                <decl var="1">
                  <choice>
                    <rule name="top-is-not"/>
                    <rule name="top-is-equiv"/>
                    <rule name="top-is-impl"/>
                    <orelse>
                      <rule name="top-is-and"/>
                      <rule name="top-is-and.com"/>
                    </orelse>
                    <orelse>
                      <rule name="top-is-or"/>
                      <rule name="top-is-or.com"/>
                    </orelse>
                    <sequence>
                      <rule name="navigator.down"/>
                      <succeed/>
                      <let>
                        <decl var="2">
                          <choice>
                            <var var="1"/>
                            <sequence>
                              <rule name="navigator.right"/>
                              <succeed/>
                              <var var="2"/>
                            </sequence>
                          </choice>
                        </decl>
                        <var var="2"/>
                      </let>
                      <orelse>
                        <rule name="navigator.up"/>
                        <succeed/>
                      </orelse>
                    </sequence>
                  </choice>
                </decl>
                <var var="1"/>
              </let>
              <let>
                <decl var="1">
                  <choice>
                    <rule name="logic.propositional.idempor"/>
                    <rule name="logic.propositional.idempand"/>
                    <rule name="absorpor-subset"/>
                    <rule name="logic.propositional.complor"/>
                    <sequence>
                      <rule name="navigator.down"/>
                      <succeed/>
                      <let>
                        <decl var="2">
                          <choice>
                            <var var="1"/>
                            <sequence>
                              <rule name="navigator.right"/>
                              <succeed/>
                              <var var="2"/>
                            </sequence>
                          </choice>
                        </decl>
                        <var var="2"/>
                      </let>
                      <orelse>
                        <rule name="navigator.up"/>
                        <succeed/>
                      </orelse>
                    </sequence>
                  </choice>
                </decl>
                <var var="1"/>
              </let>
              <let>
                <decl var="4">
                  <orelse>
                    <sequence>
                      <rule name="check"/>
                      <rule name="navigator.down"/>
                      <succeed/>
                      <let>
                        <decl var="3">
                          <choice>
                            <let>
                              <decl var="1">
                                <choice>
                                  <sequence>
                                    <rule name="check"/>
                                    <rule name="check"/>
                                    <rule name="introtrueleft"/>
                                    <rule name="introcompl"/>
                                    <rule name="logic.propositional.andoveror"/>
                                  </sequence>
                                  <sequence>
                                    <rule name="check"/>
                                    <rule name="navigator.down"/>
                                    <succeed/>
                                    <let>
                                      <decl var="2">
                                        <choice>
                                          <var var="1"/>
                                          <sequence>
                                            <rule name="navigator.right"/>
                                            <succeed/>
                                            <var var="2"/>
                                          </sequence>
                                        </choice>
                                      </decl>
                                      <var var="2"/>
                                    </let>
                                    <orelse>
                                      <rule name="navigator.up"/>
                                      <succeed/>
                                    </orelse>
                                  </sequence>
                                </choice>
                              </decl>
                              <var var="1"/>
                            </let>
                            <sequence>
                              <rule name="navigator.right"/>
                              <succeed/>
                              <var var="3"/>
                            </sequence>
                          </choice>
                        </decl>
                        <var var="3"/>
                      </let>
                      <orelse>
                        <rule name="navigator.up"/>
                        <succeed/>
                      </orelse>
                    </sequence>
                    <sequence>
                      <rule name="navigator.down"/>
                      <succeed/>
                      <let>
                        <decl var="5">
                          <choice>
                            <var var="4"/>
                            <sequence>
                              <rule name="navigator.right"/>
                              <succeed/>
                              <var var="5"/>
                            </sequence>
                          </choice>
                        </decl>
                        <var var="5"/>
                      </let>
                      <orelse>
                        <rule name="navigator.up"/>
                        <succeed/>
                      </orelse>
                    </sequence>
                  </orelse>
                </decl>
                <var var="4"/>
              </let>
            </orelse>
            <var var="6"/>
          </sequence>
          <succeed/>
        </orelse>
      </decl>
      <var var="6"/>
    </let>
  </sequence>
</label>

Locations

LocationLabel
[]proofequivalent
[0]...top-is-and.com
[1]...top-is-or.com
[2]...orrules
[0,2]......logic.propositional.falsezeroor
[1,2]......logic.propositional.truezeroor
[2,2]......logic.propositional.idempor
[3,2]......logic.propositional.absorpor
[4,2]......logic.propositional.complor
[3]...simplify
[0,3]......orrules
[0,0,3].........logic.propositional.falsezeroor
[1,0,3].........logic.propositional.truezeroor
[2,0,3].........logic.propositional.idempor
[3,0,3].........logic.propositional.absorpor
[4,0,3].........logic.propositional.complor
[1,3]......andrules
[0,1,3].........logic.propositional.falsezeroand
[1,1,3].........logic.propositional.truezeroand
[2,1,3].........logic.propositional.idempand
[3,1,3].........logic.propositional.absorpand
[4,1,3].........logic.propositional.compland
[2,3]......logic.propositional.nottrue
[3,3]......logic.propositional.notfalse
[4,3]......logic.propositional.notnot
[4]...specialsort
[0,4]......complor.sort
[1,4]......compland.sort
[5]...specialdistrnot
[0,5]......logic.propositional.oroverand
[1,5]......logic.propositional.andoveror
[6]...specialdemorgannot
[0,6]......logic.propositional.gendemorganor
[1,6]......logic.propositional.demorganor
[2,6]......logic.propositional.gendemorganand
[3,6]......logic.propositional.demorganand
[7]...eliminateimplequiv
[0,7]......logic.propositional.defimpl
[1,7]......logic.propositional.defequiv
[8]...demorgan
[0,8]......logic.propositional.gendemorganor
[1,8]......logic.propositional.demorganor
[2,8]......logic.propositional.gendemorganand
[3,8]......logic.propositional.demorganand
[9]...command.common-literal-special
[10]...andoveror.inv.common-literal
[11]...andoveror.inv.common-literal
[12]...distrand
[0,12]......logic.propositional.genandoveror
[1,12]......logic.propositional.andoveror
[13]...command.common-literal
[14]...andoveror.inv.common-literal
[15]...andoveror.inv.common-literal
[16]...top-is-and.com
[17]...top-is-or.com
[18]...logic.propositional.idempor
[19]...logic.propositional.idempand
[20]...absorpor-subset
[21]...logic.propositional.complor
[22]...introtrueleft
[23]...introcompl
[24]...logic.propositional.andoveror