Detailed Action
1. The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA . This is the initial office action based on the application filed on July 30th, 2024, which claims 1-20 have been presented for examination.
Status of Claims
2. Claims 1-20 are pending in the application, of which claims 1, 10 and 16 are in independent form and these claims (1-20) are subject to following rejection(s) and/or objection(s) set forth in the following Office Action below.
Claim Rejections - 35 USC § 112 (a)
The following is a quotation of the first paragraph of 35 U.S.C. 112:
(a) IN GENERAL.— The specification shall contain a written description of the invention, and of the manner and process of making and using it, in such full, clear, concise, and exact terms as to enable any person skilled in the art to which it pertains, or with which it is most nearly connected, to make and use the same, and shall set forth the best mode contemplated by the inventor of carrying out his invention.
3. Claims 7, 8 and 15 are rejected under 35 U.S.C. 112(a) or 35 U.S.C. 112 (pre-AIA ), first paragraph, as failing to comply with the written description requirement. The claim(s) contains subject matter which was not described in the specification in such a way as to reasonably convey to one skilled in the relevant art that the inventor or a joint inventor, or for pre-AIA the inventor(s), at the time the application was filed, had possession of the claimed invention.
Claims 1 and 15 recite “attribute graph” and claims 8 and 15 recite “subscript graph” which have not been expressly supported by the originally filed specification.
Functional claim limitations may render the claim broad when the claim covers all means or methods of performing a function, resolving a problem, or achieving a result. To satisfy the written description requirement, the specification must describe the claimed invention in sufficient detail that one skilled in the art can reasonably conclude that the inventor had possession of the claimed invention. Specifically, the specification must describe the claimed invention in a manner understandable to a person of ordinary skill in the art and show that the inventor actually invented the claimed invention. To satisfy the enablement requirement of § 112, ¶(a), the specification must teach those skilled in the art how to make and use the full scope of the claimed invention without “undue experimentation”.
Examiner respectfully point out that 35 U.S.C. §112 first paragraph sets forth the minimum requirements for the quality and quantity of information that must be contained in a patent application to justify the grant of a patent. The patentee must disclose sufficient information to demonstrate that the inventor had possession of the invention at the time of filing and to enable those skilled in the art to make and use the invention. The applicant must not conceal from the public the best way of practicing the invention that was known to the patentee at the time of filing the patent application. Failure to fully comply with the disclosure requirements could result in the denial of a patent, or in a holding of invalidity of an issued patent. Please see MPEP 2162.
Claim Rejections – 35 USC §103
4. The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102 of this title, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
5. Claims 1-6, 9-14 and 16-20 are rejected under 35 U.S.C. 103 as being unpatentable over Fanning et al. (US Patent Application Publication No. 2014/0109106 A1 -herein after Fanning) in view of Ramesh et al. (US Patent Application Publication No. 2019/0129826 A1 herein after Ramesh).
Per claim 1:
Fanning discloses:
A method of resolving values of a dynamic language code object in static analysis (At least [0012] FIG. 5 illustrates a flowchart of a method for generating a dependency graph), comprising:
accessing code of an application written in a dynamic programming language, wherein the application comprises a plurality of transition points (At least see [0005] -domain that uses dynamic languages, perhaps runtime dynamic analysis is used to perform the dependency calculation. In some cases, the dependency graph may be constructed in stages);
detecting a plurality of values in the code of the application, wherein a first value of the plurality of values is associated with a first transition point of the plurality of transition points (At least see [0104] -call graph is constructed on-the-fly because JavaScript has higher-order functions, and so the points-to and call graph relations are mutually dependent, also see [0108] -Assign to model JavaScript assignments, but also for linking actual argument values to formal arguments, and actual return values to formal returns);
iteratively resolving the first transition point to the first value of the plurality of values or another transition point (At least see [0127] -Here the PointsTo(v2, h) constraint ensures that the base object is resolved).
Fanning sufficiently discloses the method as set forth above, but Fanning does not explicitly disclose: generating a value transition graph comprising a plurality of nodes and a plurality of edges connecting the plurality of nodes, wherein each node of the plurality of nodes represents a resolved transition point of the plurality of transition points; and generating a node in the value transition graph for the first transition point in response to resolving the first transition point to the first value.
However, Ramesh discloses:
generating a value transition graph comprising a plurality of nodes and a plurality of edges connecting the plurality of nodes, wherein each node of the plurality of nodes represents a resolved transition point of the plurality of transition points (At least see [0004] -generate, via a flow-insensitive points-to analysis, the initial interest points, generate, via a flow-sensitive points-to analysis, flow tuples and refined interest points by removing a subset of the initial interest points, and construct a flow graph using the refined interest point); and
generating a node in the value transition graph for the first transition point in response to resolving the first transition point to the first value (At least see [0015] -a flow graph is generated for a subset (e.g., slice) of the code relevant to the refined interest points. The flow graph may represent chains of statements through which values flow (e.g., via a series of assignment statements). A trace (e.g., path) through the flow graph may be identified that includes a node corresponding to an interest point of the refined interest points).
It would have been obvious to one ordinary skill in the art before the effective filing date of the claimed invention to incorporate Ramesh into Fanning’s invention because staged analyzer includes functionality to generate a flow graph during the points-to analysis which is flow-sensitive points-to analysis; Therefor, flow graph may include nodes each corresponding to a statement in the code, where the flow of control between statements is indicated via edges between nodes, and an edge of the flow graph may correspond to a flow tuple that defines a flow between a source variable and a sink variable (please see [0030]).
Per claim 2:
Ramesh also discloses:
determining whether the first transition point resolves to a predetermined data type; and in response to determining that the first transition point does not resolve to a data type that is the predetermined data type, ceasing resolution of the first transition point (At least see [0040] - refined interest points are generated by removing a subset of the initial interest points as a result of determining the possible data flows. For example, it may be determined that a property (e.g., a security flaw or an integer overflow) does not manifest at an initial interest point relative to the possible data flows generated by the flow-insensitive analysis, in which case the initial interest point may be removed from consideration).
It would have been obvious to one ordinary skill in the art before the effective filing date of the claimed invention to incorporate Ramesh into Fanning’s invention because staged analyzer includes functionality to generate a flow graph during the points-to analysis which is flow-sensitive points-to analysis; Therefor, flow graph may include nodes each corresponding to a statement in the code, where the flow of control between statements is indicated via edges between nodes, and an edge of the flow graph may correspond to a flow tuple that defines a flow between a source variable and a sink variable (please see [0030]).
Per claim 3:
Ramesh also discloses:
determining whether the first transition point resolves to a predefined transition type; and in response to determining that the first transition point resolves to the predefined transition type, resolving the first transition point (At least see [0040] - refined interest points are generated by removing a subset of the initial interest points as a result of determining the possible data flows. For example, it may be determined that a property (e.g., a security flaw or an integer overflow) does not manifest at an initial interest point relative to the possible data flows generated by the flow-insensitive analysis, in which case the initial interest point may be removed from consideration).
It would have been obvious to one ordinary skill in the art before the effective filing date of the claimed invention to incorporate Ramesh into Fanning’s invention because staged analyzer includes functionality to generate a flow graph during the points-to analysis which is flow-sensitive points-to analysis; Therefor, flow graph may include nodes each corresponding to a statement in the code, where the flow of control between statements is indicated via edges between nodes, and an edge of the flow graph may correspond to a flow tuple that defines a flow between a source variable and a sink variable (please see [0030]).
Per claim 4:
Ramesh also discloses:
predefined transition type comprises at least one of a call, an attribute, a subscript, a collection access, an iteration, or a transition type that facilitates an inter-procedural flow of the application (At least see [0032] - call graph (122) may include nodes each corresponding to a statement in the code (106) that corresponds to a function definition, where the flow of control between function definitions is indicated via edges between nodes).
It would have been obvious to one ordinary skill in the art before the effective filing date of the claimed invention to incorporate Ramesh into Fanning’s invention because staged analyzer includes functionality to generate a flow graph during the points-to analysis which is flow-sensitive points-to analysis; Therefor, flow graph may include nodes each corresponding to a statement in the code, where the flow of control between statements is indicated via edges between nodes, and an edge of the flow graph may correspond to a flow tuple that defines a flow between a source variable and a sink variable (please see [0030]).
Per claim 5:
Ramesh also discloses:
detecting a call from the first transition point to a second transition point (At least see [0032] - call graph (122) may include nodes each corresponding to a statement in the code (106) that corresponds to a function definition, where the flow of control between function definitions is indicated via edges between nodes);
resolving the second transition point to a predetermined data type (At least see [0040] - refined interest points are generated by removing a subset of the initial interest points as a result of determining the possible data flows); and
determining that the first transition point is fully resolved in response to determining that the second transition point is resolved (At least see [0041] -a flow graph is constructed using the refined plurality of interest points. In one or more embodiments, the flow graph includes nodes each corresponding to a flow tuple and a statement in the code, where the flow of control between statements is indicated via edges between nodes).
It would have been obvious to one ordinary skill in the art before the effective filing date of the claimed invention to incorporate Ramesh into Fanning’s invention because staged analyzer includes functionality to generate a flow graph during the points-to analysis which is flow-sensitive points-to analysis; Therefor, flow graph may include nodes each corresponding to a statement in the code, where the flow of control between statements is indicated via edges between nodes, and an edge of the flow graph may correspond to a flow tuple that defines a flow between a source variable and a sink variable (please see [0030]).
Per claim 6:
Ramesh also discloses:
generating a call graph based on the value transition graph (At least see [0040] - flow-sensitive analysis determines possible flows of values between variables relative to the results (e.g., interest points, points-to tuples and call graph) generated by the flow-insensitive analysis);
identifying a function call in the code of the application (At least see [0032] - call graph (122) may include nodes each corresponding to a statement in the code (106) that corresponds to a function definition, where the flow of control between function definitions is indicated via edges between nodes. For example, an edge (f, g) in the call graph (130) may indicate that function definition f calls function definition g);
resolving a second value of a function that is being called in the function call (At least see [0038] - flow-sensitive points-to analysis reuses (i.e., does not recompute) the points-to tuples and the call graph generated in Step 200 above. The points-to tuples may be used to track the flow of values among variables in the code); and
generating a node in the call graph based on the function and the resolved second value of the function (At least see [0032] - call graph (122) may include nodes each corresponding to a statement in the code (106) that corresponds to a function definition, where the flow of control between function definitions is indicated via edges between nodes).
It would have been obvious to one ordinary skill in the art before the effective filing date of the claimed invention to incorporate Ramesh into Fanning’s invention because staged analyzer includes functionality to generate a flow graph during the points-to analysis which is flow-sensitive points-to analysis; Therefor, flow graph may include nodes each corresponding to a statement in the code, where the flow of control between statements is indicated via edges between nodes, and an edge of the flow graph may correspond to a flow tuple that defines a flow between a source variable and a sink variable (please see [0030]).
Per claim 9:
Fanning discloses:
storing, after a first iteration of resolving the first transition point, a first resolved transition point in a cache; and resolving, during a second iteration of resolving the first transition point, a second transition point to the first resolved transition point in the cache (At least see [0005] - iterations of dynamic analysis may be performed over time, with each iteration adding to the graph. In some embodiments, additional properties may be associated with the node, and metadata of the properties may also be recorded).
Per claim 10:
Limitation rendered in this claim is as similar as claim 1 above; and therefore, rejected based on same rational.
Per claim 11:
Limitation rendered in this claim is as similar as claim 2 above; and therefore, rejected based on same rational.
Per claim 12:
Limitation rendered in this claim is as similar as claim 3 above; and therefore, rejected based on same rational.
Per claim 13:
Limitation rendered in this claim is as similar as claim 4 above; and therefore, rejected based on same rational.
Per claim 14:
Limitation rendered in this claim is as similar as claim 9 above; and therefore, rejected based on same rational.
Per claim 16:
Limitation rendered in this claim is as similar as claim 1 above; and therefore, rejected based on same rational.
Per claim 17:
Limitation rendered in this claim is as similar as claim 2 above; and therefore, rejected based on same rational.
Per claim 18:
Limitation rendered in this claim is as similar as claim 3 above; and therefore, rejected based on same rational.
Per claim 19:
Limitation rendered in this claim is as similar as claim 4 above; and therefore, rejected based on same rational.
Per claim 20:
Limitation rendered in this claim is as similar as claim 9 above; and therefore, rejected based on same rational.
6. Claims 7-8 and 15 are rejected under 35 U.S.C. 103 as being unpatentable over Fanning et al. (US Patent Application Publication No. 2014/0109106 A1 -herein after Fanning) in view of Ramesh et al. (US Patent Application Publication No. 2019/0129826 A1 herein after Ramesh), and further in view of Kogelman et al. (US Patent No. 11,573,772 B2 herein after Kogelman).
Per claim 7:
Fanning modified by Ramesh sufficiently discloses the method as set forth above, but Fanning modified by Ramesh does not explicitly disclose: generating an attribute graph based on the value transition graph; selecting, from the code of the application, an attribute store or an attribute load; resolving a parent transition point of an attribute by detecting a parent of the attribute; and resolving the parent transition point to a value in the attribute graph based on the value transition graph.
However, Kogelman also discloses:
generating an attribute graph based on the value transition graph (At least see Col. 17:6-7 - traverse graphs according to attributes of associated program);
selecting, from the code of the application, an attribute store or an attribute load (At least see Col. 6:21-23 - program 108 includes node-1 112. As shown, node-1 112 includes a variety of associated attributes such as operation category 114, input type 116, output type);
resolving a parent transition point of an attribute by detecting a parent of the attribute (At least see Col. 6:42-43 - automatically resolve types associated with nodes of graphs 110 via a visual-programming graphical-user interface); and
resolving the parent transition point to a value in the attribute graph based on the value transition graph (At least see Col. 4:56-58 - graph-based mechanism in the visual programming tool can resolve the edge by identifying valid types associated with the first node port B as first types).
It would have been obvious to one ordinary skill in the art before effective filing date of the claimed invention to incorporate Kogelman into Fanning modified by Ramesh’s invention because typeless nodes can provide a flexibility advantage to the programmer, but the inputs and outputs of typeless nodes must eventually resolve for the program to build ports of a typeless node inherited their type from the node being connected to it; as such, graph-based programming system described herein can improve development speed for games in development, such as video game designers for example, can use a mechanism to propagate and resolve information in graph-based programming languages as described herein to expedite program development and to reduce debugging time compared to traditional textual programming or current graph-based visual-programming tools (please see Col. 2:25-67).
Per claim 8:
Fanning modified by Ramesh sufficiently discloses the method as set forth above, but Fanning modified by Ramesh does not explicitly disclose: generating a subscript graph based on the value transition graph; identifying, from the code of the application, a subscript operator; resolving a key of the subscript operator to a sequence; and resolving a value of the sequence utilizing the value transition graph.
However, Kogelman discloses:
generating a subscript graph based on the value transition graph (At least see Col. 17:6-7 - traverse graphs according to attributes of associated program);
identifying, from the code of the application, a subscript operator (At least see Col. 6:21-23 - program 108 includes node-1 112. As shown, node-1 112 includes a variety of associated attributes such as operation category 114, input type 116, output type);
resolving a key of the subscript operator to a sequence (At least see Col. 6:42-43 - automatically resolve types associated with nodes of graphs 110 via a visual-programming graphical-user interface); and
resolving a value of the sequence utilizing the value transition graph (At least see Col. 4:56-58 - graph-based mechanism in the visual programming tool can resolve the edge by identifying valid types associated with the first node port B as first types).
It would have been obvious to one ordinary skill in the art before effective filing date of the claimed invention to incorporate Kogelman into Fanning modified by Ramesh’s invention because typeless nodes can provide a flexibility advantage to the programmer, but the inputs and outputs of typeless nodes must eventually resolve for the program to build ports of a typeless node inherited their type from the node being connected to it; as such, graph-based programming system described herein can improve development speed for games in development, such as video game designers for example, can use a mechanism to propagate and resolve information in graph-based programming languages as described herein to expedite program development and to reduce debugging time compared to traditional textual programming or current graph-based visual-programming tools (please see Col. 2:25-67).
Per claim 15:
Limitation rendered in this claim is as similar as claims 7 and 8 above; and therefore, rejected based on same rational.
CONCLUSION
7. Any inquiry concerning this communication or earlier communications from the examiner should be directed to ZIAUL A. CHOWDHURY whose telephone number is (571)270-7750. The examiner can normally be reached on 9:30PM 6:30PM Monday -Friday.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Hyung S. Sough can be reached on 571-272-6799. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Status information for published applications may be obtained from Patent Public Search tool (for all users) – A link to the Patent Public Search Tool is available at www. Uspto.gov/PatentPublicSearch. To find a U.S. patent or U.S. patent application publication, open the Patent Public Search tool by selecting “Start search”. Type the U.S. patent or U.S. patent application publication number in the “Search” panel without any punctuation and followed by an”.pn.”.
Should you have questions on access to the system, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative or access to the automated information system, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/ZIAUL A CHOWDHURY/ Primary Examiner, Art Unit 2192
07/18/2025