Indian Institute of Science, Bangalore
https://github.com/siddhartha-gadgil/LeanAidePrime versus IsPrime.Aesop tactic.
[{"role": "system",
"content": "You are a coding assistant who translates from natural language to Lean Theorem Prover code following examples. Follow EXACTLY the examples given."},
{"role": "user",
"content": "If a vector space has a finite basis, then it is finite-dimensional. "},
{"role": "assistant",
"content": "∀ {K : Type u} {V : Type v} [inst : DivisionRing K] [inst_1 :
AddCommGroup V] [inst_2 : Module K V] {ι : Type w}\n [inst_3 : Finite ι], Basis ι
K V → FiniteDimensional K V"},
...
{"role": "user",
"content": "If a vector space has dimension ‘2‘ then it is finite dimensional."}]
theorem: ∀ {K : Type u} {V : Type v}
[inst : DivisionRing K] [inst_1 : AddCommGroup V]
[inst_2 : Module K V],
Module.rank K V = 2 → FiniteDimensional K V
Larger-scale Formalization
Natural language reaoning
flowchart LR
P[(Problem)] --> reasoning[Reasoning by LLM]
reasoning --> pf[(Theorem and Proof)];
L[(Literature)] --> pf;
ans[(Notes/Answers)] --> ocr[OCR and formatting];
ocr --> pf;
pf --> |LLM|struct[(Structured JSON text)];
struct --> form[Autoformalization];
form --> lean[(Lean code)];
lean --> elab{Elaborate};
elab --> |Success|done((Done));
elab --> |Error|error((Fix error));
elab --> |Sorries|sorry((Fix Sorry));
sorry --> |Gap|P;
error --> |Details|pf;
error --> |Try again|form;
type field as "definition", "theorem", "assumption",
"assertion" etc.
have tactics.Aesop search tactic
with appropriate configuration; including "known results" and fallback to sorry.