AMulet 2.0
AIG Multiplier Verification Tool
elimination.h
Go to the documentation of this file.
1 /*------------------------------------------------------------------------*/
11 /*------------------------------------------------------------------------*/
12 #ifndef _elimination_H
13 #define _elimination_H
14 /*------------------------------------------------------------------------*/
15 #include <string.h>
16 
17 #include "nss.h"
18 #include "pac.h"
19 #include "slicing.h"
20 /*------------------------------------------------------------------------*/
22 extern bool pac;
23 
25 extern bool nss;
26 /*------------------------------------------------------------------------*/
27 // Functions used for PAC proofs
28 
37 Polynomial * add_up_factors(FILE * file);
38 
39 
49 std::vector<Polynomial*> merge_factors
50  (FILE * file, std::vector<Polynomial*> container);
51 
52 
59 void add_up_spec_of_slice(FILE * file);
60 /*------------------------------------------------------------------------*/
61 // These functions are used to eliminate by one gate constraint
62 
70 void eliminate_by_one_gate(Gate * n1, Gate *n2, FILE * file);
71 
81 Polynomial * reduce_by_one_poly(const Polynomial * p1, Gate * n, FILE * file);
82 /*------------------------------------------------------------------------*/
83 // Variable elimination heuristics in XOR-based slicing
84 
90 void remove_internal_xor_gates(FILE * file);
91 
97 void remove_single_occs_gates(FILE * file);
98 
104 void remove_slice_minus_one_gates(FILE * file);
105 
106 /*------------------------------------------------------------------------*/
107 // Variable elimination heuristics taken from AMulet1.0
108 
114 void decomposing(FILE * file);
115 
116 
122 void eliminate_booth_pattern(FILE * file);
123 
124 /*------------------------------------------------------------------------*/
125 
133 Polynomial * inc_spec_poly(unsigned i);
134 
144 Polynomial * mod_poly(const Polynomial *p1, bool print_rule, FILE * file);
145 
152 void correct_pp_unsigned(const Polynomial * p, FILE * file);
153 
160 void correct_pp_signed(const Polynomial * p, FILE * file);
161 
171 void correct_pp(const Polynomial * p, FILE * file);
172 
173 /*------------------------------------------------------------------------*/
183 const Polynomial * reduce(FILE * file);
184 /*------------------------------------------------------------------------*/
185 // Functions used to find counter examples
193 bool check_inputs_only(const Polynomial *p);
194 
202 void write_witness_vector(const Term * t, FILE * file);
203 
210 void write_witnesses(const Polynomial * p, FILE * file);
211 
220 void generate_witness(const Polynomial * p, const char * name);
221 
222 #endif
Polynomial * inc_spec_poly(unsigned i)
Definition: elimination.cpp:424
void decomposing(FILE *file)
Definition: elimination.cpp:327
void generate_witness(const Polynomial *p, const char *name)
Definition: elimination.cpp:752
Polynomial * add_up_factors(FILE *file)
Definition: elimination.cpp:31
void remove_slice_minus_one_gates(FILE *file)
Definition: elimination.cpp:276
Definition: gate.h:32
contains functions necessary to generate PAC proofs
void eliminate_booth_pattern(FILE *file)
Definition: elimination.cpp:380
contains functions necessary to generate Nullstellensatz proofs
void write_witnesses(const Polynomial *p, FILE *file)
Definition: elimination.cpp:725
void add_up_spec_of_slice(FILE *file)
Definition: elimination.cpp:83
void write_witness_vector(const Term *t, FILE *file)
Definition: elimination.cpp:695
const Polynomial * reduce(FILE *file)
Definition: elimination.cpp:614
std::vector< Polynomial * > merge_factors(FILE *file, std::vector< Polynomial * > container)
Definition: elimination.cpp:56
Polynomial * mod_poly(const Polynomial *p1, bool print_rule, FILE *file)
Definition: elimination.cpp:463
void eliminate_by_one_gate(Gate *n1, Gate *n2, FILE *file)
Definition: elimination.cpp:110
void correct_pp_unsigned(const Polynomial *p, FILE *file)
Definition: elimination.cpp:529
void remove_internal_xor_gates(FILE *file)
Definition: elimination.cpp:175
void remove_single_occs_gates(FILE *file)
Definition: elimination.cpp:233
contains functions slice and order the gates
bool pac
True, when the PAC proof format is involved.
Definition: elimination.cpp:16
void correct_pp(const Polynomial *p, FILE *file)
Definition: elimination.cpp:607
bool nss
True, when the Nullstellensatz proof format is involved.
Definition: elimination.cpp:19
bool check_inputs_only(const Polynomial *p)
Definition: elimination.cpp:678
Definition: polynomial.h:23
Definition: term.h:23
Polynomial * reduce_by_one_poly(const Polynomial *p1, Gate *n, FILE *file)
Definition: elimination.cpp:140
void correct_pp_signed(const Polynomial *p, FILE *file)
Definition: elimination.cpp:560