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:
parent
2669df1c96
commit
df760a4597
9 changed files with 273 additions and 24 deletions
|
|
@ -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'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue