Track syntactic classes.

These are safety, guarantee, obligation, persistence, and recurrence.

* src/ltlast/formula.hh, src/ltlast/formula.cc: Declare a bit for
each of these classes.
* src/ltlast/atomic_prop.cc, src/ltlast/constant.cc,
src/ltlast/automatop.cc, src/ltlast/binop.cc, src/ltlast/bunop.cc,
src/ltlast/unop.cc: Update these bits.
* src/ltltest/kind.test: Update tests and add more.
This commit is contained in:
Alexandre Duret-Lutz 2011-02-25 18:07:48 +01:00
parent 2669df1c96
commit df760a4597
9 changed files with 273 additions and 24 deletions

View file

@ -33,28 +33,61 @@ check()
test "$word" = "$2"
}
check 'a' 'B&!xfLEPS'
check 'a<->b' 'BxfLEPS'
check '!a' 'B&!xfLEPS'
check '!(a|b)' 'B&xfLEPS'
check 'F(a)' '&!xLPe'
check 'G(a)' '&!xLPu'
check 'a U b' '&!xfLP'
check 'a U Fb' '&!xLP'
check 'Ga U b' '&!xLP'
check '1 U a' '&!xfLPe'
check 'a W b' '&!xfLP'
check 'a W 0' '&!xfLPu'
check 'a M b' '&!xfLP'
check 'a M 1' '&!xfLPe'
check 'a R b' '&!xfLP'
check '0 R b' '&!xfLPu'
check '{a;b}|->!Xb' '&fP'
check '{a;b}|->X!b' '&!fP'
check '{a;b}|->!Gb' '&xP'
check '{a;b}|->F!b' '&!xP'
check '{a:b:c:d}!' 'B&!xfLEPS' # Equivalent to a&b&c&d
check 'a&b&c&d' 'B&!xfLEPS'
check 'a' 'B&!xfLEPSsgopr'
check 'a<->b' 'BxfLEPSsgopr'
check '!a' 'B&!xfLEPSsgopr'
check '!(a|b)' 'B&xfLEPSsgopr'
check 'F(a)' '&!xLPegopr'
check 'G(a)' '&!xLPusopr'
check 'a U b' '&!xfLPgopr'
check 'a U Fb' '&!xLPgopr'
check 'Ga U b' '&!xLPopr'
check '1 U a' '&!xfLPegopr'
check 'a W b' '&!xfLPsopr'
check 'a W 0' '&!xfLPusopr'
check 'a M b' '&!xfLPgopr'
check 'a M 1' '&!xfLPegopr'
check 'a R b' '&!xfLPsopr'
check '0 R b' '&!xfLPusopr'
check 'a R (b R (c R d))' '&!xfLPsopr'
check 'a U (b U (c U d))' '&!xfLPgopr'
check 'a W (b W (c W d))' '&!xfLPsopr'
check 'a M (b M (c M d))' '&!xfLPgopr'
check '{a;c*;b}|->!Xb' '&fPsopr'
check '{a;c*;b}|->X!b' '&!fPsopr'
check '{a;c*;b}|->!Fb' '&xPsopr'
check '{a;c*;b}|->G!b' '&!xPsopr'
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}<>->!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 '(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'
check '(!X(a|X(!b))&(GX(g xor h)))U(!G(a|b))' 'LPopr'
check '(!X(a|X(!b))&(FX(g xor h)))R(!F(a|b))' 'LPopr'
check '(!X(a|X(!b))&(GX(g xor h)))U(!F(a|b))' 'LPp'
check '(!X(a|X(!b))&(FX(g xor h)))R(!G(a|b))' 'LPr'
check '(!X(a|GXF(!b))&(FGX(g xor h)))U(!F(a|b))' 'LPp'
check '(!X(a|GXF(!b))&(FGX(g xor h)))R(!F(a|b))' 'LPp'
check '(!X(a|FXG(!b))&(GFX(g xor h)))R(!G(a|b))' 'LPr'
check '(!X(a|FXG(!b))&(GFX(g xor h)))U(!G(a|b))' 'LPr'
check '(!X(a|GXF(!b))&(FGX(g xor h)))U(!G(a|Fb))' 'LPp'
check '(!X(a|GXF(!b))&(FGX(g xor h)))U(!F(a|Gb))' 'LP'
check '(!X(a|FXG(!b))&(GFX(g xor h)))R(!F(a|Gb))' 'LPr'
check '(!X(a|FXG(!b))&(GFX(g xor h)))R(!G(a|Fb))' 'LP'
check 'GFa M GFb' '&!xLPeu'
check 'FGa M FGb' '&!xLPeup'
check 'Fa M GFb' '&!xLPer'
check 'GFa W GFb' '&!xLPeur'
check 'FGa W FGb' '&!xLPeu'
check 'Ga W FGb' '&!xLPup'
run 0 ../consterm '1'
run 0 ../consterm '0'