IP Library › Granted Patent US 12,561,133
Granted Patent B2
US 12,561,133 · App. 18/318,638 · Granted Feb 24, 2026

Coding interactively without having to restart a procedure

Inventors: Binny Sher Gill (San Jose, CA); Aaron Dean Brown (Wausau, WI); Ziv Kennan (Berkeley, CA)
Assignee: Kognitos, Inc.
G06F8/72G06F8/36G06F8/71
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,561,133
App. No.
18/318,638
Filed
May 16, 2023
Granted
Feb 24, 2026
Kind
B2
Art Unit
2191
USPC
717/106
Abstract

Disclosed is an improved approach to implement software programming which allows for interactive coding without having to restart a procedure. This is implemented using a combination of an interpreter which allows for modification of code during runtime using an interactive console and a versioned memory system used by the interpreter to roll-back memory to a previous state of execution.

Claims (35)

1 . A method, comprising:

running a sequence of steps for a procedure within a software program, wherein running the sequence of steps creates a set of data in computer memory;

displaying the sequence of steps within a user interface and receiving an instruction from a user to undo a step from the sequence of steps;

undoing the step within the sequence of steps, wherein a natural language interpreter ignores a version of a value created by the step that was undone; and

generating a result from the procedure within the software program without restarting the sequence of steps, wherein the procedure continues executing steps forward from a location in the sequence of step from which the step was undone.

2 . The method of claim 1 , wherein the computer memory is implemented as a versioned memory system, and the versioned memory system comprises a vertex chain corresponding to a list having a temporal order for a name and a corresponding value for the name.

3 . The method of claim 2 , wherein the vertex chain maintains a historical record of values for a given name.

4 . The method of claim 2 , wherein a context and a specific step are maintained for a value.

5 . The method of claim 4 , wherein the value is scratched if a corresponding step is undone.

6 . The method of claim 1 , wherein the computer memory is rolled back to a previous state of execution.

7 . The method of claim 1 , wherein a user interface is provided that identifies one or more commands that have been executed which are selectable to be undone, and where selection of a command to be undone causes a version of a value for the command to be ignored.

8 . The method of claim 1 , wherein the software program corresponds to a natural language program.

9 . A non-transitory computer program product embodied on a computer readable medium, the computer readable medium having stored thereon a sequence of instructions which, when executed by a processor, performs:

running a sequence of steps for a procedure within a software program, wherein running the sequence of steps creates a set of data in computer memory;

displaying the sequence of steps within a user interface and receiving an instruction from a user to undo a step from the sequence of steps;

undoing the step within the sequence of steps, wherein a natural language interpreter ignores a version of a value created by the step that was undone; and

generating a result from the procedure within the software program without restarting the sequence of steps, wherein the procedure continues executing steps forward from a location in the sequence of step from which the step was undone.

10 . The computer program product of claim 9 , wherein the computer memory is implemented as a versioned memory system, and the versioned memory system comprises a vertex chain corresponding to a list having a temporal order for a name and a corresponding value for the name.

11 . The computer program product of claim 10 , wherein the vertex chain maintains a historical record of values for a given name.

12 . The computer program product of claim 10 , wherein a context and a specific step are maintained for a value.

13 . The computer program product of claim 12 , wherein the value is scratched if a corresponding step is undone.

14 . The computer program product of claim 9 , wherein the computer memory is rolled back to a previous state of execution.

15 . The computer program product of claim 9 , wherein a user interface is provided that identifies one or more commands that have been executed which are selectable to be undone, and where selection of a command to be undone causes a version of a value for the command to be ignored.

16 . The computer program product of claim 9 , wherein the software program corresponds to a natural language program.

17 . A system, comprising:

a processor;

a memory for holding programmable code; and

wherein the programmable code includes instructions for: running a sequence of steps for a procedure within a software program, wherein running the sequence of steps creates a set of data in computer memory; displaying the sequence of steps within a user interface and receiving an instruction from a user to undo a step from the sequence of steps; undoing the step within the sequence of steps, wherein a natural language interpreter ignores a version of a value created by the step that was undone; and generating a result from the procedure within the software program without restarting the sequence of steps, wherein the procedure continues executing steps forward from a location in the sequence of step from which the step was undone.

18 . The system of claim 17 , wherein the computer memory is implemented as a versioned memory system, and the versioned memory system comprises a vertex chain corresponding to a list having a temporal order for a name and a corresponding value for the name.

19 . The system of claim 18 , wherein the vertex chain maintains a historical record of values for a given name.

20 . The system of claim 18 , wherein a context and a specific step are maintained for a value.

21 . The system of claim 20 , wherein the value is scratched if a corresponding step is undone.

22 . The system of claim 17 , wherein the computer memory is rolled back to a previous state of execution.

23 . The system of claim 17 , wherein a user interface is provided that identifies one or more commands that have been executed which are selectable to be undone, and where selection of a command to be undone causes a version of a value for the command to be ignored.

