IP Library Granted Patent US 12,688,022
Granted Patent B2
US 12,688,022 · App. 18/108,383 · Granted Jul 21, 2026

Method, product, and system for solving arbitrary constraint satisfaction problems

Inventors: Nicolas Beauchesne (Honolulu, HI); Sohrob Kazerounian (Brookline, MA); William Stow Finlayson, IV (Cherry Hill, NJ); Karl Matthew Lynn (San Jose, CA)
Assignee: Vectra AI, Inc.
G06F8/447G06F8/36G06F11/366G06F11/3688G06F11/3698
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,688,022
App. No.
18/108,383
Filed
Feb 10, 2023
Granted
Jul 21, 2026
Kind
B2
Art Unit
2151
USPC
717/153
Abstract

Disclosed is an approach for solving arbitrary constraint satisfaction problems. In some embodiments, the approach includes a process to generate a software representation of what is possible based on a system corresponding to the constraint satisfaction problem. The software representation comprises a state machine where different states can be reached using respective transitions or properties which are possible as determined based on a current state of the system and parameters thereof whether global or otherwise.

Claims (39)

1 . A method comprising:

identifying data corresponding to a constraint satisfaction problem associated with a system, wherein the data represents a plurality of variables and a plurality of constraints for the constraint satisfaction problem;

generating a software representation of the system based on the data, wherein the software representation comprises the plurality of variables, the plurality of constraints, and one or more crash statements inserted into the software representation for causing a crash when the software representation determines that an input satisfies the plurality of constraints; and

analyzing the software representation to identify one or more solutions to the constraint satisfaction problem associated with the system using respective inputs of a plurality of inputs at least by:

generating, by a fuzzer, a respective input to be processed by the software representation,

mapping the respective input generated by the fuzzer to the plurality of variables in the software representation,

traversing the software representation to execute one or more statements based on at least a subset of the plurality of variables to determine whether the respective input satisfies the plurality of constraints, and

when the respective input satisfies the constraint satisfaction problem, execution of the one or more statements based on at least a subset of the plurality of variables causes execution of a crash statement of the one or more crash statements inserted into the software representation.

2 . The method of claim 1 , wherein the software representation comprises a source code representation or an executable compiled from the source code representation and represents a plurality of states and possible transitions between states.

3 . The method of claim 1 , wherein the software representation comprises a source code representation or an executable compiled from the source code representation and encapsulates a bitmap representing a plurality of states and transitions between states.

4 . The method of claim 1 , wherein the software representation represents a plurality of global parameters and access to a plurality of resources depends upon at least respective sets of one or more global parameters of the plurality of global parameters.

5 . The method of claim 1 , wherein the system comprises information pertaining to interrelationships between entities.

6 . The method of claim 1 , wherein inputs to one or more instances of the software representation are generated by respective fuzzers.

7 . The method of claim 6 , wherein a plurality of fuzzers operate in parallel to generate inputs to respective instances of the software representation.

8 . A non-transitory computer readable medium having stored thereon a set of instructions, the set of instructions, when executed by a processor, causing a set of acts comprising:

identifying data corresponding to a constraint satisfaction problem associated with a system, wherein the data represents a plurality of variables and a plurality of constraints for the constraint satisfaction problem;

generating a software representation of the system based on the data, wherein the software representation comprises the plurality of variables, the plurality of constraints, and one or more crash statements inserted into the software representation for causing a crash when the software representation determines that an input satisfies the plurality of constraints; and

analyzing the software representation to identify one or more solutions to the constraint satisfaction problem associated with the system using respective inputs of a plurality of inputs at least by:

generating, by a fuzzer, a respective input to be processed by the software representation,

mapping the respective input generated by the fuzzer to the plurality of variables in the software representation,

traversing the software representation to execute one or more statements based on at least a subset of the plurality of variables to determine whether the respective input satisfies the plurality of constraints, and

when the respective input satisfies the constraint satisfaction problem, execution of the one or more statements based on at least a subset of the plurality of variables causes execution of a crash statement of the one or more crash statements inserted into the software representation.

9 . The non-transitory computer readable medium of claim 8 , wherein the software representation comprises a source code representation or an executable compiled from the source code representation and represents a plurality of states and possible transitions between states.

