Patents by Inventor Indradeep Ghosh

Indradeep Ghosh 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: 8539500
    Abstract: An electronic device includes a memory, a processor coupled to the memory, and one or more policies stored in the memory. The policies include a resource availability policy determining whether the processor should continue evaluating the software, and a job availability policy determining whether new jobs will be created for unexplored branches. The processor is configured to receive a job to be executed, evaluate the software, select a branch to explore and store an initialization sequence of one or more unexplored branches if a branch in the software is encountered, evaluate the job availability policy, decide whether to create a job for each of the unexplored branches based on the job availability policy, evaluate the resource availability policy, and decide whether to continue evaluating the software at the branch selected to explore based on the resource availability policy. The job indicates of a portion of software to be evaluated.
    Type: Grant
    Filed: November 30, 2010
    Date of Patent: September 17, 2013
    Assignee: Fujitsu Limited
    Inventors: Indradeep Ghosh, Mukul Ranjan Prasad
  • Patent number: 8504997
    Abstract: In particular embodiments, an environment for modular software analysis is generated for a software module under analysis. Irrelevancy analysis is performed on the software module to determine that, for each input datum to the software module, whether the input datum is relevant or irrelevant with respect to branch coverage of the module code. A default concrete value is assigned to each irrelevant input datum. A set of concrete values is calculated for each relevant input datum using symbolic execution. The environment is enhanced such that default concrete values are passed to the software module for the irrelevant input data and sets of concrete values generated using symbolic execution are passed to the software module for the relevant input data. The enhanced environment enables module analysis with as much as 100% branch coverage of the module code.
    Type: Grant
    Filed: March 19, 2009
    Date of Patent: August 6, 2013
    Assignee: Fujitsu Limited
    Inventors: Oksana Tkachuk, Indradeep Ghosh, Sreeranga P. Rajan
  • Patent number: 8479171
    Abstract: In one embodiment, constructing one or more sets of variables corresponding to one or more input variables of a software module respectively; for each one of the sets of variables, computing an average branching depth that is affected by the set of variables; selecting a first one of the sets of variables that has the smallest average branching depth; assigning a first symbolic value to the input variable of the first set of variables; symbolically executing the software module to generate a first set of test cases for the first set of variables; optionally compacting the first set of test cases by removing the redundant tests that do not increase test coverage and selecting a minimal subset of the first set of test cases that cover all the covered conditional branch points; and validating the software module using the first set of test cases.
    Type: Grant
    Filed: May 24, 2010
    Date of Patent: July 2, 2013
    Assignee: Fujitsu Limited
    Inventor: Indradeep Ghosh
  • Patent number: 8468537
    Abstract: In one embodiment, a method includes statically analyzing a validation toolkit environment. The method may also include, identifying a plurality of computational threads that do not share data structures with each other based on analysis of the validation toolkit environment. The method may additionally include calculating computational requirements of the computational threads. The method may further include distributing the threads among a plurality of resources such that the aggregate computational requirements of the computational threads are approximately evenly balanced among the plurality of resources.
    Type: Grant
    Filed: July 14, 2010
    Date of Patent: June 18, 2013
    Assignee: Fujitsu Limited
    Inventors: Sreeranga P. Rajan, Praveen K. Murthy, Indradeep Ghosh, Mukul Ranjan Prasad, Oksana I. Tkachuk
  • Patent number: 8453117
    Abstract: In one embodiment, a method includes accessing an event-driven application input by a user, the event-driven application comprising source code, one or more use cases input by the user for the event-driven application, and one or more functional requirements input by the user for the event-driven application; parsing the use cases and the functional requirements according to the predefined syntax to construct one or more validation modules for validating the event-driven application without any modification to the source code of the event-driven application for validation purposes; formally validating the event-driven application using the validation modules without relying on assertions inserted into the source code of the event-driven application for validation purposes; and if the formal validation finds one or more defects in the event-driven application, generating output for communication to the user identifying the defects.
    Type: Grant
    Filed: March 9, 2010
    Date of Patent: May 28, 2013
    Assignee: Fujitsu Limited
    Inventors: Sreeranga P. Rajan, Mukul Prasad, Oksana Tkachuk, Indradeep Ghosh
  • Patent number: 8396686
    Abstract: In one embodiment, one or more electronic devices access energy-consumption data at each of a plurality of electricity-consuming devices, the energy-consumption data at each of the electricity-consuming devices indicating for each of a plurality of past pre-determined time periods an aggregate energy usage by the electricity-consuming device over the past pre-determined time period, an energy-measurement unit at the electricity-consuming device having measured and recorded the aggregate energy usage by the electricity-consuming device for each of the past pre-determined time periods for later access, each of the energy-measurement units having a substantially unique identifier (ID), each of the electricity-consuming devices having its own one of the energy-measurement units; and based on the energy-consumption data, determine one or more energy-consumption patterns across the electricity-consuming devices over at least the past pre-determined time periods.
    Type: Grant
    Filed: April 13, 2011
    Date of Patent: March 12, 2013
    Assignee: Fujitsu Limited
    Inventors: Zhexuan Song, Indradeep Ghosh
  • Patent number: 8359576
    Abstract: In one embodiment, a method include accessing one or more global temporal requirements of an application specified using one or more requirement templates from a library of requirement templates, accessing a model of the application, generating one or more symbolic expressions of one or more of the global temporal requirements of the application, searching a state space of the application model with a model checker, monitoring the search of the state space for events in the state space encompassed by the symbolic expressions and modifying construction of a graph of the state space in response to occurrence of one or more events encompassed by the symbolic expressions, evaluating the symbolic expressions based on the graph of the state space to determine whether one or more of the global temporal requirements are valid, and communicating one or more results of the evaluation of the symbolic expressions for presentation to a user.
    Type: Grant
    Filed: November 14, 2008
    Date of Patent: January 22, 2013
    Assignee: Fujitsu Limited
    Inventors: Mukul R. Prasad, Indradeep Ghosh, Sreeranga P. Rajan
  • Publication number: 20120311545
    Abstract: In one embodiment, symbolically executing a software module having a number of execution paths; and losslessly reducing the number of execution paths during the symbolic execution of the software module.
    Type: Application
    Filed: June 6, 2011
    Publication date: December 6, 2012
    Applicant: FUJITSU LIMITED
    Inventors: Guodong Li, Sreeranga P. Rajan, Indradeep Ghosh
  • Publication number: 20120265357
    Abstract: In one embodiment, one or more electronic devices access energy-consumption data at each of a plurality of electricity-consuming devices, the energy-consumption data at each of the electricity-consuming devices indicating for each of a plurality of past pre-determined time periods an aggregate energy usage by the electricity-consuming device over the past pre-determined time period, an energy-measurement unit at the electricity-consuming device having measured and recorded the aggregate energy usage by the electricity-consuming device for each of the past pre-determined time periods for later access, each of the energy-measurement units having a substantially unique identifier (ID), each of the electricity-consuming devices having its own one of the energy-measurement units; and based on the energy-consumption data, determine one or more energy-consumption patterns across the electricity-consuming devices over at least the past pre-determined time periods.
    Type: Application
    Filed: April 13, 2011
    Publication date: October 18, 2012
    Applicant: FUJITSU LIMITED
    Inventors: Zhexuan Song, Indradeep GHOSH
  • Patent number: 8271953
    Abstract: In accordance with a particular embodiment of the present invention, a method is offered that includes supporting requirement validation middleware and capturing global requirements or properties for one or more web applications. A template-based formalism is employed to capture the requirements or properties. A small set of relevant temporal patterns are provided from which to choose in capturing the global requirements or properties. In specific embodiments, the method uses a set of pre-coded semi-configurable checkers. A Java-like syntax is used to specify expressions. A library of atomic entities or events (to compose expressions) is automatically generated. In still other embodiments, a small set of light-weight automatically-customizable checkers are employed in capturing the global requirements or properties. The method can be used with both formal and semi-formal techniques.
    Type: Grant
    Filed: March 12, 2008
    Date of Patent: September 18, 2012
    Assignee: Fujitsu Limited
    Inventors: Mukul R. Prasad, Indradeep Ghosh, Sreeranga P. Rajan
  • Publication number: 20120204154
    Abstract: In particular embodiments, a method includes accessing bytecode generated by a compiler from a software program for execution by a particular processing unit; accessing configuration information describing one or more aspects of the particular processing unit; symbolically executing the bytecode with the configuration information; and, based on the symbolic execution, generating one or more results conveying a functional correctness of the software program with respect to the particular processing unit for communication to a user and generating one or more test cases for the software program for communication to a user.
    Type: Application
    Filed: February 4, 2011
    Publication date: August 9, 2012
    Applicant: FUJITSU LIMITED
    Inventors: Guodong Li, Sreeranga P. Rajan, Indradeep Ghosh
  • Publication number: 20120192169
    Abstract: Particular embodiments optimize a C++ function comprising one or more loops for symbolic execution, comprising for each loop, if there is a branching condition within the loop, then rewrite the loop to move the branching condition outside the loop. Particular embodiments may further optimize the C++ function through simplified symbolic expressions and adding constructs forcing delayed interpretation of symbolic expressions during the symbolic execution.
    Type: Application
    Filed: January 20, 2011
    Publication date: July 26, 2012
    Applicant: FUJITSU LIMITED
    Inventors: Guodong Li, Sreeranga P. Rajan, Indradeep Ghosh
  • Publication number: 20120192150
    Abstract: Particular embodiment compile a C++ program having one or more input variables to obtain bytecode of the C++ program; compile a C++ library to obtain bytecode of the C++ library; symbolically execute the bytecode of the C++ program and the bytecode of the C++ library, comprising assign a symbolic input to each input variable of the C++ program; determine one or more execution paths in the C++ program; and for each execution path, construct a symbolic expression that if satisfied, causes the C++ program to proceed down the execution path; and generate one or more test cases for the C++ program by solving the symbolic expressions.
    Type: Application
    Filed: January 20, 2011
    Publication date: July 26, 2012
    Applicant: FUJITSU LIMITED
    Inventors: Guodong LI, Sreeranga P. RAJAN, Indradeep GHOSH
  • Publication number: 20120192162
    Abstract: Particular embodiments discover a relationship between a plurality of methods of a C++ object; define one or more rules to represent the relationship; verify the rules by symbolically executing the methods; and if the rules are verified, then use the rules when symbolically executing the methods so that bytecode of the methods is not executed.
    Type: Application
    Filed: January 20, 2011
    Publication date: July 26, 2012
    Applicant: FUJITSU LIMITED
    Inventors: Guodong Li, Sreeranga P. Rajan, Indradeep Ghosh
  • Publication number: 20120110550
    Abstract: A method for verifying software includes determining an initialization path condition of a received software verification job, determining a termination path condition of a computing node, and initializing the execution of the received software verification job on the computing node based on the initialization path condition and the termination path condition. The initialization path condition includes a sequence of program predicates for reaching a starting state of software to be verified. The received software verification job includes an indication of a portion of the software to be verified. The termination path condition includes an indication of the last state reached during the execution of a previous software verification job on the computing node. The computing node is assigned to execute the received software verification job.
    Type: Application
    Filed: December 1, 2010
    Publication date: May 3, 2012
    Inventors: Indradeep Ghosh, Mukul Ranjan Prasad
  • Publication number: 20120110589
    Abstract: A method for verifying software includes monitoring a resource queue and a job queue, determining whether the resource queue and the job queue contain entries, and if both the resource queue and the job queue contain entries, then applying a scheduling policy to select a job, selecting a worker node as a best match for the characteristics of the job among the resource queue entries, assigning the job to the worker node, assigning parameters to the worker node for a job creation policy for creating new jobs in the job queue while executing the job, and assigning parameters to the worker node for a termination policy for halting execution of the job. The resource queue indicates worker nodes available to verify a portion of code. The job queue indicates one or more jobs to be executed by a worker node. A job includes a portion of code to be verified.
    Type: Application
    Filed: November 30, 2010
    Publication date: May 3, 2012
    Inventors: Indradeep Ghosh, Mukul Ranjan Prasad
  • Publication number: 20120110580
    Abstract: A method for verifying software includes determining the result of a bounding function, and using the result of the bounding function to apply one or more policies to the execution of the received job. The bounding function evaluates the execution of a received job, the received job indicating a portion of software to be verified. The result of the bounding function is based upon the present execution of the received job, one or more historical parameters, and an evaluation of the number of idle nodes available to process other jobs.
    Type: Application
    Filed: November 30, 2010
    Publication date: May 3, 2012
    Inventors: Indradeep Ghosh, Mukul Ranjan Prasad
  • Publication number: 20120110590
    Abstract: An electronic device includes a memory, a processor coupled to the memory, and one or more policies stored in the memory. The policies include a resource availability policy determining whether the processor should continue evaluating the software, and a job availability policy determining whether new jobs will be created for unexplored branches. The processor is configured to receive a job to be executed, evaluate the software, select a branch to explore and store an initialization sequence of one or more unexplored branches if a branch in the software is encountered, evaluate the job availability policy, decide whether to create a job for each of the unexplored branches based on the job availability policy, evaluate the resource availability policy, and decide whether to continue evaluating the software at the branch selected to explore based on the resource availability policy. The job indicates of a portion of software to be evaluated.
    Type: Application
    Filed: November 30, 2010
    Publication date: May 3, 2012
    Inventors: Indradeep Ghosh, Mukul Ranjan Prasad
  • Publication number: 20120110591
    Abstract: A method for verifying software includes accessing a job queue, accessing a resource queue, and assigning a job from the job queue to a resource from the resource queue if an addition is made to the a job queue or to a resource queue. The job queue includes an indication of one or more jobs to be executed by a worker node, each job indicating a portion of a code to be verified. The resource queue includes an indication of a one or more worker nodes available to verify a portion of software. The resource is selected by determining the best match for the characteristics of the selected job among the resources in the resource queue.
    Type: Application
    Filed: November 30, 2010
    Publication date: May 3, 2012
    Inventors: Indradeep Ghosh, Mukul Ranjan Prasad
  • Publication number: 20120017220
    Abstract: In one embodiment, a method includes statically analyzing a validation toolkit environment. The method may also include, identifying a plurality of computational threads that do not share data structures with each other based on analysis of the validation toolkit environment. The method may additionally include calculating computational requirements of the computational threads. The method may further include distributing the threads among a plurality of resources such that the aggregate computational requirements of the computational threads are approximately evenly balanced among the plurality of resources.
    Type: Application
    Filed: July 14, 2010
    Publication date: January 19, 2012
    Inventors: Sreeranga P. Rajan, Praveen K. Murthy, Indradeep Ghosh, Mukul Ranjan Prasad, Oksana I. Tkachuk