ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
CaDiCaL::IdrupTracer Class Reference

#include <idruptracer.hpp>

Inheritance diagram for CaDiCaL::IdrupTracer:
Collaboration diagram for CaDiCaL::IdrupTracer:

Public Member Functions

 IdrupTracer (Internal *, File *file, bool)
 
 ~IdrupTracer ()
 
void add_derived_clause (int64_t, bool, const vector< int > &, const vector< int64_t > &) override
 
void add_assumption_clause (int64_t, const vector< int > &, const vector< int64_t > &) override
 
void weaken_minus (int64_t, const vector< int > &) override
 
void delete_clause (int64_t, bool, const vector< int > &) override
 
void add_original_clause (int64_t, bool, const vector< int > &, bool=false) override
 
void report_status (int, int64_t) override
 
void conclude_sat (const vector< int > &) override
 
void conclude_unsat (ConclusionType, const vector< int64_t > &) override
 
void conclude_unknown (const vector< int > &) override
 
void solve_query () override
 
void add_assumption (int) override
 
void reset_assumptions () override
 
void begin_proof (int64_t) override
 
void finalize_clause (int64_t, const vector< int > &) override
 
void strengthen (int64_t) override
 
void add_constraint (const vector< int > &) override
 
void connect_internal (Internal *i) override
 
bool closed () override
 
void close (bool) override
 
void flush (bool) override
 
- Public Member Functions inherited from CaDiCaL::FileTracer
 FileTracer ()
 
virtual ~FileTracer ()
 
- Public Member Functions inherited from CaDiCaL::InternalTracer
 InternalTracer ()
 
virtual ~InternalTracer ()
 
- Public Member Functions inherited from CaDiCaL::Tracer
 Tracer ()
 
virtual ~Tracer ()
 
virtual void add_original_clause (int64_t, bool, const std::vector< int > &, bool=false)
 
virtual void add_derived_clause (int64_t, bool, const std::vector< int > &, const std::vector< int64_t > &)
 
virtual void delete_clause (int64_t, bool, const std::vector< int > &)
 
virtual void demote_clause (uint64_t, const std::vector< int > &)
 
virtual void weaken_minus (int64_t, const std::vector< int > &)
 
virtual void finalize_clause (int64_t, const std::vector< int > &)
 
virtual void add_constraint (const std::vector< int > &)
 
virtual void add_assumption_clause (int64_t, const std::vector< int > &, const std::vector< int64_t > &)
 
virtual void conclude_unsat (ConclusionType, const std::vector< int64_t > &)
 
virtual void conclude_sat (const std::vector< int > &)
 
virtual void conclude_unknown (const std::vector< int > &)
 

Detailed Description

Definition at line 20 of file idruptracer.hpp.

Constructor & Destructor Documentation

◆ IdrupTracer()

CaDiCaL::IdrupTracer::IdrupTracer ( Internal * i,
File * file,
bool b )

Definition at line 11 of file cadical_idruptracer.cpp.

12 : internal (i), file (f), binary (b), num_clauses (0), size_clauses (0),
13 clauses (0), last_hash (0), last_id (0), last_clause (0)
14#ifndef CADICAL_QUIET
15 ,
16 added (0), deleted (0)
17#endif
18{
19 (void) internal;
20
21 // Initialize random number table for hash function.
22 //
23 Random random (42);
24 for (unsigned n = 0; n < num_nonces; n++) {
25 uint64_t nonce = random.next ();
26 if (!(nonce & 1))
27 nonce++;
28 CADICAL_assert (nonce), CADICAL_assert (nonce & 1);
29 nonces[n] = nonce;
30 }
31#ifndef CADICAL_NDEBUG
32 binary = b;
33#else
34 (void) b;
35#endif
36 piping = file->piping ();
37}
#define CADICAL_assert(ignore)
Definition global.h:14
long random()
Here is the call graph for this function:

◆ ~IdrupTracer()

CaDiCaL::IdrupTracer::~IdrupTracer ( )

Definition at line 45 of file cadical_idruptracer.cpp.

45 {
46 LOG ("IDRUP TRACER delete");
47 delete file;
48 for (size_t i = 0; i < size_clauses; i++)
49 for (IdrupClause *c = clauses[i], *next; c; c = next)
50 next = c->next, delete_clause (c);
51 delete[] clauses;
52}
#define LOG(...)