10 . The non-transitory computer readable medium of claim 8 , wherein the software representation comprises a source code representation or an executable compiled from the source code representation and encapsulates a bitmap representing a plurality of states and transitions between states.

11 . The non-transitory computer readable medium of claim 8 , wherein the software representation represents a plurality of global parameters and access to a plurality of resources depends upon at least respective sets of one or more global parameters of the plurality of global parameters.

12 . The non-transitory computer readable medium of claim 8 , wherein the system comprises information pertaining to interrelationships between entities.

13 . The non-transitory computer readable medium of claim 8 , wherein inputs to one or more instances of the software representation are generated by respective fuzzers.

14 . The non-transitory computer readable medium of claim 13 , wherein a plurality of fuzzers operate in parallel to generate inputs to respective instances of the software representation.

15 . A computing system comprising:

a memory storing a set of instructions; and

a processor to execute the set of instructions to perform a set of acts comprising:

identifying data corresponding to a constraint satisfaction problem associated with a system, wherein the data represents a plurality of variables and a plurality of constraints for the constraint satisfaction problem;

generating a software representation of the system based on the data, wherein the software representation comprises the plurality of variables and the plurality of constraints; and

analyzing the software representation to identify possible solutions to the constraint satisfaction problem associated with the system using a fuzzer to generate inputs to the software representation, wherein the inputs generated by the fuzzer are mapped to at least one of the plurality of variables and the software representation is used to determine whether an input satisfies corresponding constraints of the plurality of constraints.

16 . The computing system of claim 15 , wherein the software representation comprises a source code representation or an executable compiled from the source code representation and represents a plurality of states and possible transitions between states.

17 . The computing system of claim 15 , wherein the software representation comprises a source code representation or an executable compiled from the source code representation and encapsulates a bitmap representing a plurality of states and transitions between states.

18 . The computing system of claim 15 , wherein the software representation represents a plurality of global parameters and access to a plurality of resources depends upon at least respective sets of one or more global parameters of the plurality of global parameters.

19 . The computing system of claim 15 , wherein the system comprises information pertaining to interrelationships between entities.

20 . The computing system of claim 15 , wherein inputs to one or more instances of the software representation are generated by respective fuzzers and a plurality of fuzzers operate in parallel to generate inputs to respective instances of the software representation.

