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: 11204746
    Abstract: 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: Grant
    Filed: January 28, 2020
    Date of Patent: December 21, 2021
    Assignee: Oracle International Corporation
    Inventors: Sora Bae, Nathan Robert Albert Keynes, Cristina Cifuentes
  • Patent number: 11159381
    Abstract: 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: Grant
    Filed: July 30, 2019
    Date of Patent: October 26, 2021
    Assignee: Oracle International Corporation
    Inventors: Henry John O'Brien, Padmanabhan Krishnan, Nathan Robert Albert Keynes, Marius Portmann
  • Publication number: 20210232377
    Abstract: 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: Application
    Filed: January 28, 2020
    Publication date: July 29, 2021
    Applicant: Oracle International Corporation
    Inventors: Sora Bae, Nathan Robert Albert Keynes, Cristina Cifuentes
  • Patent number: 10949336
    Abstract: 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: Grant
    Filed: March 29, 2019
    Date of Patent: March 16, 2021
    Assignee: Oracle International Corporation
    Inventors: Nathan Robert Albert Keynes, Eric Beguet
  • Publication number: 20210036926
    Abstract: 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: Application
    Filed: July 30, 2019
    Publication date: February 4, 2021
    Inventors: Henry John O'Brien, Padmanabhan Krishnan, Nathan Robert Albert Keynes, Marius Portmann
  • Publication number: 20200310951
    Abstract: 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: Application
    Filed: March 29, 2019
    Publication date: October 1, 2020
    Inventors: Nathan Robert Albert Keynes, Eric Beguet
  • Patent number: 10719425
    Abstract: 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: Grant
    Filed: June 13, 2018
    Date of Patent: July 21, 2020
    Assignee: Oracle International Corporation
    Inventors: Nicholas John Allen, Yang Zhao, Cristina Nicole Cifuentes, Nathan Robert Albert Keynes
  • Patent number: 10620660
    Abstract: 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: Grant
    Filed: March 26, 2018
    Date of Patent: April 14, 2020
    Assignee: Oracle International Corporation
    Inventors: Yang Zhao, Nicholas John Allen, Cristina Nicole Cifuentes, Nathan Robert Albert Keynes
  • Publication number: 20190384695
    Abstract: 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: Application
    Filed: June 13, 2018
    Publication date: December 19, 2019
    Inventors: Nicholas John Allen, Yang Zhao, Cristina Nicole Cifuentes, Nathan Robert Albert Keynes
  • Publication number: 20190294205
    Abstract: 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: Application
    Filed: March 26, 2018
    Publication date: September 26, 2019
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Yang ZHAO, Nicholas John Allen, Cristina Nicole Cifuentes, Nathan Robert Albert Keynes
  • Patent number: 8893102
    Abstract: 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: Grant
    Filed: July 27, 2011
    Date of Patent: November 18, 2014
    Assignee: Oracle International Corporation
    Inventors: Nathan Robert Albert Keynes, Cristina N. Cifuentes, Lian Li
  • Patent number: 8578343
    Abstract: 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: Grant
    Filed: January 15, 2010
    Date of Patent: November 5, 2013
    Assignee: Oracle America, Inc.
    Inventors: Bernhard F. Scholz, Cristina N. Cifuentes, Nathan Robert Albert Keynes
  • Patent number: 8516443
    Abstract: 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: Grant
    Filed: May 26, 2011
    Date of Patent: August 20, 2013
    Assignee: Oracle International Corporation
    Inventors: Lian Li, Cristina N. Cifuentes, Nathan Robert Albert Keynes
  • Patent number: 8473927
    Abstract: 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: Grant
    Filed: May 26, 2011
    Date of Patent: June 25, 2013
    Assignee: Oracle International Corporation
    Inventors: Lian Li, Cristina N. Cifuentes, Nathan Robert Albert Keynes
  • Publication number: 20130031531
    Abstract: 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: Application
    Filed: July 27, 2011
    Publication date: January 31, 2013
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Nathan Robert Albert Keynes, Cristina N. Cifuentes, Lian Li
  • Publication number: 20120304153
    Abstract: 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: Application
    Filed: May 26, 2011
    Publication date: November 29, 2012
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Lian Li, Cristina N. Cifuentes, Nathan Robert Albert Keynes
  • Publication number: 20120304158
    Abstract: 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: Application
    Filed: May 26, 2011
    Publication date: November 29, 2012
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Lian Li, Cristina N. Cifuentes, Nathan Robert Albert Keynes
  • Patent number: 8302086
    Abstract: 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: Grant
    Filed: December 18, 2009
    Date of Patent: October 30, 2012
    Assignee: Oracle America, Inc.
    Inventors: Lian Li, Cristina N. Cifuentes, Nathan Robert Albert Keynes
  • Publication number: 20110179400
    Abstract: 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: Application
    Filed: January 15, 2010
    Publication date: July 21, 2011
    Applicant: SUN MICROSYSTEMS, INC.
    Inventors: Bernhard F. Scholz, Cristina N. Cifuentes, Nathan Robert Albert Keynes
  • Publication number: 20110154122
    Abstract: 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: Application
    Filed: December 18, 2009
    Publication date: June 23, 2011
    Applicant: SUN MICROSYSTEMS, INC.
    Inventors: Lian Li, Cristina N. Cifuentes, Nathan Robert Albert Keynes