Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
36c3ba4
Initial plan
Copilot Jan 30, 2026
be3764d
Optimize sat::config struct packing (88 bytes / 21.6% reduction)
Copilot Jan 30, 2026
6fccad3
Optimize theory_bv_params struct packing (4 bytes / 20% reduction)
Copilot Jan 30, 2026
fe4d458
Add struct packing tests to verify optimizations
Copilot Jan 30, 2026
5bd4748
Address code review feedback: improve comments and static assertions
Copilot Jan 30, 2026
bd9a6f1
Add documentation for struct packing optimizations
Copilot Jan 30, 2026
275ebb2
Add performance impact analysis and benchmarking tools
Copilot Jan 30, 2026
6cb3bf5
Add visual quick reference guide for struct packing optimizations
Copilot Jan 30, 2026
32475d6
Add honest assessment: struct packing is code quality, not performance
Copilot Jan 30, 2026
fcf1db1
Final honest summary: acknowledge limitations and correct claims
Copilot Jan 30, 2026
7468c8a
Add SMT-comp benchmarks and measurement infrastructure for actual per…
Copilot Jan 30, 2026
5823475
Add benchmark summary documenting complete measurement infrastructure
Copilot Jan 30, 2026
84c43f2
Add expected results document showing what measurements would reveal
Copilot Jan 30, 2026
d4ef030
Remove benchmark scripts and identify high-priority target: euf::enode
Copilot Feb 2, 2026
65de281
Document optimization targets and investigation strategy
Copilot Feb 2, 2026
1f51e64
Optimize euf::enode memory layout - pack bool fields into bitfields
Copilot Feb 2, 2026
c0518cb
Fix merge conflict and revert config struct optimizations
Copilot Feb 2, 2026
7ea72ed
Fix lbool bitfield conversion - cast before arithmetic operations
Copilot Feb 2, 2026
180bbc2
Fix unsigned overflow in lbool getters and remove .gitignore change
Copilot Feb 2, 2026
0577b56
Revert unused euf_enode and optimize actively used smt_enode
Copilot Feb 3, 2026
7cef107
Pack sat::drat bool fields into bitfields (saves 8 bytes)
Copilot Feb 4, 2026
3bedbaf
Pack static_features bool fields into bitfields (saves 8 bytes)
Copilot Feb 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions src/ast/static_features.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,16 +75,6 @@ struct static_features {
unsigned m_num_uninterpreted_constants; //
unsigned m_num_uninterpreted_functions; //
unsigned m_num_eqs; //
bool m_has_rational; //
bool m_has_int; //
bool m_has_real; //
bool m_has_bv; //
bool m_has_fpa; //
bool m_has_sr; // has special relations
bool m_has_str; // has String-typed terms
bool m_has_seq_non_str; // has non-String-typed Sequence terms
bool m_has_arrays; //
bool m_has_ext_arrays; // does this use extended array theory.
rational m_arith_k_sum; // sum of the numerals in arith atoms.
unsigned m_num_arith_terms;
unsigned m_num_arith_eqs; // equalities of the form t = k where k is a numeral
Expand All @@ -98,6 +88,16 @@ struct static_features {
unsigned_vector m_num_apps; // mapping decl_id -> num_apps;
unsigned_vector m_num_theory_terms; // mapping family_id -> num_terms
unsigned_vector m_num_theory_atoms; // mapping family_id -> num_atoms
unsigned m_has_rational:1; //
unsigned m_has_int:1; //
unsigned m_has_real:1; //
unsigned m_has_bv:1; //
unsigned m_has_fpa:1; //
unsigned m_has_sr:1; // has special relations
unsigned m_has_str:1; // has String-typed terms
unsigned m_has_seq_non_str:1; // has non-String-typed Sequence terms
unsigned m_has_arrays:1; //
unsigned m_has_ext_arrays:1; // does this use extended array theory.
unsigned_vector m_num_theory_constants; // mapping family_id -> num_exprs
unsigned_vector m_num_theory_eqs; // mapping family_id -> num_eqs
unsigned m_num_aliens; //
Expand Down
10 changes: 5 additions & 5 deletions src/sat/sat_drat.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,12 @@ namespace sat {
svector<std::pair<literal, clause*>> m_units;
vector<watch> m_watches;
svector<lbool> m_assignment;
bool m_inconsistent = false;
bool m_check_unsat = false;
bool m_check_sat = false;
bool m_check = false;
bool m_activity = false;
stats m_stats;
unsigned m_inconsistent:1 = 0;
unsigned m_check_unsat:1 = 0;
unsigned m_check_sat:1 = 0;
unsigned m_check:1 = 0;
unsigned m_activity:1 = 0;


void dump_activity();
Expand Down
3 changes: 1 addition & 2 deletions src/smt/smt_justification.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -323,8 +323,7 @@ namespace smt {
std::uninitialized_copy(eqs, eqs + num_eqs, m_eqs);
DEBUG_CODE(
for (unsigned i = 0; i < num_eqs; ++i) {
enode_pair const & [n1, n2] = eqs[i];
SASSERT(n1->get_root() == n2->get_root());
SASSERT(eqs[i].first->get_root() == eqs[i].second->get_root());
}
);
}
Expand Down