Member Function Documentation

◆ add_assumption()

void CaDiCaL::IdrupTracer::add_assumption ( int lit)
overridevirtual

Reimplemented from CaDiCaL::Tracer.

Definition at line 507 of file cadical_idruptracer.cpp.

507 {
508 LOG ("IDRUP TRACER tracing addition of assumption %d", lit);
509 assumptions.push_back (lit);
510}
int lit
Definition satVec.h:130

◆ add_assumption_clause()

void CaDiCaL::IdrupTracer::add_assumption_clause ( int64_t id,
const vector< int > & clause,
const vector< int64_t > &  )
override

Definition at line 407 of file cadical_idruptracer.cpp.

409 {
410 if (file->closed ())
411 return;
412 CADICAL_assert (imported_clause.empty ());
413 LOG (clause, "IDRUP TRACER tracing addition of assumption clause");
414 for (auto &lit : clause)
415 imported_clause.push_back (lit);
416 last_id = id;
417 insert ();
418 imported_clause.clear ();
419}
struct clause_t clause
STRUCTURE DEFINITIONS ///.
Definition satClause.h:48

◆ add_constraint()

void CaDiCaL::IdrupTracer::add_constraint ( const vector< int > & )
inlineoverride

Definition at line 99 of file idruptracer.hpp.

99{}

◆ add_derived_clause()

void CaDiCaL::IdrupTracer::add_derived_clause ( int64_t ,
bool ,
const vector< int > & clause,
const vector< int64_t > &  )
override

Definition at line 394 of file cadical_idruptracer.cpp.

396 {
397 if (file->closed ())
398 return;
399 CADICAL_assert (imported_clause.empty ());
400 LOG (clause, "IDRUP TRACER tracing addition of derived clause");
401 idrup_add_derived_clause (clause);
402#ifndef CADICAL_QUIET
403 added++;
404#endif
405}

◆ add_original_clause()

void CaDiCaL::IdrupTracer::add_original_clause ( int64_t id,
bool ,
const vector< int > & clause,
bool restored = false )
override

Definition at line 451 of file cadical_idruptracer.cpp.

453 {
454 if (file->closed ())
455 return;
456 if (!restored) {
457 LOG (clause, "IDRUP TRACER tracing addition of original clause");
458#ifndef CADICAL_QUIET
459 original++;
460#endif
461 return idrup_add_original_clause (clause);
462 }
463 CADICAL_assert (restored);
464 if (find_and_delete (id)) {
465 LOG (clause,
466 "IDRUP TRACER the clause was not yet weakened, so no restore");
467 return;
468 }
469 LOG (clause, "IDRUP TRACER tracing addition of restored clause");
470 idrup_add_restored_clause (clause);
471#ifndef CADICAL_QUIET
472 restore++;
473#endif
474}

◆ begin_proof()

void CaDiCaL::IdrupTracer::begin_proof ( int64_t )
inlineoverridevirtual

Reimplemented from CaDiCaL::Tracer.

Definition at line 96 of file idruptracer.hpp.

96{}

◆ close()

void CaDiCaL::IdrupTracer::close ( bool print)
overridevirtual

Implements CaDiCaL::FileTracer.

Definition at line 544 of file cadical_idruptracer.cpp.

544 {
546 file->close ();
547#ifndef CADICAL_QUIET
548 if (print) {
549 MSG ("IDRUP proof file '%s' closed", file->name ());
550 print_statistics ();
551 }
552#else
553 (void) print;
554#endif
555}
#define MSG(...)
Definition message.hpp:49
Here is the call graph for this function:

◆ closed()

bool CaDiCaL::IdrupTracer::closed ( )
overridevirtual

Implements CaDiCaL::FileTracer.

Definition at line 519 of file cadical_idruptracer.cpp.

519{ return file->closed (); }
Here is the caller graph for this function:

◆ conclude_sat()

void CaDiCaL::IdrupTracer::conclude_sat ( const vector< int > & model)
override

Definition at line 483 of file cadical_idruptracer.cpp.

483 {
484 if (file->closed ())
485 return;
486 LOG (model, "IDRUP TRACER tracing conclusion of model");
487 idrup_conclude_sat (model);
488}

◆ conclude_unknown()

void CaDiCaL::IdrupTracer::conclude_unknown ( const vector< int > & trail)
override

