String Manipulation Program Synthesis Engine
Find Innovative SolutionsGenerate 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
Engineering 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
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
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
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
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
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
3Reliability
If comprehensive program generation is performed without constraints, then solution accuracy and completeness improve, but processing time and computational resources increase significantly
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
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
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
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
Data Source
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.


