Symbolic execution of alternative branches

US2017286271A1 · US · A1

Patent metadata
FieldValue
Publication numberUS-2017286271-A1
Application numberUS-201615084617-A
CountryUS
Kind codeA1
Filing dateMar 30, 2016
Priority dateMar 30, 2016
Publication dateOct 5, 2017
Grant date

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Method, apparatus and product for symbolic execution of alternative branches. The method comprising reaching, during symbolic execution of a Control Flow Graph (CFG) of a program, a branching node in the CFG with a first symbolic state, wherein the branching has at least a first branch and a second branch, wherein the first and second branches end at a joining node in the CFG. The method further comprises symbolically executing the first branch using the first symbolic state so as to determine a second symbolic state. The method further comprises symbolically executing the second branch using the second symbolic state so as to determine a third symbolic state. Accordingly, the third symbolic state is based on sequential symbolic execution of alternative branches

First claim

Opening claim text (preview).

What is claimed is: 1 . A computer-implemented method for performing symbolic execution of a computer program, wherein the symbolic execution traverses a Control Flow Graph (CFG) of the computer program while updating a symbolic state of the computer program, the method comprising: reaching a branching node in the CFG with a first symbolic state, wherein the branching has at least a first branch and a second branch, wherein the first and second branches end at a joining node in the CFG; symbolically executing the first branch using the first symbolic state, whereby a second symbolic state is determined; and symbolically executing the second branch using the second symbolic state, whereby a third symbolic state is determined, the third symbolic state is based on sequential symbolic execution of alternative branches. 2 . The computer-implemented method of claim 1 , wherein the first branch comprises an assignment instruction, wherein the first branch is taken under a first branching condition, wherein said symbolically executing the first branch comprises updating the first symbolic state to reflect a conditional assignment in accordance with the assignment instruction that is conditioned on the first branching condition. 3 . The computer-implemented method of claim 2 , wherein the assignment instruction is an assignment instruction to a variable having a definition scope that extends beyond the first branch. 4 . The computer-implemented method of claim 2 , wherein the first branch comprises a second assignment instruction to a local variable, wherein the local variable having a definition scope that is internal to the first branch, wherein said symbolically executing the first branch comprises updating the first symbolic state to reflect an unconditional assignment in accordance with the second assignment instruction. 5 . The computer-implemented method of claim 2 , wherein the second branch comprises a second assignment instruction, wherein the second branch is taken under a second branching condition, wherein said symbolically executing the second branch comprises updating the second symbolic state to reflect a conditional assignment in accordance with the second assignment instruction that is conditioned on the second branching condition. 6 . The computer-implemented method of claim 1 , wherein the first branch comprises an instruction having a side effect external to the first branch, wherein the first branch is taken under a first branching condition, wherein said symbolically executing the first branch comprises updating the first symbolic state to reflect execution of the instruction conditioned on the first branching condition. 7 . The computer-implemented method of claim 1 further comprising: upon reaching the branching node, dynamically determining to perform sequential symbolic execution of the alternative branches. 8 . The computer-implemented method of claim 7 , wherein said dynamically determining comprises determining that the first branch and the second branch are feasible according to the first symbolic state. 9 . The computer-implemented method of claim 1 further comprises: detecting the joining node, wherein said detecting comprises identifying a cut in a subset of the CFG beginning in the branching node that has a cut size of one. 10 . The computer-implemented method of claim 1 , wherein the symbolic execution of the computer program is a concolic execution of the computer program comprising a symbolic state and a concrete state. 11 . An apparatus for performing symbolic execution of a computer program, wherein the symbolic execution traverses a Control Flow Graph (CFG) of the computer program while updating a symbolic state of the computer program, wherein the apparatus comprising a processor being adapted to perform the steps of: reaching a branching node in the CFG with a first symbolic state, wherein the branching has at least a first branch and a second branch, wherein the first and second branches end at a joining node in the CFG; symbolically executing the first branch using the first symbolic state, whereby a second symbolic state is determined; and symbolically executing the second branch using the second symbolic state, whereby a third symbolic state is determined, the third symbolic state is based on sequential symbolic execution of alternative branches. 12 . The apparatus of claim 11 , wherein the first branch comprises an assignment instruction, wherein the first branch is taken under a first branching condition, wherein said symbolically executing the first branch comprises updating the first symbolic state to reflect a conditional assignment in accordance with the assignment instruction that is conditioned on the first branching condition. 13 . The apparatus of claim 12 , wherein the assignment instruction is an assignment instruction to a variable having a definition scope that extends beyond the first branch. 14 . The apparatus of claim 12 , wherein the first branch comprises a second assignment instruction to a local variable, wherein the local variable having a definition scope that is internal to the first branch, wherein said symbolically executing the first branch comprises updating the first symbolic state to reflect an unconditional assignment in accordance with the second assignment instruction. 15 . The apparatus of claim 12 , wherein the second branch comprises a second assignment instruction, wherein the second branch is taken under a second branching condition, wherein said symbolically executing the second branch comprises updating the second symbolic state to reflect a conditional assignment in accordance with the second assignment instruction that is conditioned on the second branching condition. 16 . The apparatus of claim 11 , wherein the first branch comprises an instruction having a side effect external to the first branch, wherein the first branch is taken under a first branching condition, wherein said symbolically executing the first branch comprises updating the first symbolic state to reflect execution of the instruction conditioned on the first branching condition. 17 . The apparatus of claim 11 , wherein said processor is further adapted to perform: upon the symbolic execution reaching the branching node, dynamically determining to perform sequential symbolic execution of the alternative branches. 18 . The apparatus of claim 17 , wherein said dynamically determining comprises determining that the first branch and the second branch are feasible according to the first symbolic state. 19 . The apparatus of claim 11 , wherein the symbolic execution of the computer program is a concolic execution of the computer program comprising a symbolic state and a concrete state. 20 . A computer program product for performing symbolic execution of a computer program, wherein the symbolic execution traverses a Control Flow Graph (CFG) of the computer program while updating a symbolic state of the computer program, wherein the computer program product comprising a computer readable storage medium retaining program instructions, which program instructions when read by a processor, cause the processor to perform a method comprising: reaching a branching node in the CFG with a first symbolic state, wherein the branching has at least a first branch and a second branch, wherein the first and second branches end at a joining node in the CFG; symbolically executing the first branch using the first symbolic state, whereby a second symbolic state is det

Assignees

Inventors

Classifications

  • Testing of software · CPC title

  • using formal methods, e.g. model checking, abstract interpretation (theorem proving G06N5/013) · CPC title

  • for test execution, e.g. scheduling of test suites · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US2017286271A1 cover?
Method, apparatus and product for symbolic execution of alternative branches. The method comprising reaching, during symbolic execution of a Control Flow Graph (CFG) of a program, a branching node in the CFG with a first symbolic state, wherein the branching has at least a first branch and a second branch, wherein the first and second branches end at a joining node in the CFG. The method furthe…
Who is the assignee on this patent?
IBM
What technology area does this patent fall under?
Primary CPC classification G06F11/3668. Mapped technology areas include Physics.
When was this patent published?
Publication date Thu Oct 05 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (A1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 3 related publications on this page (citations in our corpus or others sharing the same primary CPC).