24 . The system of claim 17 , wherein the software program corresponds to a natural language program.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 5, 2025
From: GILL, BINNY SHER; BROWN, AARON DEAN; KENNAN, ZIV
To: KOGNITOS, INC.
Reel/Frame 070122/0247 →
Continuity (2)
Provisional Application 63364880 · May 17, 2022
Related Publication 20230376309A1 · Nov 23, 2023
References Cited (45)
US 6314559B1 · Sollich · 2001 [cited by applicant]
US 8271955B1 · Lindahl · 2012 [cited by examiner]
US 9063742B1 · Bienkowski · 2015 [cited by examiner]
US 9372846B1 · Perkov · 2016 [cited by applicant]
US 11113186B1 · Hussain et al. · 2021 [cited by applicant]
US 11791037B1 · Shrum et al. · 2023 [cited by applicant]
US 20100162204A1 · Baumann · 2010 [cited by examiner]
US 20130097431A1 · Hriljac · 2013 [cited by examiner]
US 20140089265A1 · Talagala · 2014 [cited by examiner]
US 20170329582A1 · Steven et al. · 2017 [cited by applicant]
US 20170332295A1 · Sunay · 2017 [cited by applicant]
US 20180084338A1 · Bostick et al. · 2018 [cited by applicant]
US 20200111012A1 · Wan · 2020 [cited by examiner]
US 20200151644A1 · Braham · 2020 [cited by examiner]
US 20220156466A1 · Gill · 2022 [cited by examiner]
US 20230297448A1 · Doerr et al. · 2023 [cited by applicant]
US 20240046318A1 · Muriqi · 2024 [cited by applicant]
US 20250139388A1 · Agrawal · 2025 [cited by examiner]
CN 111480348 · 2020 [cited by applicant]
KR 20160099575 · 2016 [cited by applicant]
TW 581977 · 2004 [cited by applicant]
WO WO2018038385 · 2018 [cited by applicant]
WO WO2024021952 · 2024 [cited by applicant]
Zhao, “Supporting Process Undo and Redo in Software Engineering Decision Making”, 2013, ACM (Year: 2013). [cited by examiner]
Yampolskiy, R., “Analysis of Types of Self-Improving Software,” Computer Engineering and Computer Science Speed School of Engineering University of Louisville, USA, dated May 15, 2016. [cited by applicant]
Gulwani, S., et al., “NLyze: Interactive Programming by Natural Language for SpreadSheet Data Analysis and Manipulation,” Proceedings of the 2014 ACM SIGMOD International Conference on Management of Data, Published Jun.… [cited by applicant]
Becker, K., “Using Artificial Intelligence to Write Self-Modifying/Improving Programs,” Primary Objects, dated Jan. 27, 2013. [cited by applicant]
Reynolds, M., “AI learns to write its own code by stealing from other programs,” dated Feb. 22, 2017, URL: https://www.newscientist.com/article/mg23331144-500-ai-learns-to-write-its-own-code-by-stealing-from-other-progr… [cited by applicant]
“Translating Natural Language to Code,” transifex, dated Apr. 1, 2013, URL: https://www.transifex.com/blog/2013/translate-natural-language-to-code/. [cited by applicant]
Wiggers, K., “OpenAI launches Codex, an API for translating natural language into code,” The Machine, dated Aug. 10, 2021. [cited by applicant]
Rahit, K., et al., “Machine Translation from Natural Language to Code using Long-Short Term Memory,” dated Oct. 2019. [cited by applicant]
Lardinois, F., “Microsoft uses GPT-3 to let you code in natural language,” TechCrunch, dated May 25, 2021. [cited by applicant]
Liu, X., et al., “From Natural Language to Programming Language,” IGI Global, copyright 2018. [cited by applicant]
Clarke, L., et al., “Continuous Self-Evaluation for the Self-Improvement of Software,” University of Massachusetts, date found via Google as Jul. 13, 2021. [cited by applicant]
Nair, H., “Building Alexa skills in Python, for absolute beginners,” chatbotslife, dated Mar. 9, 2019. [cited by applicant]
Gonfalonieri, A. “How Amazon Alexa works? Your guide to Natural Language Processing (AI),” Towards Data Science, dated Nov. 21, 2018. [cited by applicant]
Young, J., “Amazon Echo: Create a Custom Voice Command,” Smart Home Focus, dated Nov. 12, 2020. [cited by applicant]
A.Arusoaie and D. I. Vicol, “Automating Abstract Syntax Tree Construction for Context Free Grammars,” 2012 14th International u Symposium on Symbolic and Numeric Algorithms for Scientific Computing, Timisoara, Romania, … [cited by applicant]
G. Fischer, J. Lusiardi and J. Wolff von Gudenberg, “Abstract Syntax Trees—and their Role in Model Driven Software Development, V” International Conference on Software Engineering Advances (ICSEA 2007), Cap Esterel, Fra… [cited by applicant]
Non-Final Office Action dated Nov. 16, 2023 for U.S. Appl. No. 17/452,047. [cited by applicant]
Notice of Allowance dated Aug. 12, 2025 for U.S. Appl. No. 18/649,946. [cited by applicant]
Notice of Allowance dated Mar. 19, 2024, for U.S. Appl. No. 17/452,047. [cited by applicant]
Notice of Allowance dated Apr. 30, 2025 for U.S. Appl. No. 18/649,946. [cited by applicant]
P, Pannuto, W. Wang, P. Dutta and B. Campbell, ““A Modular and Adaptive Architecture for Building Applications with Connected Devices,”” 2018 IEEE International Conference on Industrial Internet (ICII), Seattle, WA, USA… [cited by applicant]
Notice of Allowance dated Jan. 13, 2026, for U.S. Appl. No. 18/649,946. [cited by applicant]