Track finite formulae.
I.e., SERE without star, or LTL formula using only X and Boolean operators. * src/ltlast/formula.hh, src/ltlast/formula.cc: Add a bit for tracking finite formulas. * src/ltlast/atomic_prop.cc, src/ltlast/automatop.cc, src/ltlast/bunop.cc, src/ltlast/constant.cc, src/ltlast/formula.cc: Adjust. * src/ltlast/unop.cc, src/ltlast/binop.cc: Adjust and use that bit to refine the computation of some LTL classes. * src/ltltest/kind.test: New tests.
This commit is contained in:
parent
df760a4597
commit
fb386209aa
9 changed files with 84 additions and 31 deletions
|
|
@ -33,10 +33,10 @@ check()
|
|||
test "$word" = "$2"
|
||||
}
|
||||
|
||||
check 'a' 'B&!xfLEPSsgopr'
|
||||
check 'a<->b' 'BxfLEPSsgopr'
|
||||
check '!a' 'B&!xfLEPSsgopr'
|
||||
check '!(a|b)' 'B&xfLEPSsgopr'
|
||||
check 'a' 'B&!xfLEPSFsgopr'
|
||||
check 'a<->b' 'BxfLEPSFsgopr'
|
||||
check '!a' 'B&!xfLEPSFsgopr'
|
||||
check '!(a|b)' 'B&xfLEPSFsgopr'
|
||||
check 'F(a)' '&!xLPegopr'
|
||||
check 'G(a)' '&!xLPusopr'
|
||||
check 'a U b' '&!xfLPgopr'
|
||||
|
|
@ -61,12 +61,28 @@ check '{a;c*;b}|->!Gb' '&xPr'
|
|||
check '{a;c*;b}|->F!b' '&!xPr'
|
||||
check '{a;c*;b}|->GFa' '&!xPr'
|
||||
check '{a;c*;b}|->FGa' '&!xP'
|
||||
check '{a;c;b|(d;e)}|->!Xb' '&fPFsgopr'
|
||||
check '{a;c;b|(d;e)}|->X!b' '&!fPFsgopr'
|
||||
check '{a;c;b|(d;e)}|->!Fb' '&xPsopr'
|
||||
check '{a;c;b|(d;e)}|->G!b' '&!xPsopr'
|
||||
check '{a;c;b|(d;e)}|->!Gb' '&xPgopr'
|
||||
check '{a;c;b|(d;e)}|->F!b' '&!xPgopr'
|
||||
check '{a;c;b|(d;e)}|->GFa' '&!xPr'
|
||||
check '{a;c;b|(d;e)}|->FGa' '&!xPp'
|
||||
check '{a;c*;b}<>->!Gb' '&xPgopr'
|
||||
check '{a;c*;b}<>->F!b' '&!xPgopr'
|
||||
check '{a;c*;b}<>->FGb' '&!xPp'
|
||||
check '{a;c*;b}<>->!GFb' '&xPp'
|
||||
check '{a:b:c:d}!' 'B&!xfLEPSsgopr' # Equivalent to a&b&c&d
|
||||
check 'a&b&c&d' 'B&!xfLEPSsgopr'
|
||||
check '{a;c*;b}<>->GFb' '&!xP'
|
||||
check '{a;c*;b}<>->!FGb' '&xP'
|
||||
check '{a;c|d;b}<>->!Gb' '&xPgopr'
|
||||
check '{a;c|d;b}<>->G!b' '&!xPsopr'
|
||||
check '{a;c|d;b}<>->FGb' '&!xPp'
|
||||
check '{a;c|d;b}<>->!GFb' '&xPp'
|
||||
check '{a;c|d;b}<>->GFb' '&!xPr'
|
||||
check '{a;c|d;b}<>->!FGb' '&xPr'
|
||||
check '{a:b:c:d}!' 'B&!xfLEPSFsgopr' # Equivalent to a&b&c&d
|
||||
check 'a&b&c&d' 'B&!xfLEPSFsgopr'
|
||||
check '(Xa <-> XXXc) U (b & Fe)' 'LPgopr'
|
||||
check '(!X(a|X(!b))&(FX(g xor h)))U(!G(a|b))' 'LPgopr'
|
||||
check '(!X(a|X(!b))&(GX(g xor h)))R(!F(a|b))' 'LPsopr'
|
||||
|
|
@ -88,6 +104,11 @@ check 'Fa M GFb' '&!xLPer'
|
|||
check 'GFa W GFb' '&!xLPeur'
|
||||
check 'FGa W FGb' '&!xLPeu'
|
||||
check 'Ga W FGb' '&!xLPup'
|
||||
check '{a;b*;c}' '&!xfPsopr'
|
||||
check '{a;b*;c}!' '&!xfPgopr'
|
||||
check '!{a;b*;c}!' '&xfPsopr' # The negative normal form is {a;b*;c}[]->0
|
||||
check '{a;b*;c}[]->0' '&!xfPsopr'
|
||||
check '!{a;b*;c}' '&!xfPgopr+'
|
||||
|
||||
run 0 ../consterm '1'
|
||||
run 0 ../consterm '0'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue