Systems and methods are disclosed to determine “don't care” variables in programming code. The method comprises obtaining an SMT formula having a plurality of SMT variables from programming code; obtaining a simplified SMT formula from the SMT formula, the simplified SMT formula includes a plurality of simplified SMT variables; obtaining an SAT formula from the simplified SMT formula, the SAT formula includes a plurality of SAT variables; determining which of the plurality of the SMT variables are “don't care” variables from the simplified SMT formula; and determining which of the plurality of the SMT variables are “don't care” variables from the simplified SAT formula.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A method comprising: obtaining an SMT formula having a plurality of SMT variables from programming code; obtaining a simplified SMT formula from the SMT formula, the simplified SMT formula including a plurality of simplified SMT variables; obtaining an SAT formula from the simplified SMT formula, the SAT formula including a plurality of SAT variables; determining which of the plurality of the SMT variables are “don't care” variables using the simplified SMT formula; and determining which of the plurality of the SMT variables are “don't care” variables using the simplified SAT formula. 2. The method according to claim 1, wherein the determining which of the plurality of the SMT variables are “don't care” variables from the simplified SMT formula further comprises: creating an SMT substitution map; determining which of the SMT variables are not included in either or both of the simplified SMT variables and the SMT substitution map; and outputting the SMT variables are not included in either or both of the simplified SMT variables and the SMT substitution map. 3. The method according to claim 1, wherein the determining which of the plurality of the SMT variables are “don't care” variables from the simplified the SAT formula further comprises: obtaining an SAT solution trail by solving the SAT formula, wherein the SAT solution trail orders the SAT variables in an ordered list of SAT variables; determining the first SAT variable in the ordered list of SAT variables that can be eliminated from the SAT formula while the SAT formula has a solution; identifying the remaining SAT variables that can be eliminated from the SAT formula while the SAT formula has a solution; and determining the SMT variables associated with SAT variables that can be eliminated. 4. The method according to claim 3, wherein obtaining an SAT solution trail further comprises applying the DPLL algorithm to the SAT formula. 5. The method according to claim 1, wherein obtaining an SAT formula further comprises bitblasting the simplified SMT formula. 6. The method according to claim 1, wherein the simplifying the SMT formula further comprises applying a linear array solver to the SMT formula and/or applying array read/write elimination on the SMT formula. 7. The method according to claim 1, further comprising determining whether there is an error in the programming code based on the “don't care” variables. 8. A method comprising: receiving programming code; obtaining an SMT formula from the programming code, the SMT formula including a plurality of SMT variables; simplifying the SMT formula into a simplified SMT formula having a plurality of simplified SMT variables; creating an SMT substitution map; determining which of the SMT variables are not included in either or both of the simplified SMT formula and the SMT substitution map; and outputting the SMT variables that are not included in either or both of the simplified SMT formula and the SMT substitution map. 9. The method according to claim 8, wherein the simplifying the SMT formula further comprises applying a linear array solver to the SMT formula and/or applying array read/write elimination on the SMT formula. 10. The method according to claim 8, wherein the determining which of the SMT variables are not included in either or both of the simplified SMT variables and the SMT substitution map further comprises an iterative process that iterates through each of the SMT variables. 11. The method according to claim 8, wherein the SMT variables that are not included in either or both of the simplified SMT variables and the SMT substitution map are “don't care” variables. 12. The method according to claim 8, further comprising determining whether there is an error in the programming code based on the SMT variables that are not included in either or both of the simplified SMT formula and the SMT substitution map. 13. A method comprising: obtaining an SMT formula; obtaining a simplified SMT formula from the SMT formula, the simplified SMT formula including a plurality of simplified SMT variables; obtaining an SAT formula from the simplified SMT formula, the SAT formula including a plurality of SAT variables; obtaining an SAT solution trail by solving the SAT formula, the SAT solution trail orders the SAT variables in an ordered list of SAT variables; determining the first SAT variable in the ordered list of SAT variables that can be eliminated from the SAT formula while the SAT formula has a solution; identifying the remaining SAT variables that can be eliminated from the SAT formula while the SAT formula has a solution; and determining the SMT variables associated with SAT variables that can be eliminated. 14. The method according to claim 13, wherein the obtaining an SAT formula further comprises bitblasting the simplified SMT formula. 15. The method according to claim 13, wherein obtaining an SAT solution trail further comprises applying the DPLL algorithm to the SAT formula. 16. The method according to claim 13, wherein the determining the first SAT variable in the ordered list of SAT variables that can be eliminated from the SAT formula further comprises an iterative process that illuminates at least half of the SAT variables from a portion of the SAT solution trail. 17. The method according to claim 16, wherein at least a portion of the SAT solution trail in a subsequent iteration is half the size of the SAT solution trail in the previous iteration. 18. The method according to claim 13, wherein obtaining an SMT formula further comprises: receiving programming code; and creating the SMT formula having a plurality of SMT variables from the programming code. 19. The method according to claim 13, wherein the simplifying the SMT formula further comprises applying a linear array solver to the SMT formula and/or applying array read/write elimination on the SMT formula. 20. The method according to claim 13, further comprising determining whether there are errors in the programming code based on the SMT variables associated with SAT variables that can be eliminated.