Assignments (2)
SECURITY INTEREST Recorded Oct 29, 2024
From: VECTRA AI, INC.
To: AB PRIVATE CREDIT INVESTORS LLC, AS ADMINISTRATIVE AGENT
Reel/Frame 069061/0588 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2023
From: BEAUCHESNE, NICOLAS; KAZEROUNIAN, SOHROB; FINLAYSON, WILLIAM STOW, IV; LYNN, KARL MATTHEW
To: VECTRA AI, INC.
Reel/Frame 062661/0298 →
Continuity (6)
Continuation In Part 17711868 · Apr 1, 2022
Continuation In Part 17711903 · Apr 1, 2022
Continuation In Part 17711811 · Apr 1, 2022
Continuation In Part 17711850 · Apr 1, 2022
Continuation In Part 17711884 · Apr 1, 2022
Related Publication 20230315413A1 · Oct 5, 2023
References Cited (100)
US 6321338B1 · Porras et al. · 2001 [cited by applicant]
US 6651099B1 · Dietz et al. · 2003 [cited by applicant]
US 7305383B1 · Kubesh et al. · 2007 [cited by applicant]
US 8272061B1 · Lotem et al. · 2012 [cited by applicant]
US 9432394B1 · Lahiri et al. · 2016 [cited by applicant]
US 10148685B2 · Hassanzadeh et al. · 2018 [cited by applicant]
US 10528868B2 · Gillespie · 2020 [cited by examiner]
US 11922712B2 · Tsibulevskiy · 2024 [cited by examiner]
US 20030051026A1 · Carter et al. · 2003 [cited by applicant]
US 20030188189A1 · Desai et al. · 2003 [cited by applicant]
US 20080044018A1 · Scrimsher et al. · 2008 [cited by applicant]
US 20130097125A1 · Marvasti et al. · 2013 [cited by applicant]
US 20130283360A1 · Hui et al. · 2013 [cited by applicant]
US 20130340083A1 · Petrica et al. · 2013 [cited by applicant]
US 20140279808A1 · Strassner · 2014 [cited by applicant]
US 20150033340A1 · Giokas · 2015 [cited by applicant]
US 20160301704A1 · Hassanzadeh et al. · 2016 [cited by applicant]
US 20170161498A1 · Yavo · 2017 [cited by applicant]
US 20180232523A1 · Copty · 2018 [cited by examiner]
US 20190109872A1 · Dhakshinamoorthy et al. · 2019 [cited by applicant]
US 20190182287A1 · Hanley et al. · 2019 [cited by applicant]
US 20190228098A1 · Daly · 2019 [cited by examiner]
US 20190266071A1 · Copty · 2019 [cited by examiner]
US 20200022003A1 · Bizzarri et al. · 2020 [cited by applicant]
US 20200028861A1 · Pritzkau et al. · 2020 [cited by applicant]
US 20200073783A1 · Hortala · 2020 [cited by examiner]
US 20200177618A1 · Hassanzadeh et al. · 2020 [cited by applicant]
US 20200193031A1 · Avraham et al. · 2020 [cited by applicant]
US 20200304534A1 · Rakesh et al. · 2020 [cited by applicant]
US 20210194924A1 · Heinemeyer et al. · 2021 [cited by applicant]
US 20210243208A1 · Rubin et al. · 2021 [cited by applicant]
US 20210243226A1 · El Gamal et al. · 2021 [cited by applicant]
US 20210248443A1 · Shu et al. · 2021 [cited by applicant]
US 20210336971A1 · Robbins et al. · 2021 [cited by applicant]
US 20210352100A1 · Barai et al. · 2021 [cited by applicant]
US 20220014561A1 · Caceres et al. · 2022 [cited by applicant]
US 20220159033A1 · Mizrahi et al. · 2022 [cited by applicant]
US 20220269591A1 · Mcshane et al. · 2022 [cited by applicant]
US 20220319219A1 · Tsibulevskiy · 2022 [cited by examiner]
US 20220368702A1 · Robbins et al. · 2022 [cited by applicant]
US 20230050691A1 · Gu et al. · 2023 [cited by applicant]
US 20230262073A1 · Sheu et al. · 2023 [cited by applicant]
US 20230336581A1 · Dunn et al. · 2023 [cited by applicant]
CA 2926579 · 2016 [cited by applicant]
CN 105262771 · 2016 [cited by applicant]
CN 107277039 · 2017 [cited by applicant]
CN 109597767A · 2019 [cited by examiner]
CN 109815009A · 2019 [cited by examiner]
CN 111049827 · 2020 [cited by applicant]
EP 3726803 · 2020 [cited by applicant]
EP 4254865A1 · 2023 [cited by applicant]
EP 4254866A1 · 2023 [cited by applicant]
EP 4254867A2 · 2023 [cited by applicant]
EP 4254869A2 · 2023 [cited by applicant]
EP 4254868A3 · 2023 [cited by applicant]
WO WO2015013376A2 · 2015 [cited by applicant]
WO WO2020046981A1 · 2020 [cited by examiner]
WO WO2022043512A1 · 2022 [cited by examiner]
L. Zhao, P. Cao, Y. Duan, H. Yin and J. Xuan, “Probabilistic Path Prioritization for Hybrid Fuzzing,” in IEEE Transactions on Dependable and Secure Computing, vol. 19, No. 3, pp. 1955-1973, May 1-Jun. 2022. [cited by examiner]
Torlak, Emina. A constraint solver for software engineering: finding models and cores of large relational specifications. Diss. Massachusetts Institute of Technology, 2009. [cited by examiner]
Steimann, Friedrich, Jörg Hagemann, and Bastian Ulke. “Computing repair alternatives for malformed programs using constraint attribute grammars.” Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Or… [cited by examiner]
Liang, Hongliang, et al. “Fuzzing: State of the art.” IEEE Transactions on Reliability 67.3 (2018). [cited by examiner]
Simon, Laurent, and Akash Verma. “Improving fuzzing through controlled compilation.” 2020 IEEE European Symposium on Security and Privacy (EuroS&P). IEEE, 2020. [cited by examiner]
Zhu, Xiaogang, et al. “Fuzzing: a survey for roadmap.” ACM Computing Surveys (CSUR) 54.11s (2022). [cited by examiner]
Notice of Allowance for U.S. Appl. No. 17/711,868 dated Aug. 23, 2024. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/711,868 dated Mar. 15, 2024. [cited by applicant]
Extended European Search Report for EP Patent Appln. No. 23199257.9 dated Mar. 6, 2024. [cited by applicant]
Final Office Action for U.S. Appl. No. 17/711,884 dated May 23, 2024. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/711,811 dated Feb. 21, 2025. [cited by applicant]
Moser et al., “Exploring Multiple Execution Paths for Malware Analysis”, 2007 IEEE Symposium on Security and Privacy (SP '07), Date of Conference: May 20-23, 2007. [cited by applicant]
Extended European Search Report for EP Patent Appln. No. 22191320.5 dated Sep. 28, 2023. [cited by applicant]
Extended European Search Report for EP Patent Appln. No. 22191322.1 dated Oct. 2, 2023. [cited by applicant]
Extended European Search Report for EP Patent Appln. No. 22191321.3 dated Oct. 2, 2023. [cited by applicant]
Non-Final Office Action for U.S. Appl. No. 17/711,850 dated Mar. 27, 2024. [cited by applicant]
D. Kreutz, F. M. V. Ramos, P. E. Verfssimo, C. E. Rothenberg, S. Azodolmolky and S. Uhlig, “Software-Defined Networking: A Comprehensive Survey,” in Proceedings of the IEEE, vol. 103, No. 1, pp. 14-76 (Jan. 2015) (Year:… [cited by applicant]
Extended European Search Report for EP Patent Appln. No. 22191317.1 dated Aug. 3, 2023. [cited by applicant]
Final Office Action for U.S. Appl. No. 17/711,811 dated Jul. 11, 2024. [cited by applicant]
Non-Final Office Action for U.S. Appl. No. 18/128,549 dated Mar. 17, 2025. [cited by applicant]
Final Office Action for U.S. Appl. No. 17/711,850 dated Oct. 24, 2024. [cited by applicant]
Non-Final Office Action for U.S. Appl. No. 17/711,811 dated Oct. 28, 2024. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/711,868 dated Oct. 28, 2024. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/711,884 dated Nov. 1, 2024. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/711,850 dated Apr. 9, 2025. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/711,850 dated Mar. 12, 2025. [cited by applicant]
Non-Final Office Action for U.S. Appl. No. 17/711,884 dated Feb. 2, 2024. [cited by applicant]
Non-Final Office Action for U.S. Appl. No. 17/711,903 dated Jan. 8, 2024. [cited by applicant]
Non-Final Office Action for U.S. Appl. No. 17/711,811 dated Feb. 15, 2024. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/711,868 dated Mar. 18, 2024. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/711,884 dated Apr. 4, 2025. [cited by applicant]
Final Office Action for U.S. Appl. No. 17/711,903 dated May 7, 2024. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/711,903 dated Sep. 26, 2024. [cited by applicant]
Extended European Search Report for EP Patent Appln. No. 22191319.7 dated Aug. 17, 2023. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/711,811 dated Apr. 21, 2025. [cited by applicant]
Jeon et al., “Automated Crash Filtering Using Interprocedural Static Analysis for Binary Codes”, 2017 IEEE 41st Annual Computer Software and Applications Conference (COMPSAC), Date of Conference: July 4-8, 2017. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/711,850 dated Jun. 24, 2025. [cited by applicant]
Examination Report for EP Patent Appln. No. 22191322.1 dated Jul. 11, 2025. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/711,884 dated Aug. 6, 2025. [cited by applicant]
Final Office Action for U.S. Appl. No. 18/128,549 dated Aug. 11, 2025. [cited by applicant]
Non-Final Office Action for U.S. Appl. No. 18/128,549 dated Dec. 29, 2025. [cited by applicant]
Final Office Action for U.S. Appl. No. 18/128,549 dated May 29, 2026. [cited by applicant]