### Simplify {r1;b1}&&{r2;b2} or {b1:r1}&&{b2:r2}, or similar.

* src/ltlvisit/simplify.cc: Add four rules.
* doc/tl/tl.tex: Document these rules.
* src/ltltest/reduccmp.test: Add tests.
parent 2f9f274a
 ... ... @@ -1272,8 +1272,9 @@ in the OR arguments: yet.} The following simplification rules are used for the $n$-ary operators $\ANDALT$, $\AND$, and $\OR$, and are of course commutative. $b$ denots a Boolean formula while $r$ or $r_i$ denote any SERE. $\ANDALT$, $\AND$, and $\OR$. The patterns are of course commutative. $b$ or $b_i$ denote any Boolean formula while $r$ or $r_i$ denote any SERE. \begin{align*} b \ANDALT r\STAR{\mvar{i}..\mvar{j}} &\equiv ... ... @@ -1298,6 +1299,10 @@ denots a Boolean formula while $r$ or $r_i$ denote any SERE. b \ANDALT (r_1 \OR \ldots \OR r_n) & \text{if~}\forall i,\, \varepsilon\VDash r_i\\ \0 &\text{else}\\ \end{cases}\\ \ratgroup{b_1\CONCAT r_1}\ANDALT\ratgroup{b_2\CONCAT r_2} &\equiv \ratgroup{b_1\ANDALT b_2}\CONCAT\ratgroup{r_1\ANDALT r_2} \\ \ratgroup{b_1\FUSION r_1}\ANDALT\ratgroup{b_2\FUSION r_2} &\equiv \ratgroup{b_1\ANDALT b_2}\FUSION\ratgroup{r_1\ANDALT r_2} \\ \ratgroup{r_1\CONCAT b_1}\ANDALT\ratgroup{r_2\CONCAT b_2} &\equiv \ratgroup{r_1\ANDALT r_2}\CONCAT\ratgroup{b_1\ANDALT b_2} \\ \ratgroup{r_1\FUSION b_1}\ANDALT\ratgroup{r_2\FUSION b_2} &\equiv \ratgroup{r_1\ANDALT r_2}\FUSION\ratgroup{b_1\ANDALT b_2} \\ \end{align*} \subsection{Simplifications for Eventual and Universal Formul\ae} ... ...
 ... ... @@ -219,6 +219,16 @@ for x in ../reduccmp ../reductaustr; do run 0 $x '{a && {b*;c:e}} <>-> d' 'a & c & d & e' run 0$x '{a && {b;c*}} <>-> d' 'a & b & d' run 0 $x '{a && {b;c*:e}} <>-> d' 'a & b & d & e' run 0$x '{{b1;r1*} && {b2 ; r2*}} <>-> x' \ '{{b1&&b2};{r1*&&r2*}} <>-> x' run 0 $x '{{b1;r1*}&&{b2;r2*}} <>-> x' \ '{{b1&&b2};{r1*&&r2*}} <>-> x' run 0$x '{{r1*;b1}&&{r2*;b2}} <>-> x' \ '{{r1*&&r2*};{b1&&b2}} <>-> x' run 0 $x '{{r1*;b1}&&{r2*;b2}} <>-> x' \ '{{r1*&&r2*};{b1&&b2}} <>-> x' run 0$x '{{a;b*;c}&&{d;e*}&&{f*;g}&&{h*}} <>-> x' \ '{{f*;g}&&{h*}&&{{a&&d};{e* && {b*;c}}}} <>-> x' ;; esac ... ...