Definition at line 490 of file cadical_idruptracer.cpp.

490 {
491 if (file->closed ())
492 return;
493 LOG (trail, "IDRUP TRACER tracing conclusion of unknown state");
494 idrup_conclude_unknown (trail);
495}

◆ conclude_unsat()

void CaDiCaL::IdrupTracer::conclude_unsat ( ConclusionType ,
const vector< int64_t > & conclusion )
override

Definition at line 442 of file cadical_idruptracer.cpp.

443 {
444 if (file->closed ())
445 return;
446 CADICAL_assert (imported_clause.empty ());
447 LOG (conclusion, "IDRUP TRACER tracing conclusion of clause(s)");
448 idrup_conclude_and_delete (conclusion);
449}

◆ connect_internal()

void CaDiCaL::IdrupTracer::connect_internal ( Internal * i)
overridevirtual

Reimplemented from CaDiCaL::InternalTracer.

Definition at line 39 of file cadical_idruptracer.cpp.

39 {
40 internal = i;
41 file->connect_internal (internal);
42 LOG ("IDRUP TRACER connected to internal");
43}

◆ delete_clause()

void CaDiCaL::IdrupTracer::delete_clause ( int64_t id,
bool ,
const vector< int > & clause )
override

Definition at line 421 of file cadical_idruptracer.cpp.

422 {
423 if (file->closed ())
424 return;
425 CADICAL_assert (imported_clause.empty ());
426 LOG ("IDRUP TRACER tracing deletion of clause[%" PRId64 "]", id);
427 idrup_delete_clause (id, clause);
428}

◆ finalize_clause()

void CaDiCaL::IdrupTracer::finalize_clause ( int64_t ,
const vector< int > &  )
inlineoverride

Definition at line 97 of file idruptracer.hpp.

97{}

◆ flush()

void CaDiCaL::IdrupTracer::flush ( bool print)
overridevirtual

Implements CaDiCaL::FileTracer.

Definition at line 557 of file cadical_idruptracer.cpp.

557 {
559 file->flush ();
560#ifndef CADICAL_QUIET
561 if (print) {
562 MSG ("IDRUP proof file '%s' flushed", file->name ());
563 print_statistics ();
564 }
565#else
566 (void) print;
567#endif
568}
Here is the call graph for this function:

◆ report_status()

void CaDiCaL::IdrupTracer::report_status ( int status,
int64_t  )
overridevirtual

Reimplemented from CaDiCaL::Tracer.

Definition at line 476 of file cadical_idruptracer.cpp.

476 {
477 if (file->closed ())
478 return;
479 LOG ("IDRUP TRACER tracing report of status %d", status);
480 idrup_report_status (status);
481}

◆ reset_assumptions()

void CaDiCaL::IdrupTracer::reset_assumptions ( )
overridevirtual

Reimplemented from CaDiCaL::Tracer.

Definition at line 512 of file cadical_idruptracer.cpp.

512 {
513 LOG (assumptions, "IDRUP TRACER tracing reset of assumptions");
514 assumptions.clear ();
515}

◆ solve_query()

void CaDiCaL::IdrupTracer::solve_query ( )
overridevirtual

Reimplemented from CaDiCaL::Tracer.

Definition at line 497 of file cadical_idruptracer.cpp.

497 {
498 if (file->closed ())
499 return;
500 LOG (assumptions, "IDRUP TRACER tracing solve query with assumptions");
501 idrup_solve_query ();
502#ifndef CADICAL_QUIET
503 solved++;
504#endif
505}

◆ strengthen()

void CaDiCaL::IdrupTracer::strengthen ( int64_t )
inlineoverridevirtual

Reimplemented from CaDiCaL::Tracer.

Definition at line 98 of file idruptracer.hpp.

98{}

◆ weaken_minus()

void CaDiCaL::IdrupTracer::weaken_minus ( int64_t id,
const vector< int > &  )
override

Definition at line 430 of file cadical_idruptracer.cpp.

430 {
431 if (file->closed ())
432 return;
433 CADICAL_assert (imported_clause.empty ());
434 LOG ("IDRUP TRACER tracing weaken minus of clause[%" PRId64 "]", id);
435 last_id = id;
436 insert ();
437#ifndef CADICAL_QUIET
438 weakened++;
439#endif
440}

The documentation for this class was generated from the following files: