String Manipulation Program Synthesis Engine

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Users of spreadsheet systems face challenges in transforming large datasets due to the complexity and burden of manual processes and existing macro program solutions, which are often confusing and require formal programming experience.

Innovation Solution

A program creation system that automatically generates string manipulation programs based on input-output examples by generating sets of subprograms, excluding irrelevant tokens, and using expedited graph-intersection operations to group and rank programs for efficient data transformation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If manual transformation is used for small datasets, then flexibility and control are maintained, but productivity and efficiency deteriorate when scaling to large datasets

Engineering Contradiction:
Improvedata transformation efficiencyVSAvoiduser operation complexity
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The system performs automatic program generation and optimization without requiring user intervention in the complex programming tasks. The synthesis engine autonomously creates, tests, and refines transformation programs based on input-output examples, allowing the system to serve itself in resolving the contradiction between productivity and ease of operation

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system performs preliminary program synthesis and optimization before actual data transformation. By pre-generating and validating transformation programs using synthetic examples, the system prepares efficient execution paths in advance, improving productivity while keeping user interaction simple

Inventive Principle:
Principle #10Preliminary action

2Extent of automation

If macro programs are created by users, then automation capability is achieved, but device complexity and difficulty of operation increase due to requiring formal programming experience

Engineering Contradiction:
Improvedata transformation automationVSAvoidprogram creation complexity
Core Design Contradiction:
Extent of automationVSDevice complexity

Solution Approach 1:

The synthesis engine acts as an intermediary between the user's simple input-output examples and the complex transformation program. It translates user-friendly examples into sophisticated programs automatically, achieving high automation while masking the underlying complexity from the user

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system creates synthetic input-output examples that copy and generalize from user-provided samples. These synthetic copies are used to train and validate the transformation program, enabling automation without requiring users to understand programming concepts

Inventive Principle:
Principle #26Copying

3Reliability

If comprehensive program generation is performed without constraints, then solution accuracy and completeness improve, but processing time and computational resources increase significantly

Engineering Contradiction:
Improveprogram correctnessVSAvoidprocessing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs partial program generation by synthesizing programs incrementally with increasing complexity constraints. It starts with simple transformations and progressively adds complexity only when needed, achieving sufficient correctness without exhaustive search, thus reducing processing time while maintaining adequate reliability

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

The system performs preliminary synthesis using constrained program generation with synthetic examples before final validation. This preliminary action filters out incorrect programs early, ensuring reliability in the final output while minimizing total processing time through progressive refinement

Inventive Principle:
Principle #10Preliminary action

4Measurement precision

If intersection operation is performed on large sets of subprograms, then accurate program grouping is achieved, but computational complexity and processing time increase

Engineering Contradiction:
Improveprogram grouping accuracyVSAvoidcomputational complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The system segments the large set of subprograms into smaller groups based on structural characteristics and compatibility. By dividing the intersection operation into manageable segments rather than computing all pairwise intersections at once, it achieves accurate grouping while reducing computational complexity through divide-and-conquer strategy

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9552335B2Expedited techniques for generating string manipulation programs
Publication Date: 2017.01.24 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9552335B2 patent drawing
  • US9552335B2 patent drawing
  • US9552335B2 patent drawing

AI summary

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. According to another aspect, the program creation system ranks programs (which are created based on the results of the grouping operation) based on the presence of preferred features found in the programs.