Summary: | typechecker does not check ranges of constant expressions | ||
---|---|---|---|
Product: | UPPAAL | Reporter: | Marius Mikučionis <marius> |
Component: | libutap | Assignee: | Alexandre David <adavid> |
Status: | CLOSED DUPLICATE | ||
Severity: | minor | ||
Priority: | P2 | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Architecture: | |||
Bug Depends on: | 488 | ||
Bug Blocks: |
Description
Marius Mikučionis
2009-05-22 22:25:42 CEST
now I've found a case where range checker is too restrictive when dealing with clocks: Declarations: typedef int[0, 10000000] time_t; const int MULT = 4; const int CYCLE = 250*1000/MULT; const int CYCLELIMIT = 12*MULT; time_t counter=1; clock global; then put expression "global<=counter*CYCLE" into invariant or guard. For MULT=4 Uppaal says "clock constraint is out of range", but it is fine with MULT=1 or MULT=2. please ignore my last comment: my fault, the issue can be fixed by the following declaration: int[0, CYCLELIMIT] counter=1; the fix for this bug seems to depend on the fix for bug 488. *** This bug has been marked as a duplicate of bug 488 *** Actually it's not a duplicate of bug 488. It's similar but not the same. The lexer was not able to recognize INT_MIN due to overflow on positive integers even though it should have done it. This comes from the rule (unary not) natural. There's a special case for that now. The real overflow issue has been fixed in the same revision but it's a different fix. |