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

#include <lidruptracer.hpp>

Inheritance diagram for CaDiCaL::LidrupTracer:
Collaboration diagram for CaDiCaL::LidrupTracer:

Public Member Functions

 LidrupTracer (Internal *, File *file, bool)
 
 ~LidrupTracer ()
 
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 lidruptracer.hpp.

Constructor & Destructor Documentation

◆ LidrupTracer()

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

Definition at line 11 of file cadical_lidruptracer.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:

◆ ~LidrupTracer()

CaDiCaL::LidrupTracer::~LidrupTracer ( )

Definition at line 45 of file cadical_lidruptracer.cpp.

45 {
46 LOG ("LIDRUP TRACER delete");
47 delete file;
48 for (size_t i = 0; i < size_clauses; i++)
49 for (LidrupClause *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::LidrupTracer::add_assumption ( int lit)
overridevirtual

Reimplemented from CaDiCaL::Tracer.

Definition at line 594 of file cadical_lidruptracer.cpp.

594 {
595 LOG ("LIDRUP TRACER tracing addition of assumption %d", lit);
596 assumptions.push_back (lit);
597}
int lit
Definition satVec.h:130

◆ add_assumption_clause()

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

Definition at line 478 of file cadical_lidruptracer.cpp.

480 {
481 if (file->closed ())
482 return;
483 CADICAL_assert (imported_clause.empty ());
484 LOG (clause,
485 "LIDRUP TRACER tracing addition of assumption clause[%" PRId64 "]",
486 id);
487 for (auto &lit : clause)
488 imported_clause.push_back (lit);
489 for (auto &cid : chain)
490 imported_chain.push_back (cid);
491 last_id = id;
492 insert ();
493 imported_clause.clear ();
494 imported_chain.clear ();
495}
struct clause_t clause
STRUCTURE DEFINITIONS ///.
Definition satClause.h:48

◆ add_constraint()

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

Definition at line 106 of file lidruptracer.hpp.

106{}

◆ add_derived_clause()

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

Definition at line 465 of file cadical_lidruptracer.cpp.

467 {
468 if (file->closed ())
469 return;
470 CADICAL_assert (imported_clause.empty ());
471 LOG (clause, "LIDRUP TRACER tracing addition of derived clause");
472 lidrup_add_derived_clause (id, clause, chain);
473#ifndef CADICAL_QUIET
474 added++;
475#endif
476}

◆ add_original_clause()

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

Definition at line 538 of file cadical_lidruptracer.cpp.

540 {
541 if (file->closed ())
542 return;
543 if (!restored) {
544 LOG (clause, "LIDRUP TRACER tracing addition of original clause");
545#ifndef CADICAL_QUIET
546 original++;
547#endif
548 return lidrup_add_original_clause (id, clause);
549 }
550 CADICAL_assert (restored);
551 if (find_and_delete (id)) {
552 LOG (clause,
553 "LIDRUP TRACER the clause was not yet weakened, so no restore");
554 return;
555 }
556 LOG (clause, "LIDRUP TRACER tracing addition of restored clause");
557 lidrup_add_restored_clause (id);
558#ifndef CADICAL_QUIET
559 restore++;
560#endif
561}

◆ begin_proof()

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

Reimplemented from CaDiCaL::Tracer.

Definition at line 103 of file lidruptracer.hpp.

103{}

◆ close()

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

Implements CaDiCaL::FileTracer.

Definition at line 633 of file cadical_lidruptracer.cpp.

633 {
635 file->close ();
636#ifndef CADICAL_QUIET
637 if (print) {
638 MSG ("LIDRUP proof file '%s' closed", file->name ());
639 print_statistics ();
640 }
641#else
642 (void) print;
643#endif
644}
#define MSG(...)
Definition message.hpp:49
Here is the call graph for this function:

◆ closed()

bool CaDiCaL::LidrupTracer::closed ( )
overridevirtual

Implements CaDiCaL::FileTracer.

Definition at line 606 of file cadical_lidruptracer.cpp.

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

◆ conclude_sat()

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

Definition at line 570 of file cadical_lidruptracer.cpp.

570 {
571 if (file->closed ())
572 return;
573 LOG (model, "LIDRUP TRACER tracing conclusion of model");
574 lidrup_conclude_sat (model);
575}

◆ conclude_unknown()

void CaDiCaL::LidrupTracer::conclude_unknown ( const vector< int > & entrailed)
override

Definition at line 577 of file cadical_lidruptracer.cpp.

577 {
578 if (file->closed ())
579 return;
580 LOG (entrailed, "LIDRUP TRACER tracing conclusion of UNK");
581 lidrup_conclude_unknown (entrailed);
582}

◆ conclude_unsat()

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

Definition at line 529 of file cadical_lidruptracer.cpp.

530 {
531 if (file->closed ())
532 return;
533 CADICAL_assert (imported_clause.empty ());
534 LOG (conclusion, "LIDRUP TRACER tracing conclusion of clause(s)");
535 lidrup_conclude_and_delete (conclusion);
536}

◆ connect_internal()

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

Reimplemented from CaDiCaL::InternalTracer.

Definition at line 39 of file cadical_lidruptracer.cpp.

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

◆ delete_clause()

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

Definition at line 497 of file cadical_lidruptracer.cpp.

497 {
498 if (file->closed ())
499 return;
500 CADICAL_assert (imported_clause.empty ());
501 LOG ("LIDRUP TRACER tracing deletion of clause[%" PRId64 "]", id);
502 if (find_and_delete (id)) {
503 CADICAL_assert (imported_clause.empty ());
504 if (!batch_delete.empty () || !batch_restore.empty ())
505 lidrup_batch_weaken_restore_and_delete ();
506 batch_weaken.push_back (id);
507#ifndef CADICAL_QUIET
508 weakened++;
509#endif
510 } else {
511 if (!batch_weaken.empty () || !batch_restore.empty ())
512 lidrup_batch_weaken_restore_and_delete ();
513 batch_delete.push_back (id);
514#ifndef CADICAL_QUIET
515 deleted++;
516#endif
517 }
518}

◆ finalize_clause()

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

Definition at line 104 of file lidruptracer.hpp.

104{}

◆ flush()

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

Implements CaDiCaL::FileTracer.

Definition at line 646 of file cadical_lidruptracer.cpp.

646 {
648 lidrup_batch_weaken_restore_and_delete ();
649 file->flush ();
650#ifndef CADICAL_QUIET
651 if (print) {
652 MSG ("LIDRUP proof file '%s' flushed", file->name ());
653 print_statistics ();
654 }
655#else
656 (void) print;
657#endif
658}
Here is the call graph for this function:

◆ report_status()

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

Reimplemented from CaDiCaL::Tracer.

Definition at line 563 of file cadical_lidruptracer.cpp.

563 {
564 if (file->closed ())
565 return;
566 LOG ("LIDRUP TRACER tracing report of status %d", status);
567 lidrup_report_status (status);
568}

◆ reset_assumptions()

void CaDiCaL::LidrupTracer::reset_assumptions ( )
overridevirtual

Reimplemented from CaDiCaL::Tracer.

Definition at line 599 of file cadical_lidruptracer.cpp.

599 {
600 LOG (assumptions, "LIDRUP TRACER tracing reset of assumptions");
601 assumptions.clear ();
602}

◆ solve_query()

void CaDiCaL::LidrupTracer::solve_query ( )
overridevirtual

Reimplemented from CaDiCaL::Tracer.

Definition at line 584 of file cadical_lidruptracer.cpp.

584 {
585 if (file->closed ())
586 return;
587 LOG (assumptions, "LIDRUP TRACER tracing solve query with assumptions");
588 lidrup_solve_query ();
589#ifndef CADICAL_QUIET
590 solved++;
591#endif
592}

◆ strengthen()

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

Reimplemented from CaDiCaL::Tracer.

Definition at line 105 of file lidruptracer.hpp.

105{}

◆ weaken_minus()

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

Definition at line 520 of file cadical_lidruptracer.cpp.

520 {
521 if (file->closed ())
522 return;
523 CADICAL_assert (imported_clause.empty ());
524 LOG ("LIDRUP TRACER tracing weaken minus of clause[%" PRId64 "]", id);
525 last_id = id;
526 insert ();
527}

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