CBMC
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
ait< domainT > Class Template Reference

ait supplies three of the four components needed: an abstract interpreter (in this case handling function calls via recursion), a history factory (using the simplest possible history objects) and storage (one domain per location). More...

#include <ai.h>

+ Inheritance diagram for ait< domainT >:
+ Collaboration diagram for ait< domainT >:

Public Types

 
- Public Types inherited from ai_baset
 
 
 
 
 
 

Public Member Functions

  ait ()
 
  ait (std::unique_ptr< ai_domain_factory_baset > &&df)
 
  Find the analysis result for a given location.
 
- Public Member Functions inherited from ai_recursive_interproceduralt
  ai_recursive_interproceduralt (std::unique_ptr< ai_history_factory_baset > &&hf, std::unique_ptr< ai_domain_factory_baset > &&df, std::unique_ptr< ai_storage_baset > &&st, message_handlert &mh)
 
- Public Member Functions inherited from ai_baset
  ai_baset (std::unique_ptr< ai_history_factory_baset > &&hf, std::unique_ptr< ai_domain_factory_baset > &&df, std::unique_ptr< ai_storage_baset > &&st, message_handlert &mh)
 
 
void  operator() (const irep_idt &function_id, const goto_programt &goto_program, const namespacet &ns)
  Run abstract interpretation on a single function.
 
  Run abstract interpretation on a whole program.
 
  Run abstract interpretation on a whole program.
 
  Run abstract interpretation on a single function.
 
  Returns all of the histories that have reached the start of the instruction.
 
  Returns all of the histories that have reached the end of the instruction.
 
  Get a copy of the abstract state before the given instruction, without needing to know what kind of domain or history is used.
 
  Get a copy of the abstract state after the given instruction, without needing to know what kind of domain or history is used.
 
  The same interfaces but with histories.
 
 
  Reset the abstract state.
 
virtual void  output (const namespacet &ns, const irep_idt &function_id, const goto_programt &goto_program, std::ostream &out) const
  Output the abstract states for a single function.
 
  Output the abstract states for a single function as JSON.
 
virtual xmlt  output_xml (const namespacet &ns, const irep_idt &function_id, const goto_programt &goto_program) const
  Output the abstract states for a single function as XML.
 
virtual void  output (const namespacet &ns, const goto_functionst &goto_functions, std::ostream &out) const
  Output the abstract states for a whole program.
 
void  output (const goto_modelt &goto_model, std::ostream &out) const
  Output the abstract states for a whole program.
 
void  output (const namespacet &ns, const goto_functionst::goto_functiont &goto_function, std::ostream &out) const
  Output the abstract states for a function.
 
  Output the abstract states for the whole program as JSON.
 
  Output the abstract states for a whole program as JSON.
 
  Output the abstract states for a single function as JSON.
 
  Output the abstract states for a single function as JSON.
 
  Output the abstract states for the whole program as XML.
 
  Output the abstract states for the whole program as XML.
 
  Output the abstract states for a single function as XML.
 
  Output the abstract states for a single function as XML.
 

Protected Member Functions

 
  Get the state for the given history, creating it with the factory if it doesn't exist.
 
- Protected Member Functions inherited from ai_recursive_interproceduralt
 
- Protected Member Functions inherited from ai_baset
virtual void  initialize (const irep_idt &function_id, const goto_programt &goto_program)
  Initialize all the abstract states for a single function.
 
  Initialize all the abstract states for a single function.
 
  Initialize all the abstract states for a whole program.
 
  Override this to add a cleanup or post-processing step after fixedpoint has run.
 
  Set the abstract state of the entry location of a single function to the entry state required by the analysis.
 
  Set the abstract state of the entry location of a whole program to the entry state required by the analysis.
 
  Get the next location from the work queue.
 
 
  Run the fixedpoint algorithm until it reaches a fixed point.
 
 
  Perform one step of abstract interpretation from trace t Depending on the instruction type it may compute a number of "edges" or applications of the abstract transformer.
 
 
 
 
  Merge the state src, flowing from tracet from to tracet to, into the state currently stored for tracet to.
 
virtual std::unique_ptr< statetmake_temporary_state (const statet &s)
  Make a copy of a state.
 

Private Member Functions

  This function exists to enforce that domainT is derived from ai_domain_baset.
 

Private Attributes

 

Additional Inherited Members

- Protected Types inherited from ai_baset
  The work queue, sorted using the history's ordering operator.
 
- Protected Attributes inherited from ai_baset
  For creating history objects.
 
  For creating domain objects.
 
std::unique_ptr< ai_storage_basetstorage
 
 

Detailed Description

template<typename domainT>
class ait< domainT >

ait supplies three of the four components needed: an abstract interpreter (in this case handling function calls via recursion), a history factory (using the simplest possible history objects) and storage (one domain per location).

The fourth component, the domain, is provided by the template parameter. This is gives a "classical" abstract interpreter and is backwards compatible with older code.

Template Parameters
domainT A type derived from ai_domain_baset that represents the values in the AI domain

Definition at line 565 of file ai.h.

Member Typedef Documentation

◆  locationt

template<typename domainT >

Definition at line 589 of file ai.h.

Constructor & Destructor Documentation

◆  ait() [1/2]

template<typename domainT >
ait< domainT >::ait ( )
inline

Definition at line 569 of file ai.h.

◆  ait() [2/2]

template<typename domainT >
ait< domainT >::ait ( std::unique_ptr< ai_domain_factory_baset > &&  df )
inlineexplicit

Definition at line 579 of file ai.h.

Member Function Documentation

◆  dummy()

template<typename domainT >
void ait< domainT >::dummy ( const domainTs )
inlineprivate

This function exists to enforce that domainT is derived from ai_domain_baset.

Definition at line 626 of file ai.h.

◆  get_state() [1/2]

template<typename domainT >
virtual statet & ait< domainT >::get_state ( locationt  l )
inlineprotectedvirtual
Deprecated:
"deprecated since " "2019" "-" "08" "-" "01" "; " "use get_state(trace_ptrt p) instead"

Definition at line 615 of file ai.h.

◆  get_state() [2/2]

template<typename domainT >
virtual statet & ai_baset::get_state ( trace_ptrt  p )
inlineprotectedvirtual

Get the state for the given history, creating it with the factory if it doesn't exist.

Reimplemented from ai_baset.

Definition at line 519 of file ai.h.

◆  operator[]()

template<typename domainT >
inline

Find the analysis result for a given location.

Deprecated:
"deprecated since " "2019" "-" "08" "-" "01" "; " "use abstract_state_{before,after} instead"

Definition at line 597 of file ai.h.

Member Data Documentation

◆  no_logging

template<typename domainT >
private

Definition at line 629 of file ai.h.


The documentation for this class was generated from the following file:
  • /home/runner/work/cbmc/cbmc/src/analyses/ai.h

AltStyle によって変換されたページ (->オリジナル) /