-
bmc.h
- External header file
-
bmcInt.h
- Internal header file
-
bmcCheck.c
- Some useful functions to check propositional formulae.
Temporary located into the bmc package
-
bmcCmd.c
- BMC commands.
-
bmcModel.c
- Model Manager for the bmc package
-
bmcRbc.c
- Implementation for generic interface to rbc. Temporary located
in the bmc package
-
bmcRbc2bexp.c
- Convert an RBC to corresponding Boolean Expression
-
bmcSatsolver.c
- BMC interface to SAT solvers.
-
bmcTest.c
- Test routines for bmc package
-
bmcUtils.c
- Useful internal functions of the bmc package
-
bmcVarsMgr.c
- Variables Manager for the bmc package
-
bmcWff.c
- Well Formed Formula manipulation routines
bmc.h
External header file
By: Roberto Cavada
-
()
- Use this macro when you need to know if a string representing
loopback value means "all possible loops"
-
()
- Use this macro when you need to know if a string representing
loopback value means "no loopback"
bmcInt.h
Internal header file
By: Roberto Cavada
bmcCheck.c
Some useful functions to check propositional formulae.
Temporary located into the bmc package
By: Roberto Cavada
-
Bmc_CheckFairnessListForPropositionalFormulae()
- Help function to simplify calling to 'bmc_check_wff_list'
for searching of propositional only wff. Returns a new list of wffs which
contains legal wff only
-
Bmc_WffListMatchProperty()
- For each element belonging to a given list of wffs,
calls the given matching function. If function matches, calls given
answering function
-
Bmc_IsPropositionalFormula()
- Given a wff returns 1 if wff is a propositional formula,
zero (0) otherwise.
-
bmc_is_propositional_formula_aux()
- Useful wrapper for
Bmc_CheckFairnessListForPropositionalFormulae
-
bmc_check_if_wff_is_valid()
- private service for
Bmc_CheckFairnessListForPropositionalFormulae
-
bmc_add_valid_wff_to_list()
- private service for
Bmc_CheckFairnessListForPropositionalFormulae
bmcCmd.c
BMC commands.
By: Roberto Cavada
Command file
-
()
- Declares a set of variables used by the options saving code
-
()
- Use this macro in command processing functions in order to
save options default values, so avoiding any side effect on those options
-
()
- Exits from the function after have restored all options
values saved using BMC_CMD_SAVE_OPTIONS.
-
Bmc_AddCmd()
- Adds all bmc-related commands to the interactive shell
-
CommandBmcSetup()
- Initializes the bmc sub-system, and builds the model in
RBC format
-
UsageBmcSetup()
- Usage string for CommandBmcSetup
-
CommandBmcSimulate()
- CommandBmcSimulate generates a trace of the problem
represented from the simple path from 0 (zero) to k
-
UsageBmcSimulate()
- Usage string for UsageBmcSimulate
-
CommandBmcLtlsat()
- Builds a problem for given k and l, then
calls the solver
-
UsageBmcLtlsat()
- Usage string for UsageBmcLtlsat
-
Bmc_GenSolveInvar()
- Genetate DIMACS version and/or solve and INVARSPEC
problem.
-
Bmc_GenSolvePbs()
- Given a LTL property generates and solve the problems
for all Ki (k_min<=i<=k_max). If bIncreaseK is 0 then k_min==k_max==k and
only one problem is generated. If bIncreaseK is 1 then k_min == 0 and
k_max == k.
Each problem Ki takes into account of all possible loops from k_min to Ki
if loopback is '*' (BMC_ALL_LOOPS).
If bCreateDimacs == TRUE then create dimacs before solving.
Solver is called only if bSolve == TRUE, otherwise each problem is only
generated and dumped to dimacs file
-
BmcSatGenProblemKL()
-
-
BmcSatGenProblemK()
- Generates the problem taking into account of k
parameter, and writes the problem into a dimacs file
-
BmcSatGenInvar()
- Generates the invariant problem taking a INVAR
specification, and writes the problem into a dimacs file
-
BmcSatSolveFalsificationProblem()
- Given a problem calls the solver and returns a
counterexample if there is any
-
BmcSatSolveInvar()
- BmcSatSolveInvar
-
Prop_GetRbcFsmCoi()
- Builds the RBC model, applying the cone of influence
if it has been enabled by user.
-
CommandCheckLtlSpecBmc()
- Checks the given LTL specification, or all LTL
specifications if no formula is given. Parameters are the maximum
length and the loopback values
-
UsageBmcCheckLtlSpec()
- Usage string for command check_ltlspec_bmc
-
CommandCheckLtlSpecBmcOnePb()
- Checks the given LTL specification, or all LTL
specifications if no formula is given. Checking parameters are the problem
length and the loopback values
-
UsageBmcCheckLtlSpecOnePb()
- Usage string for command check_ltlspec_bmc_onepb
-
CommandGenLtlSpecBmcOnePb()
- Generates only one problem of fixed length and
loopback, and dumps the problem to a dimacs file. The single problem
is dumped for the given LTL specification, or for all LTL
specifications if no formula is given
-
UsageBmcGenLtlSpecOnePb()
- Usage string for command gen_ltlspec_bmc_onepb
-
CommandGenLtlSpecBmc()
- Generates length_max+1 problems iterating length from
zero to length_max, and dumps each problem to a dimacs file. Each problem
is dumped for the given LTL specification, or for all LTL
specifications if no formula is given. Generation parameters are the maximum
length and the loopback values
-
UsageBmcGenLtlSpec()
- Usage string for command gen_ltlspec_bmc
-
CommandGenInvarBmc()
- Generates and dumps the problem for the given
invariant or for all invariants if no formula is given. SAT solver is not
invoked.
-
UsageBmcGenInvar()
- Usage string for command gen_invar_bmc
-
CommandCheckInvarBmc()
- Generates and solve the given invariant, or all
invariants if no formula is given
-
UsageBmcCheckInvar()
- Usage string for command check_invar_bmc
-
bmc_CommandsWith_k_l_OptionsHandling()
- Bmc commands options handling for commands with
-k and -l options
-
bmc_CommandsWithout_k_l_OptionsHandling()
- Bmc commands options handling for commands without
-k and -l options
-
bmcSave_k_l()
- Stores current vaues of length and loopback into two
given variables
-
bmcSaveDimacsFilenames()
- Stores current default dimacs filenames into a buffer
-
bmcRestoreDimacsFilenames()
- Restores the original value of dimacs filenames option
bmcModel.c
Model Manager for the bmc package
By: Alessandro Cimatti, Lorenzo Delana and Roberto Sebastiani
-
Bmc_Mk_k_Path()
- Returns the path for the model from 0 to k,
taking into account initial conditions and invariants
-
Bmc_MkTableau_k_Noloop()
- Builds tableau without loop at time zero, taking account
of fairnesses
-
Bmc_MkTableau_k_l()
- Builds the tableau at time zero. Loop is allowed
-
Bmc_MkTableauAtTime()
- Given a wff expressed in ltl builds the model-independent
tableau at 'time' of a path formula bounded by [k, l]
-
Bmc_MkNextTableauAtTime()
- Resolve the NEXT operator, building the tableau for
its argument
-
Bmc_MkEventuallyTableauAtTime()
- Resolves the future operator, and builds a conjunctive
expression of tableaus, by iterating intime up to k in a different manner
depending on the [l, k] interval form
-
Bmc_MkGloballyTableauAtTime()
- As Bmc_MkEventuallyTableauAtTime, but builds a
conjunctioned expression in order to be able to assure a global constraint
-
Bmc_MkUntilTableauAtTime()
- Builds an expression which evaluates the until operator
-
Bmc_MkReleasesTableauAtTime()
- Builds an expression which evaluates the release
operator
-
Bmc_MkProblem_k_l()
- Returns the problem at length k with loopback l
(possibly BMC_NO_LOOP)
-
Bmc_MkProblem_k()
- Returns all problems for the model at length k with
all loops from 0 to k
-
Bmc_MkInvariantProblem()
- Builds and returns the invariant problem of the given propositional formula
-
bmc_mk_j_k_unrolling()
- Unrolls the transition relation from j to k, taking
into account invars over next variables
-
bmc_mk_loopback()
- Shifts current and next vars in trans expression
respectively to k and l steps, if a loop exists.
Returns truth if no loop exists
-
bmc_mk_fairness()
- Generates and returns an expression representing
all fairnesses in a conjunctioned form
-
bmc_succ_k_l_loop()
- Given time<=k and a [l, k] interval, returns next
time, or BMC_NO_LOOP if time is equal to k and there is no loop
-
bmc_mk_tableau_k_loops()
- Builds tableau for all possible loops in [l, k],
taking into account of fairness
-
bmc_mk_tableau_k_loops_depth1()
- Builds tableau for all possible loops in [l, k], in
the particular case in which depth is 1. This function takes into account
of fairness
-
bmc_mk_untiltableau_at_time_aux()
- auxiliary part of Bmc_MkUntilTableauAtTime
-
bmc_mk_releasestableau_at_time_aux()
- auxiliary part of Bmc_MkReleasesTableauAtTime
-
bmc_mk_all_loops()
- Builds the disjunction of all the loops from 0 to k
bmcRbc.c
Implementation for generic interface to rbc. Temporary located
in the bmc package
By: Roberto Cavada
This implementation depends on the rbc package is being used.
Implementation is currently a thin wrapper around rbc supplied interface, so
functions are really minimal
-
Bmc_RbcIsTrue()
- Returns 1 if the given rbc is the true value,
otherwise returns 0
-
Bmc_RbcIsFalse()
- Returns 1 if the given rbc is the false value,
otherwise returns 0
-
Bmc_RbcTruth()
- Builds a rbc 'true' constant value
-
Bmc_RbcFalsity()
- Builds a rbc 'false' constant value
-
Bmc_RbcNot()
- Negates its rbc argument
-
Bmc_RbcAnd()
- Builds a new rbc which is the conjunction between
its two arguments
-
Bmc_RbcOr()
- Builds a new rbc which is the disjunction of
its two arguments
-
Bmc_RbcXor()
- Builds a new rbc which is the exclusive-disjunction
of its two arguments
-
Bmc_RbcImplies()
- Builds a new rbc which is the implication between
its two arguments
-
Bmc_RbcIff()
- Builds a new rbc which is the logical equivalence
between its two arguments
-
Bmc_RbcIte()
- Builds an if-then-else operation rbc
-
Bmc_RbcVarShift()
- Creates a fresh copy G(X') of the rbc F(X) by shifting
each variable index of a given amount
-
BmcShiftingHashInit()
- Initializes private hast table member for shifting
operations
-
BmcShiftingHashQuit()
- Deletes private hast table member for shifting
operations
bmcRbc2bexp.c
Convert an RBC to corresponding Boolean Expression
By: Lorenzo Delana
-
Bmc_Rbc2Bexp()
- Given an rbc, constructs the corresponding boolean
expression
-
Rbc2bexpDfsData_push()
- Sets a node into the stack
-
Rbc2bexpDfsData_head()
- Rbc2bexpDfsData_head
-
Rbc2bexpDfsData_pop()
- Rbc2bexpDfsData_pop
-
Rbc2bexp_Set()
- Rbc2bexpSet
-
Rbc2bexp_First()
- Rbc2bexpFirst
-
Rbc2bexp_Back()
- Rbc2bexp_Back
-
Rbc2bexp_Last()
- Rbc2bexp_Last
bmcSatsolver.c
BMC interface to SAT solvers.
By: Alessandro Cimatti and Lorenzo Delana
Contains the primitives for dumping a CNF formula in a
DIMACS file, calling an external solver (e.g. SATO), and calling an
internal solver (e.g. SIM).
-
Bmc_DimacsWriteProblem()
- Writes a BMC problem in Dimacs format.
-
Bmc_DavinciWriteProblem()
- Dumps Davinci format to a specified file
-
Bmc_CallSimSolver()
- Bmc interface to Sim as internal solver
-
Bmc_CallSatoSolver()
- Interface to external solver SATO.
-
CnfWriteDimacs()
- Ouput a list of clauses on a DIMACS file.
-
CallSimSolver()
- A simple function to interface a call to Sim.
If the sim solver successfully returns a model, the representation of that
model can be found into the list lsResult, which must be previously created.
Returns:
- SAT_INTERNAL_ERROR if an error occurred
- SAT_UNSATISFIABLE_PROBLEM if the formula is unsatisfiable
- SAT_SATISFIABLE_PROBLEM if the assignment satisfying
the formula. In this case lsResult points to a list of literals
bmcTest.c
Test routines for bmc package
By: Roberto Cavada
-
Bmc_TestReset()
- Call this function to reset the test sub-package (into
the reset command for example)
-
Bmc_MkLoopbackLtl()
- For each variable p in the set of state variables,
generates the global equivalence of p and X^(loop length), starting from
the loop start
-
Bmc_TestTableau()
- The first time Bmc_TestTableau is called in the current
session this function creates a smv file with a model and generates a random
ltl spec to test tableau. The following times it is called it appends a new
formula to the file.
-
UsageBmcTestTableau()
- Usage string for Bmc_TestTableau
-
Bmc_TestVarsMgr()
- Bmc_TestVarsMgr
-
bmc_gen_tableau_test()
- Given a WFF in NNF, converts it into a tableau
formula, then back to WFF_(k,l) and returns WFF -> WFF_(k,l)
-
bmc_gen_wff()
- Builds a random LTL WFF with specified
max depth and max connectives.
-
BmcBexpOutput()
- Write to specified FILE stream given node_ptr
formula with specified output_type format. There are
follow formats: BMC_BEXP_OUTPUT_SMV, BMC_BEXP_OUTPUT_LB
bmcUtils.c
Useful internal functions of the bmc package
By: Roberto Cavada
-
Bmc_Init()
- Initializes the BMC model manager structure
-
Bmc_Quit()
- Frees all resources allocated for the BMC model manager
-
Bmc_ConvertLoopbackFromString()
- Given a string representing a loopback possible value,
returns the integer corresponding value as parameter. Returns SUCCESS if
conversion was possible, SYNTAX_ERROR otherwise
-
Bmc_ConvertLoopbackFromInteger()
- Given an integer containing the inner representation
of the loopback value, returns as parameter the corresponding user-side
value as string.
-
Bmc_StripPath()
- Return pathname without path prefix
-
Bmc_StripPathExt()
- Returns filename without path and extension
-
BmcIntFreeListOfLists()
- Destroys a list of list
-
freeListOfLists_aux()
- Private service for BmcIntFreeListOfLists
bmcVarsMgr.c
Variables Manager for the bmc package
By: Alessandro Cimatti and Lorenzo Delana
-
Bmc_VarsMgrGetNum()
- Returns the
number of variables currently handled by the Variables Manager
-
Bmc_VarsMgrGetMaxtime()
- Returns the
maximum time currently handled by the variable environment
-
Bmc_VarsMgrGetRbcMgr()
- Returns the
variable environment data structure
-
Bmc_MapBexp2Rbc()
- Converts given boolean expressions list
into correspondent reduced boolean circuits list
-
Bmc_Bexp2Rbc()
- Converts given boolean expression into
correspondent reduced boolean circuit
-
Bmc_ExtendsMaxtime()
- Extends maxtime at given
new_maxtime
-
Bmc_CurrShiftToNext()
- Shift given current expression at
next time
-
Bmc_CurrNextShiftAtTime()
- Shift given current, next expression at
specified time
-
Bmc_CurrNextShiftAtTimes()
- Shift given current, next expression at
specified ctime (current vars at time) and ntime (next
vars at time)
-
Bmc_MkAndCurrNextInterval()
- Make an AND interval of given expression using
range [from, to]
-
Bmc_MkOrCurrNextInterval()
- Make an OR interval of given expression using
range [from, to]
-
Bmc_Statevar2Curvar()
- Search the association from given state variable and
its relative rbc representation, and returns the rbc form
-
Bmc_GetIthStatevar()
- Given the relative index returns the state variable
which addresses
-
Bmc_Curvar2Statevar()
- Given a rbc representation of a variable, returns the
relative state variable
-
Bmc_GetIthCurvar()
- As Bmc_GetIthStatevar but in terms of rbc
representation
-
Bmc_GetIthNextvar()
- As Bmc_GetIthCurvar but relatively to next state
variables block
-
Bmc_GetIthTimedvar()
- As Bmc_GetIthNextvar but relatively to 'time' indexed
state variables block
-
Bmc_Curvar2Nextvar()
- Given a rbc current variable, returns the rbc variable
corrisponding to the next variables block
-
Bmc_Statevar2Nextvar()
- As Bmc_Curvar2Nextvar but current variable must be
supplied in state variable form instead of rbc form
-
Bmc_Nextvar2Timedvar()
- Given a rbc next variable, returns the rbc variable
corrisponding to the 'time' index variables block
-
Bmc_Curvar2Timedvar()
- Given a rbc current variable, returns the rbc variable
corrisponding to the 'time' index variables block
-
Bmc_Statevar2Timedvar()
- As Bmc_Curvar2Timedvar but current variable must be
supplied in state variable form instead of rbc form
-
Bmc_Timedvar2Curvar()
- Given a variable which belongs to a timed block of
variables, returns the corrisponding current variable in rbc form
-
Bmc_Timedvar2Statevar()
- Given a variable which belongs to a timed block of
variables, returns the corrisponding state variable
-
Bmc_Nextvar2Statevar()
- Given a variable which belongs to the next block of
variables, returns the corrisponding state variable
-
Bmc_Timedvar2Nextvar()
- Given a variable which belongs to a timed block of
variables, returns the corrisponding variable in rbc form which belongs to
the next block of variables
-
Bmc_Nextvar2Curvar()
- Given a variable which belongs to the next block of
variables, returns the corrisponding current variable in rbc form
-
Bmc_Time2Firstvar()
- Returns the first variable in rbc form which belongs to
the given block of variables indexed by 'time'
-
Bmc_VarIndex2Time()
- Given a variable index returns the corresponding time
-
Bmc_VarIndex2StateVarIndex()
- Given the index of a timed variable, returns the index
of the corresponding state variable
-
BmcVarsMgrInit()
- Initialize BMC Variables Manager
-
BmcVarsMgrQuit()
- Quit from BMC Variables Manager
-
bmc_vars_mgr_set_env()
- Stores a new variable environment
data structure
-
bmc_vars_mgr_set_num()
- Sets the
number of variables handled by the Variables Manager
-
bmc_vars_mgr_set_maxtime()
- Sets the
maximum time currently handled by the variable environment
-
scan_state_vars_bexp()
- Builds all internal structures used in order to
perform searches and conversion from different variable representation
forms
bmcWff.c
Well Formed Formula manipulation routines
By: Alessandro Cimatti and Lorenzo Delana
-
Bmc_WffMkBinary()
- Make a binary WFF
-
Bmc_WffMkUnary()
- Make a unary WFF
-
Bmc_WffMkConst()
- Make a constant WFF
-
Bmc_WffMkTruth()
- Make a truth WFF
-
Bmc_WffMkFalsity()
- Make a false WFF
-
Bmc_WffMkNot()
- Make a not WFF
-
Bmc_WffMkAnd()
- Make an and WFF
-
Bmc_WffMkOr()
- Make an or WFF
-
Bmc_WffMkImplies()
- Make an implies WFF
-
Bmc_WffMkIff()
- Make an iff WFF
-
Bmc_WffMkNext()
- Make a next WFF
-
Bmc_WffMkXopNext()
- Applies op_next x times
-
Bmc_WffMkOpNext()
- Make an op_next WFF
-
Bmc_WffMkGlobally()
- Make a globally WFF
-
Bmc_WffMkEventually()
- Make an eventually WFF
-
Bmc_WffMkUntil()
- Make an until WFF
-
Bmc_WffMkReleases()
- Make a releases WFF
-
Bmc_LtlWffMkNnfToplevel()
- Make the negative normal form of given WFF
-
Bmc_GetLtlWffDepth()
- Returns the modal depth of the given formula
Last updated on 1020130 15h19