Patents by Inventor Sumit Gulwani

Sumit Gulwani 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).

  • Publication number: 20120197829
    Abstract: A quantified belief propagation (QBP) algorithm receives as input an existentially quantified boolean formula (QBF) of existentially quantified boolean variables, universally quantified variables, and boolean operators. A tripartite graph is constructed, and includes (i) there-exists nodes that correspond to and represent the existentially quantified variables, (ii) for-all nodes that correspond to and represent the universally quantified variables, and (iii) sub-formula nodes that correspond to and represent sub-formulas of the QBF. A set of boolean values of the existentially quantified variables is found by (i) passing a first message from an arbitrary sub-formula node to an arbitrary for-all node, and (ii) in response, passing a second message from the arbitrary for-all node to the arbitrary sub-formula node.
    Type: Application
    Filed: February 1, 2011
    Publication date: August 2, 2012
    Applicant: MICROSOFT CORPORATION
    Inventors: Aditya V. Nori, Sriram K. Rajamani, Rahul Srinivasan, Sumit Gulwani
  • Publication number: 20120198322
    Abstract: Described herein are mechanisms for automatically generating a computer-executable program that transforms a first table in a first format to a second table in a second format by way of user-provided examples. A user provides an exemplary input table of a first format, where the input table may be a portion of the first table. The user also provides an exemplary output table of a second format, wherein contents of the output table correspond to contents of the input table. Based upon these user-provided examples, a table transform program is automatically generated, wherein the table transform program, when executed over the first table generates the second table.
    Type: Application
    Filed: January 27, 2011
    Publication date: August 2, 2012
    Applicant: Microsoft Corporation
    Inventors: Sumit Gulwani, William Robert Harris
  • Publication number: 20120192051
    Abstract: Data formatting rules to convert data from one form to another form are automatically determined based on a user's edits. A machine learning heuristic is applied to a user's edits to determine a data formatting rule that may be applied to data. For example, a user may make edits that add/remove characters from data, concatenate data, extract data, rename data, and the like. The machine learning heuristic may be automatically triggered in response to an event (e.g. after a predetermined number of edits are made to a same type of data) or manually triggered (e.g. selecting a user interface option). The data formatting rule may be applied to other data and the results of the formatting reviewable by the user. Based on further edits/reviews, the data formatting rule may be updated. The data formatting rules may be stored for later use.
    Type: Application
    Filed: January 26, 2011
    Publication date: July 26, 2012
    Applicant: MICROSOFT CORPORATION
    Inventors: Chad Rothschiller, Daniel Battagin, Christopher Benedict, Rodrigo Moreira-Silveira, Dmitri O. Danilov, Eric Cohen, Sumit Gulwani, Dany Rouhana, Rishabh Singh, Benjamin Goth Zorn, Ramarathnam Venkatesan
  • Patent number: 8181163
    Abstract: One embodiment is directed to synthesizing code fragments in a software routine using known inputs and corresponding expected outputs. A computer system provides a software routine with known inputs and corresponding expected outputs, infers software routine instructions based on the known inputs and corresponding expected outputs, and synthesizes a correctly functioning code fragment based on the inferred instructions. Another embodiment is directed to automatically resolving semantic errors in a software routine. A computer system provides the software routine with known inputs and corresponding expected outputs for portions of a program fragment where an error has been localized.
    Type: Grant
    Filed: May 7, 2007
    Date of Patent: May 15, 2012
    Assignee: Microsoft Corporation
    Inventors: Vladimir Jojic, Nebojsa Jojic, Sumit Gulwani
  • Publication number: 20120011152
    Abstract: A program generation system is described that generates a program based on a plurality of input-output examples. The input-output examples include input items and corresponding output items. The program generation system can include three component modules. A parsing module processes the input items and output items to provide a plurality of input parts and output parts, respectively. A transformation module determines, for each output part, whether the output part can be produced from a corresponding input part using one or more converter modules selected from a collection of candidate converter modules. A formatting module generates formatting instructions that transform selected output parts into a form specified by the output items. These three modules provide a generated program that embodies logic learned from the input-output examples; the generated program can be subsequently used to transform new input items into new respective output items.
    Type: Application
    Filed: July 12, 2010
    Publication date: January 12, 2012
    Applicant: MICROSOFT CORPORATION
    Inventors: Sumit Gulwani, David P. Walker
  • Publication number: 20120011084
    Abstract: Semantic entity manipulation technique embodiments are presented that generate a probabilistic program capable of manipulating character strings representing semantic entities based on input-output examples. The program can then be used to produce a desired output consistent with the input-output examples from inputs of a type included in the examples. The probabilistic program is generated based on the output of parsing, transform and formatting modules. The parsing module employs a probabilistic approach to parsing the input-output examples. The transform module identifies a weighted set of transforms that are capable of producing the output item from the input items of an input-output example to a likelihood specified by their assigned weight. The formatting module generates formatting instructions that transform selected output parts into a form specified by the output items in the input-output examples.
    Type: Application
    Filed: February 3, 2011
    Publication date: January 12, 2012
    Applicant: Microsoft Corporation
    Inventors: Sumit Gulwani, Rishabh Singh
  • Publication number: 20110302553
    Abstract: A program creation system is described which generates a data manipulation program based on input-output examples. The created program may include a collection of subprograms together with a collection of corresponding selection conditions. When a new input item is received, a program execution module uses the selection conditions to select one of the subprograms. The program execution module then applies the selected subprogram to generate a new output item. The program creation system generates the program using a three-part approach, involving: generating sets of subprograms for the respective input-output examples; grouping the sets of programs into partitions and choosing representative subprograms for the partitions; and determining the selection conditions. A user interaction module provides various mechanisms which allow a user to interact with the program creation system and thereby improve the performance of the created program.
    Type: Application
    Filed: June 4, 2010
    Publication date: December 8, 2011
    Applicant: Microsoft Corporation
    Inventor: Sumit Gulwani
  • Patent number: 8060880
    Abstract: Locks which protect data structures used within atomic sections of concurrent programs are inferred from atomic sections and acquired in a manner to avoid deadlock. Locks may be inferred by expression correspondence using a backward inter-procedural analysis of an atomic section. Locks may be sorted according to a total order and acquired early in an atomic section to prevent deadlock. Multiple granularity of locks are determined and employed. Fine grained locks may be inferred and acquired to reduce contention. Coarse grained locks may be determined and substituted for fine grained locks when necessary for unbounded locations or to reduce the number of finer grained locks.
    Type: Grant
    Filed: May 4, 2007
    Date of Patent: November 15, 2011
    Assignee: Microsoft Corporation
    Inventors: Sigmund Isy Cherem, Trishul Amit Madhukar Chilimbi, Sumit Gulwani
  • Publication number: 20110078665
    Abstract: A system that facilitates computing a symbolic bound with respect to a procedure that is executable by a processor on a computing device is described herein. The system includes a transition system generator component that receives the procedure and computes a disjunctive transition system for a control location in the procedure. A compute bound component computes a bound for the transition system, wherein the bound is expressed in terms of inputs to the transition system. The system further includes a translator component that translates the bound computed by the compute bound component such that the bound is expressed in terms of inputs to the procedure.
    Type: Application
    Filed: September 29, 2009
    Publication date: March 31, 2011
    Applicant: Microsoft Corporation
    Inventors: Sumit Gulwani, Florian Frantz Zuleger, Sudeep Dilip Juvekar
  • Publication number: 20100318980
    Abstract: Described is an analysis tool/techniques for determining the computational complexity of a computer program, including when the program includes procedures having nested loops and/or multi-path loops. First, multi-path loops are converted into code-fragments consisting of simpler loops via a transformation called control flow refinement. Progress invariants are determined for appropriate locations in the procedure to represent relationships between a state that can arise at that program location and the previous state at that location. A bound finding mechanism (such as one based on pattern matching) is then used to compute loop bounds from progress invariants. These bounds are then composed appropriately to determine a precise bound for the enclosing procedure.
    Type: Application
    Filed: June 13, 2009
    Publication date: December 16, 2010
    Applicant: Microsoft Corporation
    Inventors: Sumit Gulwani, Sagar Jain, Eric J. Koskinen
  • Patent number: 7729999
    Abstract: In one embodiment, a computer system performs a method for verifying the validity or invalidity of a software routine by learning appropriate invariants at each program point. A computer system chooses an abstract domain that is sufficiently precise to express the appropriate invariants. The computer system associates an inconsistency measure with any two abstract elements of the abstract domain. The computer system searches for a set of local invariants configured to optimize a total inconsistency measure which includes a sum of local inconsistency measures. The computer system optimizes the total inconsistency measure for all input/output pairs of the software routine. In one embodiment, the optimization of total inconsistency is achieved by the computer system which repeatedly replaces a locally inconsistent invariant with a new invariant, randomly selected among the possible invariants which are locally less inconsistent with the current invariants at the neighboring program points.
    Type: Grant
    Filed: January 12, 2007
    Date of Patent: June 1, 2010
    Assignee: Microsoft Corporation
    Inventors: Sumit Gulwani, Vladimir Jojic, Nebojsa Jojic
  • Publication number: 20100088684
    Abstract: Bounding resource consumption of code that processes recursive data structures and collections includes making use of quantitative functions (based on user input) that are associated with a tuple of data-structures and whose semantics is specified by describing the effect of various data-structure methods on the relevant quantitative functions. Counter variables are incorporated into source code to count loop iterations (and number of recursive procedure call invocations). Relevant quantitative functions are incorporated into the source code to allow computation of invariants (and hence bounds) on the incorporated counter variables in terms of the quantitative functions.
    Type: Application
    Filed: October 7, 2008
    Publication date: April 8, 2010
    Applicant: Microsoft Corporation
    Inventors: Sumit Gulwani, Krishna Kumar Mehra, Trishul A. Chilimbi
  • Publication number: 20100088548
    Abstract: Techniques are disclosed for generating complex invariants in a program using a Satisfiability Modulo Theories (SMT) solver. In one embodiment, the generated invariants may be used to validate assert statements in a program. Additionally or alternatively, a weakest pre-condition invariant may be generated such that parameters passed to the program that satisfy the weakest pre-condition are guaranteed to satisfy the program's assert statements. Additionally or alternatively, a strongest post-condition may be generated, determining what is guaranteed to be true about the state of the program upon completion of the program. In one embodiment, the SMT solver generates invariants by mapping predicates onto unknown variables in a template. The template may comprise unknown variables related by logical structures defined with disjunctions, universal quantifiers, and existential quantifiers. The predicates may comprise equalities and inequalities between program variables.
    Type: Application
    Filed: October 2, 2008
    Publication date: April 8, 2010
    Applicant: Microsoft Corporation
    Inventors: Sumit Gulwani, Ramarathnam Venkatesan, Saurabh Srivastava
  • Publication number: 20090326907
    Abstract: Described is a technology by which program analysis uses rich invariant templates that may specify an arbitrary Boolean combination of linear inequalities for program verification. Also described is choosing a cut-set that identifies program locations, each of which is associated with an invariant template. The verification generates second-order constraints, converts second-order logic formula based on those constraints into first-order logic formula, then converts the first-order logic formula into a quantifier-free formula, which is then converted into a Boolean satisfiability formula. Off-the-shelf constraint solvers may then be applied to the Boolean satisfiability formula to generate program analysis results. Various templates may be used to convert the second-order logic formula into the first-order logic formula.
    Type: Application
    Filed: June 27, 2008
    Publication date: December 31, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Sumit Gulwani, Saurabh Srivastava, Ramarathnam Venkatesan
  • Publication number: 20090327997
    Abstract: Described are various techniques by which a concurrent program is analyzed with respect to timing. In one aspect, code fragments in a concurrent program are modified and/or instrumented by inserting iteration counters inside loops. Examples of modified fragments include those corresponding to concurrently executing code fragments, non-blocking concurrent code fragments, blocking concurrent code fragments, fragments having a loop that may not terminate, fragments having interlocked operation, or fragments having a timeout. Such fragments are modified and/or flagged so as to provide the summary data. When statically analyzed, the instrumented code provides complexity information regarding each fragment, or combinations of fragments, such as concurrent fragments. Summary data regarding the concurrent program is provided by processing the complexity information into at least one computation graph.
    Type: Application
    Filed: June 25, 2008
    Publication date: December 31, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Sumit Gulwani, Raluca Carmen Sauciuc
  • Publication number: 20090276763
    Abstract: Bounding resource consumption of code using abstract interpretation includes a static analysis to estimate a code's resource consumption in terms of units of resources utilized at any point during execution, expressed as a function of its scalar inputs. An instrumentation mechanism and an abstract interpretation mechanism are employed to compute bounds on the code resource consumption. The instrumentation mechanism includes incorporating one or more counter variables in the source code to count the number of loop iterations and recursive procedure call invocations. The abstract interpretation mechanism includes computing invariants on the instrumented counter variables and scalar program variables to obtain bounds on the number of loop iterations and recursive procedure call invocations, which are then composed together to obtain resource bounds for the entire program.
    Type: Application
    Filed: May 5, 2008
    Publication date: November 5, 2009
    Applicant: Microsoft Corporation
    Inventors: Sumit Gulwani, Krishna Kumar Mehra, Trishul A. Chilimbi
  • Patent number: 7606774
    Abstract: A computer implemented cover process is disclosed for use in program analysis and verification techniques where existential quantifier elimination is not possible. The cover process allows an accurate assessment of the viability of a theory. Where a theory can be described using quantifier-free formulas, it can be shown that the program analysis and verification techniques using cover are not only sound (i.e., an indication of validity is reliable), but also precise (i.e., and indication of an error is reliable).
    Type: Grant
    Filed: June 21, 2006
    Date of Patent: October 20, 2009
    Assignee: Microsoft Corporation
    Inventors: Madanlal S. Musuvathi, Sumit Gulwani
  • Publication number: 20080301655
    Abstract: Embodiments described herein relate to determining an abstraction of a computer program and to the refinement of an abstraction of a computer program. The computer program may be a sequential program or may be a concurrent (parallel) program. A directed graph represents a computer program and may be the cross product of threads within a concurrent program. Nodes within a representation of a program are reduced to a single node to produce an abstraction. An abstraction may be refined by determining constraints that produce a refined abstraction that does not comprise infeasible paths.
    Type: Application
    Filed: June 1, 2007
    Publication date: December 4, 2008
    Applicant: MICROSOFT CORPORATION
    Inventors: Sumit Gulwani, Akash Lal
  • Publication number: 20080282108
    Abstract: One embodiment is directed to synthesizing code fragments in a software routine using known inputs and corresponding expected outputs. A computer system provides a software routine with known inputs and corresponding expected outputs, infers software routine instructions based on the known inputs and corresponding expected outputs, and synthesizes a correctly functioning code fragment based on the inferred instructions. Another embodiment is directed to automatically resolving semantic errors in a software routine. A computer system provides the software routine with known inputs and corresponding expected outputs for portions of a program fragment where an error has been localized.
    Type: Application
    Filed: May 7, 2007
    Publication date: November 13, 2008
    Applicant: Microsoft Corporation
    Inventors: Vladimir Jojic, Nebojsa Jojic, Sumit Gulwani
  • Publication number: 20080276025
    Abstract: Locks which protect data structures used within atomic sections of concurrent programs are inferred from atomic sections and acquired in a manner to avoid deadlock. Locks may be inferred by expression correspondence using a backward inter-procedural analysis of an atomic section. Locks may be sorted according to a total order and acquired early in an atomic section to prevent deadlock. Multiple granularity of locks are determined and employed. Fine grained locks may be inferred and acquired to reduce contention. Coarse grained locks may be determined and substituted for fine grained locks when necessary for unbounded locations or to reduce the number of finer grained locks.
    Type: Application
    Filed: May 4, 2007
    Publication date: November 6, 2008
    Applicant: MICROSOFT CORPORATION
    Inventors: Sigmund Isy Cherem, Trishul Amit Madhukar Chilimbi, Sumit Gulwani