Patents by Inventor Nathan Robert Albert Keynes
Nathan Robert Albert Keynes has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).
-
Patent number: 11204746Abstract: A method for modifying a call graph may include identifying, in source code, a first call site including a first predicate and a call from a first function to a second function. The first call site may correspond to a first edge of the call graph. The first edge may connect a first node corresponding to the first function and a second node corresponding to the second function. The method may further include modifying the call graph by labelling the first edge with a first encoding of the first predicate, and identifying, in the source code, a second call site including a second predicate and a call from a third function to the first function. The method may further include in response to determining that the first predicate is unsatisfied, modifying the call graph by labelling the second edge with a second encoding of a violation of the first predicate.Type: GrantFiled: January 28, 2020Date of Patent: December 21, 2021Assignee: Oracle International CorporationInventors: Sora Bae, Nathan Robert Albert Keynes, Cristina Cifuentes
-
Patent number: 11159381Abstract: A method may include receiving a network schema including switches, links connecting the switches, and a topology that maps the switches to the links. The switches may include ports. The method may further include receiving a software defined networking (SDN) policy including a function that modifies a state of a packet entering a switch, converting the topology to a graph including nodes corresponding to the switches, while searching the graph, determining, according to the function, whether a port of a switch corresponding to a node is reachable by the packet entering the switch, and in response to searching the graph, verifying a property of the SDN policy.Type: GrantFiled: July 30, 2019Date of Patent: October 26, 2021Assignee: Oracle International CorporationInventors: Henry John O'Brien, Padmanabhan Krishnan, Nathan Robert Albert Keynes, Marius Portmann
-
Publication number: 20210232377Abstract: A method for modifying a call graph may include identifying, in source code, a first call site including a first predicate and a call from a first function to a second function. The first call site may correspond to a first edge of the call graph. The first edge may connect a first node corresponding to the first function and a second node corresponding to the second function. The method may further include modifying the call graph by labelling the first edge with a first encoding of the first predicate, and identifying, in the source code, a second call site including a second predicate and a call from a third function to the first function. The method may further include in response to determining that the first predicate is unsatisfied, modifying the call graph by labelling the second edge with a second encoding of a violation of the first predicate.Type: ApplicationFiled: January 28, 2020Publication date: July 29, 2021Applicant: Oracle International CorporationInventors: Sora Bae, Nathan Robert Albert Keynes, Cristina Cifuentes
-
Patent number: 10949336Abstract: A method may include obtaining, from one of the rules of a static analysis, a built-in path relation describing a path constraint on a path variable, generating, using the rules, a transfer function that updates a property vector while analyzing code, generating an evaluation function that determines, using the updated property vector, whether the static analysis is satisfied, and determining whether the code includes a defect by executing the static analysis on the code using the path constraint, the transfer function, and the evaluation function.Type: GrantFiled: March 29, 2019Date of Patent: March 16, 2021Assignee: Oracle International CorporationInventors: Nathan Robert Albert Keynes, Eric Beguet
-
Publication number: 20210036926Abstract: A method may include receiving a network schema including switches, links connecting the switches, and a topology that maps the switches to the links. The switches may include ports. The method may further include receiving a software defined networking (SDN) policy including a function that modifies a state of a packet entering a switch, converting the topology to a graph including nodes corresponding to the switches, while searching the graph, determining, according to the function, whether a port of a switch corresponding to a node is reachable by the packet entering the switch, and in response to searching the graph, verifying a property of the SDN policy.Type: ApplicationFiled: July 30, 2019Publication date: February 4, 2021Inventors: Henry John O'Brien, Padmanabhan Krishnan, Nathan Robert Albert Keynes, Marius Portmann
-
Publication number: 20200310951Abstract: A method may include obtaining, from one of the rules of a static analysis, a built-in path relation describing a path constraint on a path variable, generating, using the rules, a transfer function that updates a property vector while analyzing code, generating an evaluation function that determines, using the updated property vector, whether the static analysis is satisfied, and determining whether the code includes a defect by executing the static analysis on the code using the path constraint, the transfer function, and the evaluation function.Type: ApplicationFiled: March 29, 2019Publication date: October 1, 2020Inventors: Nathan Robert Albert Keynes, Eric Beguet
-
Patent number: 10719425Abstract: A method may include generating, for a concurrent application, an execution trace that includes operations, extracting actor pairs from the execution trace, assigning each of the operations to an actor pair, and generating vector clocks for the operations. Each vector clock may include a clock value for each of the actor pairs.Type: GrantFiled: June 13, 2018Date of Patent: July 21, 2020Assignee: Oracle International CorporationInventors: Nicholas John Allen, Yang Zhao, Cristina Nicole Cifuentes, Nathan Robert Albert Keynes
-
Patent number: 10620660Abstract: A method may include obtaining a concurrent application including processes, each including operations, and obtaining an initial hybrid timestamp for an initial operation of a process. The initial hybrid timestamp may include a vector list timestamp including vector clocks, each including a clock value for each of the processes. The method may further include determining a synchronization category for a next operation of the process, and in response to the synchronization category indicating that the next operation does not require inter-process synchronization, generating a next hybrid timestamp for the next operation. The next hybrid timestamp may include a differential timestamp relative to the initial hybrid timestamp.Type: GrantFiled: March 26, 2018Date of Patent: April 14, 2020Assignee: Oracle International CorporationInventors: Yang Zhao, Nicholas John Allen, Cristina Nicole Cifuentes, Nathan Robert Albert Keynes
-
Publication number: 20190384695Abstract: A method may include generating, for a concurrent application, an execution trace that includes operations, extracting actor pairs from the execution trace, assigning each of the operations to an actor pair, and generating vector clocks for the operations. Each vector clock may include a clock value for each of the actor pairs.Type: ApplicationFiled: June 13, 2018Publication date: December 19, 2019Inventors: Nicholas John Allen, Yang Zhao, Cristina Nicole Cifuentes, Nathan Robert Albert Keynes
-
Publication number: 20190294205Abstract: A method may include obtaining a concurrent application including processes, each including operations, and obtaining an initial hybrid timestamp for an initial operation of a process. The initial hybrid timestamp may include a vector list timestamp including vector clocks, each including a clock value for each of the processes. The method may further include determining a synchronization category for a next operation of the process, and in response to the synchronization category indicating that the next operation does not require inter-process synchronization, generating a next hybrid timestamp for the next operation. The next hybrid timestamp may include a differential timestamp relative to the initial hybrid timestamp.Type: ApplicationFiled: March 26, 2018Publication date: September 26, 2019Applicant: ORACLE INTERNATIONAL CORPORATIONInventors: Yang ZHAO, Nicholas John Allen, Cristina Nicole Cifuentes, Nathan Robert Albert Keynes
-
Patent number: 8893102Abstract: In general, in one aspect, the invention relates to a method for static analysis. The method includes: obtaining source code; constructing a control flow graph (CFG) corresponding to the source code, by identifying control structures within the source code, creating a set of graph nodes of the CFG, and creating a set of directed graph edges of the CFG connecting the set of graph nodes; assigning a first Boolean flow value to a selected node of the set of graph nodes; backward traversing the CFG from the selected node to a target node; computing, by a computer processor and while backward traversing the CFG, disjoint predicate expressions representing flow values at the set of directed graph edges; computing, based on the disjoint predicate expressions, a resulting disjoint predicate expression; and identifying, based on the resulting disjoint predicate expression, a potential program property in the source code.Type: GrantFiled: July 27, 2011Date of Patent: November 18, 2014Assignee: Oracle International CorporationInventors: Nathan Robert Albert Keynes, Cristina N. Cifuentes, Lian Li
-
Patent number: 8578343Abstract: A method for overflow detection using partial evaluations. The method includes obtaining a section of code from a source code file stored on a storage device, analyzing the section of code to identify a buffer with an index, determining a plurality of statements that are statically-computable and dependent on the index of the buffer, and generating a code segment including the plurality of statements. The method further includes replacing an access statement of the plurality of statements with a conditional statement returning true when bounds of the buffer are exceeded, where the access statement uses the index to access the buffer, adding an unconditional statement returning false to the code segment, and executing the code segment on a computer processor to obtain a determination of whether the bounds of the buffer are exceeded.Type: GrantFiled: January 15, 2010Date of Patent: November 5, 2013Assignee: Oracle America, Inc.Inventors: Bernhard F. Scholz, Cristina N. Cifuentes, Nathan Robert Albert Keynes
-
Patent number: 8516443Abstract: In general, in one aspect, the invention relates to a method for identifying program properties in source code. The method includes: identifying a set of program objects corresponding to a potential program property within the source code; identifying a function associated with the set of program objects in the source code; identifying an input and an output of the function in the source code; creating a value flow graph by: creating a function input node representing the input; creating a function output node representing the output; identifying value flow functions, where each value flow function defines a conditional dependency between a pair of graph nodes, and creating, based on the value flow functions, directed graph edges modeling a potential flow of data through the value flow graph; and identifying a feasible path in the value flow graph depicting an occurrence of the potential program property in the source code.Type: GrantFiled: May 26, 2011Date of Patent: August 20, 2013Assignee: Oracle International CorporationInventors: Lian Li, Cristina N. Cifuentes, Nathan Robert Albert Keynes
-
Patent number: 8473927Abstract: In general, in one aspect, the invention relates to a method for performing points-to analysis by generating a value flow graph for source code. The method steps include: initializing the value flow graph including a set of memory objects and a set of edges based on Base and Assignment instructions, where the set of edges represents inclusion constraints between the set of memory objects and a set of pointer variables; determining a pointed-to-by set including at least one pointer variable of the set of pointer variables; updating the value flow graph by introducing a flow edge based on an indirect reference, where the flow edge is related to a memory object of the set of memory objects that is added to a working list; updating the pointed-to-by set based on the memory object in the working list; and analyzing the source code using the pointed-to-by set.Type: GrantFiled: May 26, 2011Date of Patent: June 25, 2013Assignee: Oracle International CorporationInventors: Lian Li, Cristina N. Cifuentes, Nathan Robert Albert Keynes
-
Publication number: 20130031531Abstract: In general, in one aspect, the invention relates to a method for static analysis. The method includes: obtaining source code; constructing a control flow graph (CFG) corresponding to the source code, by identifying control structures within the source code, creating a set of graph nodes of the CFG, and creating a set of directed graph edges of the CFG connecting the set of graph nodes; assigning a first Boolean flow value to a selected node of the set of graph nodes; backward traversing the CFG from the selected node to a target node; computing, by a computer processor and while backward traversing the CFG, disjoint predicate expressions representing flow values at the set of directed graph edges; computing, based on the disjoint predicate expressions, a resulting disjoint predicate expression; and identifying, based on the resulting disjoint predicate expression, a potential program property in the source code.Type: ApplicationFiled: July 27, 2011Publication date: January 31, 2013Applicant: ORACLE INTERNATIONAL CORPORATIONInventors: Nathan Robert Albert Keynes, Cristina N. Cifuentes, Lian Li
-
Publication number: 20120304158Abstract: In general, in one aspect, the invention relates to a method for performing points-to analysis by generating a value flow graph for source code. The method steps include: initializing the value flow graph including a set of memory objects and a set of edges based on Base and Assignment instructions, where the set of edges represents inclusion constraints between the set of memory objects and a set of pointer variables; determining a pointed-to-by set including at least one pointer variable of the set of pointer variables; updating the value flow graph by introducing a flow edge based on an indirect reference, where the flow edge is related to a memory object of the set of memory objects that is added to a working list; updating the pointed-to-by set based on the memory object in the working list; and analyzing the source code using the pointed-to-by set.Type: ApplicationFiled: May 26, 2011Publication date: November 29, 2012Applicant: ORACLE INTERNATIONAL CORPORATIONInventors: Lian Li, Cristina N. Cifuentes, Nathan Robert Albert Keynes
-
Publication number: 20120304153Abstract: In general, in one aspect, the invention relates to a method for identifying program properties in source code. The method includes: identifying a set of program objects corresponding to a potential program property within the source code; identifying a function associated with the set of program objects in the source code; identifying an input and an output of the function in the source code; creating a value flow graph by: creating a function input node representing the input; creating a function output node representing the output; identifying value flow functions, where each value flow function defines a conditional dependency between a pair of graph nodes, and creating, based on the value flow functions, directed graph edges modeling a potential flow of data through the value flow graph; and identifying a feasible path in the value flow graph depicting an occurrence of the potential program property in the source code.Type: ApplicationFiled: May 26, 2011Publication date: November 29, 2012Applicant: ORACLE INTERNATIONAL CORPORATIONInventors: Lian Li, Cristina N. Cifuentes, Nathan Robert Albert Keynes
-
Patent number: 8302086Abstract: A method for demand-driven symbolic analysis involves obtaining a section of code comprising an instruction from a source code file and determining a critical variable in the section of code and data dependencies related to the critical variable. The method further involves iteratively computing a symbolic value representing a range of values of the critical variable according to the data dependencies, determining a set of control predicates relevant to the critical variable at the instruction, refining the range of values according to the set of control predicates to generate a second range of values for the symbolic value, and reporting an error when the second range of values exceeds a predetermined value.Type: GrantFiled: December 18, 2009Date of Patent: October 30, 2012Assignee: Oracle America, Inc.Inventors: Lian Li, Cristina N. Cifuentes, Nathan Robert Albert Keynes
-
Publication number: 20110179400Abstract: A method for overflow detection using partial evaluations. The method includes obtaining a section of code from a source code file stored on a storage device, analyzing the section of code to identify a buffer with an index, determining a plurality of statements that are statically-computable and dependent on the index of the buffer, and generating a code segment including the plurality of statements. The method further includes replacing an access statement of the plurality of statements with a conditional statement returning true when bounds of the buffer are exceeded, where the access statement uses the index to access the buffer, adding an unconditional statement returning false to the code segment, and executing the code segment on a computer processor to obtain a determination of whether the bounds of the buffer are exceeded.Type: ApplicationFiled: January 15, 2010Publication date: July 21, 2011Applicant: SUN MICROSYSTEMS, INC.Inventors: Bernhard F. Scholz, Cristina N. Cifuentes, Nathan Robert Albert Keynes
-
Publication number: 20110154122Abstract: A method for demand-driven symbolic analysis involves obtaining a section of code comprising an instruction from a source code file and determining a critical variable in the section of code and data dependencies related to the critical variable. The method further involves iteratively computing a symbolic value representing a range of values of the critical variable according to the data dependencies, determining a set of control predicates relevant to the critical variable at the instruction, refining the range of values according to the set of control predicates to generate a second range of values for the symbolic value, and reporting an error when the second range of values exceeds a predetermined value.Type: ApplicationFiled: December 18, 2009Publication date: June 23, 2011Applicant: SUN MICROSYSTEMS, INC.Inventors: Lian Li, Cristina N. Cifuentes, Nathan Robert Albert Keynes