README for REDLIB.
README file for REDLIB version 1
----------------------------------------------------------------
This package contains the materials for the library executable of
REDLIB.
It contains the following four files.
1. README.redlib.a.txt
That is this file.
2. redlib.a
The executable for REDLIB.
3. redlib.h
The header file to be included for the
constants, types, macro definitions that can be used with
redlib.a.
4. redlib.e
The external declaraions for variables and procedures that
can be used with redlib.a.
5. redlib.pdf
This is a user manual for REDLIB.
This information is not up-to-date.
There can be some features and functions of the newest REDLIB
that are not written in the manual.
****************************************
Change log:
=================================
Notes on 12 Dec. 2009
In enhancing the capability of our symbolic simulator pathg,
we have implemented the following new functions to REDLIB.
1. As you might have known, in pathg, at each step, it shows the
accumulated execution time along a path.
This is implemented with a special clock TIME
in REDLIB with large time-bounds.
This was kind of incompatible with the way the other clocks were
manipulated.
All the other clocks are used the same bound derived from the biggest
timing constants used in the model and in the spec.
Thus clock TIME needs some exceptional manipulations in various procedures.
In previous version of REDLIB, some of the procedures were not
updated to manipulate the exceptional cases with clock TIME.
Such bugs were exposed in the usage of pathg.
This new version has many such bugs removed.
However REDLIB now is huge now.
We do not have the confidence that all the procedures have been updated
to take care of the exceptional cases with clcok TIME.
If you found any anomalies that looks suspicious, we will appreciate
your notification with detailed error traces and models.
2. To make pathg a more powerful simulator, we have enhanced
its procedures for oracle testing.
Thus we have provided a new version of procedure check_oracle()
in file pathgame_strategy.c.
With the new version, users can check if the current state predicate
satisfies some properties.
3. To make pathg an even more powerful simulator, we have implemented
a backtrack command that can be issued in each step.
With this option, now the users can move forward, backtrack one step,
and reset to the initial state.
We believe this will be useful in exploring the state space and
constructing test plans.
4. Also, the counter-example capabilities of forward reachability analysis
did not really work.
In this new version, we have fixed the bug.
=================================
Notes on 22 Feb. 2010
There have been the following enhancements to REDLIB.
1. We have implemented stream data types for test data input
with pathg.
However, all such features are disabled in model-checking,
simulation-checking, and reachability analysis at the moment.
2. We have revised the procedures for some preprocessing techniques
of the models.
These include the simple procedures for over-approximation of
reachable modes and firable transitions of each process.
Especially, now we can analysis those mode changes incurred
by actions like `mode = v;' where v is a variable.
Such actions are essential in our model generated for
C/C++ programs with procedure calls.
3. We have also enhanced the procedures for analyzing the inactive
variables.
=================================
Notes on 11 Dec. 2009
There were some features that may be against the intuition of
users.
1. The reachability returned with red_reach_fwd() and red_reach_bck()
when no full reachability is optined and an counter example is constructed
does not include the states in the last iteration.
2. The counter example generation for forward analysis did not quite
work.
We have changed the features to be more compatible with the users'
intuition.
=================================
Notes on 08 Dec. 2009
In the last update, we have changed the option interaction
regarding abstraction, counter-example generation, and reachability
construction.
Unfortunately, we missed the change of some post condition procedure
invocations.
As a result, some post conditions are either calculated incorrectly or
incur core dump.
We have fixed the bug in this new version.
=================================
Notes on 07 Dec. 2009
In response to some users' feedback,
we have make the following changes.
1. We have moved some of the preliminary analysis for model-checking
from offline to runtime so that the preliminary analysis does not
become a burden in running the symbolic simulator pathg.
2. There was a conflict in the approximation options, the counter-example
options, and full reachability options.
The conflict is as follows.
2a. If an over-approximation was used, then no counter-example would
be generated since REDLIB would think the reachability was
inconclusive and the counter-example could be false.
We now change the implementation so that counter-examples may still
be generated with option over-approximation.
We believe this is more intuitive for using the approximation options
and can help the users carrying out experiment about CEGAR techniques.
2b. Also in the before, if users specify option for full reachability,
then counter-example option is disabled.
The reasoning of REDLIB for this implementation decision was that
full reachability could be generated at a deep least fixpoint
iteration while the counter-example may be generated at a shallow
least fixpoint iteration.
To avoid the confusion, so REDLIB chose not generate counter examples
when full reachability option was selected.
But we feel that this could be less than intuitive and may restrict
the innovation of the users in using REDLIB.
So now will generate a counter-example, maybe at a shallow least
fixpoint iteration, even if the full reachability is constructed
at a deep least fixpoint iteration.
=================================
Notes on 26 Nov. 2009
In the execution of pathg, we use a diagram, say SYNC_ALL, that
records the synchronization among all transitions.
SYNC_ALL also records the triggering conditions of all the transitions.
SYNC_ALL was constructed before the verification tasks,
e.g. symbolic simulation or model-checking, of the model are started.
It turns out that the large number of transitions and complex triggering
conditions incurs huge memory consumption in the construction of SYNC_ALL.
We have thus decided to bypass the construction of SYNC_ALL and
analyse the synchronous transitions that can be triggered at a step online.
We also found that SYNC_ALL is actually mainly used with pathg.
So the change does not affect red and the other redlib applications.
=================================
Notes on 12 Nov. 2009
We have changed a bug in red_reach_bck() that
does not set the value of rr->reachability correctly.
=================================
Notes on 7 Nov. 2009
We have modified REDLIB for the following purpose.
1. To integrate the modules of REDLIB parser so that
all parsing are through the same flow.
2. To maintain the original form of model input when
users want to reconstruct the model from REDLIB.
Before this version, REDLIB would remove all macro constants,
special constant symbols, and inline expressions when users
query for the model structure.
Now we add an option to red_input_model(),
red_input_rules(), red_end_declaration(), and
red_change_declaration().
=================================
Notes on 5 Nov. 2009
We have fixed some bugs related to new experiment conducted with REDLIB.
=================================
Notes on 31 Oct. 2009
We have added capability of file inclusion in
the model file of RED models.
The users can write C-like compile time commmand in the following.
#include "file_name"
Then RED will create an intermediate representation with file_name
inserted.
The file inclusion capability of RED now allows for recursive
file inclusion.
However, duplicate file inclusion will be signaled and only done once.
Also C-like comments are allowed freely to be used
with the file inclusion command.
=================================
Notes on 20 Oct. 2009
There was a lot of update notes for previous versions of REDLIB.
But due to the unexpected revision of SourceFore,
we lost all the previous update notes.
So now we learn to be smart by relying on the service of SourceForge
as little as possible.
So from now on we will have this README file in the downloadable package
of REDLIB and we will have the update logs directly put down in this
README file from now on.
In this new version of REDLIB, we have experimented with some
techniques for the efficient evaluation of word-level constraints.
The techniques are not based on bounded model-checking or BMD.
We have also fixed some bugs of REDLIB.
=======================================================
August 7, 2009
There was some bugs in REDLIB regarding the
support for pathg.
The bug is about the degenerate case when there is no clock
or when the system is untimed.
Then the bug is that pathg still wants to measure time progress
after each transition and access some clocks.
Such clocks of course do not exist in the degenerate case.
We have fixed the bugs.
=================================
Notes on 081005:
In this new version, we have substantially extend the interface of
the RED modeling language to industry applications.
There are three main changes.
1. Attributes for graph drawing:
We have added new attributes to the RED modeling language
for the drawing of the graphs.
This includes the shape of the modes, the color of the modes,
the coordinates of the modes, the nail coordinates of the transitions,
and the labeling of the modes and transitions.
2. Inline functions:
Now in RED, we can declare and use inline function calls.
This can be very convenient in writing complex control mechanism.
Users can declare two types of inline functions.
One is Boolean and the other is discrete.
The first can be used as predicates while the second as discrete functions
in invariances and triggers.
3. Conditional expressions:
Now we also extend the modeling language with C-like conditional
expressions with the following format.
(condition) ? exp1 : exp2
condition is any state-predicate of RED.
exp1 and exp2 are two discrete expressions.
If condition is evalauted true, then the expression behaves like exp1.
Otherwise, it behaves like exp2.
Another minor feature change is with quantification expressions.
In previous version, when we write a quantified expression like
forall i, condition
forall i:i>5, condition
exists i, condition
exists i:i<7, condition
The range of i is always interpreted to be in [1, #PS] where
#PS is the number of processes.
This syntax design is restrictive and cannot support the complex
constraints on any finite ranges.
Thus in this version, we have relaxed the syntax to the following.
forall i:u..w, condition
exists i:u..w, condition
Here u and w are two constant expressions that explicitly state the
lower-bound and upper-bound of the quantified variable i.
=================================
Notes on 080615:
Again we found that we have crashed the bisimulation capabilities for untimed systems while we recently experimented with some new techniques for TCTL model-checking.
We will thus include some untimed benchmarks in our
regresstional testing file.
===================================
Notes on 080612:
While experimenting with some techniques to improve the
model-checking performance of RED, we accidentally
disabled the simulation/bisimulation checking capability
of RED.
Also, we found that the new procedure in REDLIB
that allows for the input of new modes and rules
does not take into consideration of the changes of
. the value ranges of the transition variable and
. the value ranges of the mode variable
for each process.
So we now fix the bugs.
====================================
Notes 080602:
We have implemented several speed-up techniques for the model-checking of timed inevitabilities of the following forms.
forall eventually {[c,d]} p
or
exists always {[c,d]} p
====================================
Notes on 080518:
In response to Mondale Wang's request, we have
reimplemented procedure red_diagram_discrete_model_count
so that now it returns the number of all solutions to the
user-declared discrete variables in the parameter
diagram.
=======================================
Notes on 080518:
Due to the request of Mondale Wang, I have reimplemented
procedure red_diagram_discrete_model_count() so that now
it calculates the number of solutions to the user-declared
discrete variables.
=======================================
Notes on 080508:
In comparison with the previous releases, there are the following two changes.
1. We have tested our simulation checking capabilities for
an untimed benchmark. As a result, we found that some
procedures may access some data structures that are
allocated only for timed systems and run into
segmentation faults. We have removed some bugs in this
aspect to make RED also applicable for untimed system
simulation checking.
2. We have identified a bug in a zone normalization
procedure. In general, the corresponding normal form
is not the default one. Thus the bugs may not
affect the correctness of the function of our previous
releases.
===========================================
Notes on 080506:
In the previous release, to make a consistent presentation
of counter examples for both LHA and TA, we have added a
new parameter to a precondition calculation procedure.
However, we did not check all the files that use this
procedure. As a result, the simulation checking and
bisimulation checking capabilities were destroyed.
In this new version, we have corrected the bug.
===========================================
Notes on 080504:
This version supports the following verification tasks.
1. for timed automata
a. safety/risk analysis,
b. TCTL model-checking,
c. simulation checking, and
d. bisimulation checking.
2. for linear-hybrid automata
a. parametric risk analysis
Note that we have not restored all the functionalities for address enforcers in the synchronizers
REDLIB Files
Status: Alpha
Brought to you by:
farn_red