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: 20140236991Abstract: Systems and methods for generating a tuple of structured data files are described herein. In one example, a method includes detecting an expression that describes a structure of a structured image using a constructor. The method can also include using an inference-rule based search strategy to identify a hierarchical arrangement of bounding boxes in the structured image that match the expression. Furthermore, the method can include generating a first tuple of structured data files based on the identified hierarchical arrangement of bounding boxes in the structured image.Type: ApplicationFiled: February 19, 2013Publication date: August 21, 2014Applicant: Microsoft CorporationInventors: Sumit Gulwani, Oleksandr Polozov
-
Patent number: 8799234Abstract: 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: GrantFiled: February 3, 2011Date of Patent: August 5, 2014Assignee: Microsoft CorporationInventors: Sumit Gulwani, Rishabh Singh
-
TRANSLATING NATURAL LANGUAGE DESCRIPTIONS TO PROGRAMS IN A DOMAIN-SPECIFIC LANGUAGE FOR SPREADSHEETS
Publication number: 20140214399Abstract: A system and method to translate natural language descriptions to programs in a domain-specific language for spreadsheets. The method includes generating a model of a spreadsheet. The model includes a column description for each column, and one or more types associated with each column The method also includes normalizing the description by removing stop words, and replacing parts that match column names or data values by parameterized place-holders. The method involves applying rule-based translation along with keyword or type-based program synthesis in an inter-leaved, bottom-up manner and dynamic programming style, where phrases are mapped to sub-programs in increasing order of their length. The rules describe how to map a specific partial natural language phrase into a partial sub-program. Also, the method includes generating a number of potential programs and ranking the programs to sequence them according to their intended likelihood.Type: ApplicationFiled: January 29, 2013Publication date: July 31, 2014Applicant: MICROSOFT CORPORATIONInventors: Sumit Gulwani, Mark Marron -
Patent number: 8752029Abstract: 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: GrantFiled: September 29, 2009Date of Patent: June 10, 2014Assignee: Microsoft CorporationInventors: Sumit Gulwani, Florian Franz Zuleger, Sudeep Dilip Juvekar
-
Patent number: 8719801Abstract: 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: GrantFiled: June 25, 2008Date of Patent: May 6, 2014Assignee: Microsoft CorporationInventors: Sumit Gulwani, Raluca Carmen Sauciuc
-
Publication number: 20140108305Abstract: Ranking technique embodiments are presented that use statistical and machine learning techniques to learn the desired ranking function for use in inductive program synthesis for the domain of string transformations. This generally involves automatically creating a training dataset of positive and negative examples from a given set of training tasks, each including multiple input-output examples. From the training dataset, a ranking function is learned that assigns an expression in a program in the domain specific language to a likelihood measure. This ranking function is then used to compute likelihoods of learnt programs from a very small number of input-output examples for a new task.Type: ApplicationFiled: October 17, 2012Publication date: April 17, 2014Applicant: Microsoft CorporationInventors: Sumit Gulwani, Rishabh Singh
-
Publication number: 20140059078Abstract: Various technologies described herein pertain to executing a mixed query to search a database retained in a data repository. The mixed query includes a regular expression, which is a pattern of elements, and a semantic constraint. The elements in the regular expression include a first wildcard, where the semantic constraint restricts a meaning of the first wildcard. Moreover, the elements in the regular expression include explicit lexical constraint(s) and/or disparate wildcard(s). For instance, semantic constraint(s) can restrict meaning(s) of the disparate wildcard(s). The mixed query is executed to retrieve results that match the pattern of the elements in the regular expression and satisfy the semantic constraint(s).Type: ApplicationFiled: August 27, 2012Publication date: February 27, 2014Applicant: Microsoft CorporationInventors: Sumit Gulwani, Geoffrey Gerson Zweig
-
Patent number: 8650207Abstract: Inductive synthesis and combination framework technique embodiments are presented that generally perform string transformations involving lookup operations in one or more relational tables, either alone or in combination with other non-lookup operations. More particularly, a semantic string lookup transformation language is presented, which can be used to generate an inductive synthesis procedure that synthesizes a set of transformations involving lookup operations that are consistent with the given set of input-output examples. In addition, a combination framework for combining the lookup transformation language and its synthesis procedure, with other transformation languages and their associated synthesis procedures, is presented. The resulting combined synthesis procedures enable the combination framework to synthesize transformations on a rich variety of data-types.Type: GrantFiled: December 2, 2011Date of Patent: February 11, 2014Assignee: Microsoft CorporationInventors: Sumit Gulwani, Rishabh Singh, Dany Rouhana
-
Publication number: 20140013299Abstract: Generalization and/or specialization of code fragments is described, for example, as part of a tool for software developers. In an embodiment, a developer inserts natural language expressing a programming task into code he or she is developing in an integrated development environment; a program synthesizer obtains relevant (possibly non-compiling) code fragments for the task, merges those together to form a snippet, specializes the snippet for the context of the code and inserts the specialized snippet into the code. For example, a pair of code fragments are obtained from a search engine and are merged by discarding statements which are not common to each of the pair. In examples, pairs of code fragments are selected using search engine ranks, user input, or frequency. In embodiments, placeholders replace variable names in the merged fragments. An example takes a syntax tree of the code being developed and uses that to specialize snippets.Type: ApplicationFiled: July 6, 2012Publication date: January 9, 2014Applicant: MICROSOFT CORPORATIONInventors: Lucas Julien Bordeaux, Sumit Gulwani, Youssef Hamadi, Yi Wei
-
Publication number: 20130346982Abstract: There is provided a method and system for generating a program. The method includes detecting a number of steps for performing a task on a computing device and detecting an example relating to each of the steps, wherein the example includes input data and corresponding output data relating to the step. The method also includes, for each example, determining a rule that transforms the input data to the corresponding output data based on cues including textual features within the input data and the corresponding output data. The method further includes generating a program for performing the task based on the rules.Type: ApplicationFiled: June 22, 2012Publication date: December 26, 2013Applicant: MICROSOFT CORPORATIONInventors: Adam Kalai, Butler Lampson, Sumit Gulwani, Aditya Krishna Menon, Omer Tamuz
-
Publication number: 20130326475Abstract: A program creation system is described which generates sets of subprograms for respective input-output examples. The program creation system then groups the sets into partitions by performing an intersection operation. According to one aspect, the program creation system generates subprograms so as to exclude tokens that are not represented by the input strings of the input-output examples. According to another aspect, the program creation system first generates the subprograms without attempting to generate loop-type expressions. If this operation produces unsatisfactory results, the program creation system repeats its processing, this time including loop-type expressions. According to another aspect, the program creation system performs the grouping operation using an expedited graph-intersection operation.Type: ApplicationFiled: June 4, 2012Publication date: December 5, 2013Applicant: Microsoft CorporationInventors: Sumit Gulwani, Rishabh Singh, Dany Rouhana, Benjamin G. Zorn, Weide Zhong
-
Publication number: 20130275847Abstract: 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: ApplicationFiled: June 6, 2013Publication date: October 17, 2013Inventors: Sumit Gulwani, William Robert Harris
-
Publication number: 20130188877Abstract: A sketch processing system is described herein for assisting a user in producing a drawing. In one implementation, the sketch processing system operates by: receiving ink strokes in response to creation of an original drawing; recognizing components and geometric constraints within the original drawing, to produce a recognized drawing; beautifying the original drawing by modifying at least one aspect of the recognized drawing in accordance with the recognized constraints, to produce a beautified drawing; and recognizing a recurring pattern in the beautified pattern (if any) and using that pattern to produce at least one added component to the beautified drawing.Type: ApplicationFiled: January 24, 2012Publication date: July 25, 2013Applicant: Microsoft CorporationInventors: Sumit Gulwani, Salman Shaukat Cheema, Joseph J. LaViola, JR.
-
Patent number: 8484550Abstract: 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: GrantFiled: January 27, 2011Date of Patent: July 9, 2013Assignee: Microsoft CorporationInventors: Sumit Gulwani, William Robert Harris
-
Publication number: 20130144902Abstract: Inductive synthesis and combination framework technique embodiments are presented that generally perform string transformations involving lookup operations in one or more relational tables, either alone or in combination with other non-lookup operations. More particularly, a semantic string lookup transformation language is presented, which can be used to generate an inductive synthesis procedure that synthesizes a set of transformations involving lookup operations that are consistent with the given set of input-output examples. In addition, a combination framework for combining the lookup transformation language and its synthesis procedure, with other transformation languages and their associated synthesis procedures, is presented. The resulting combined synthesis procedures enable the combination framework to synthesize transformations on a rich variety of data-types.Type: ApplicationFiled: December 2, 2011Publication date: June 6, 2013Applicant: MICROSOFT CORPORATIONInventors: Sumit Gulwani, Rishabh Singh, Dany Rouhana
-
Patent number: 8402439Abstract: 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: GrantFiled: June 27, 2008Date of Patent: March 19, 2013Assignee: Microsoft CorporationInventors: Sumit Gulwani, Saurabh Srivastava, Ramarathnam Venkatesan
-
Patent number: 8397221Abstract: 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: GrantFiled: October 7, 2008Date of Patent: March 12, 2013Assignee: Microsoft CorporationInventors: Sumit Gulwani, Krishna Kumar Mehra, Trishul A Chilimbi
-
Patent number: 8316345Abstract: 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: GrantFiled: June 1, 2007Date of Patent: November 20, 2012Assignee: Microsoft CorporationInventors: Sumit Gulwani, Akash Lal
-
Patent number: 8271404Abstract: 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: GrantFiled: October 2, 2008Date of Patent: September 18, 2012Assignee: Microsoft CorporationInventors: Sumit Gulwani, Ramarathnam Venkatesan, Saurabh Srivastava
-
Patent number: 8266598Abstract: 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: GrantFiled: May 5, 2008Date of Patent: September 11, 2012Assignee: Microsoft CorporationInventors: Sumit Gulwani, Krishna Kumar Mehra, Trishul A Chilimbi