chore: Version 0.3 #136

Open
aniva wants to merge 487 commits from dev into main
4 changed files with 48 additions and 23 deletions
Showing only changes of commit 2f732a7f20 - Show all commits

View File

@ -138,22 +138,35 @@ def goalSerialize (state: GoalState) (options: @&Protocol.Options): CoreM (Array
runMetaM <| state.serializeGoals (parent := .none) options runMetaM <| state.serializeGoals (parent := .none) options
@[export pantograph_goal_print_m] @[export pantograph_goal_print_m]
def goalPrint (state: GoalState) (extraMVars : Array String) (options: @&Protocol.Options): CoreM Protocol.GoalPrintResult := def goalPrint (state: GoalState) (rootExpr: Bool) (parentExpr: Bool) (goals: Bool) (extraMVars : Array String) (options: @&Protocol.Options)
runMetaM do : CoreM Protocol.GoalPrintResult := runMetaM do
state.restoreMetaM state.restoreMetaM
return {
root? := ← state.rootExpr?.mapM λ expr => let root? ← if rootExpr then
state.withRootContext do state.rootExpr?.mapM λ expr => state.withRootContext do
serializeExpression options (← instantiateAll expr), serializeExpression options (← instantiateAll expr)
parent? := ← state.parentExpr?.mapM λ expr => else
state.withParentContext do pure .none
serializeExpression options (← instantiateAll expr), let parent? ← if parentExpr then
extraMVars := ← extraMVars.mapM λ mvarId => do state.parentExpr?.mapM λ expr => state.withParentContext do
serializeExpression options (← instantiateAll expr)
else
pure .none
let goals ← if goals then
goalSerialize state options
else
pure #[]
let extraMVars ← extraMVars.mapM λ mvarId => do
let mvarId: MVarId := { name := mvarId.toName } let mvarId: MVarId := { name := mvarId.toName }
let .some _ ← mvarId.findDecl? | return {} let .some _ ← mvarId.findDecl? | return {}
state.withContext mvarId do state.withContext mvarId do
let .some expr ← getExprMVarAssignment? mvarId | return {} let .some expr ← getExprMVarAssignment? mvarId | return {}
serializeExpression options (← instantiateAll expr), serializeExpression options (← instantiateAll expr)
return {
root?,
parent?,
goals,
extraMVars,
} }
@[export pantograph_goal_tactic_m] @[export pantograph_goal_tactic_m]

View File

@ -271,15 +271,22 @@ structure GoalDeleteResult where
structure GoalPrint where structure GoalPrint where
stateId: Nat stateId: Nat
-- Print values of extra mvars
-- Print root?
rootExpr?: Option Bool := .some False
-- Print the parent expr?
parentExpr?: Option Bool := .some False
-- Print goals?
goals?: Option Bool := .some False
-- Print values of extra mvars?
extraMVars?: Option (Array String) := .none extraMVars?: Option (Array String) := .none
deriving Lean.FromJson deriving Lean.FromJson
structure GoalPrintResult where structure GoalPrintResult where
-- The root expression -- The root expression
root?: Option Expression := .none root?: Option Expression := .none
-- The filling expression of the parent goal -- The filling expression of the parent goal
parent?: Option Expression parent?: Option Expression := .none
goals: Array Goal := #[]
extraMVars: Array Expression := #[] extraMVars: Array Expression := #[]
deriving Lean.ToJson deriving Lean.ToJson

View File

@ -223,8 +223,13 @@ def execute (command: Protocol.Command): MainM Lean.Json := do
let state ← get let state ← get
let .some goalState := state.goalStates[args.stateId]? | let .some goalState := state.goalStates[args.stateId]? |
return .error $ errorIndex s!"Invalid state index {args.stateId}" return .error $ errorIndex s!"Invalid state index {args.stateId}"
let extraMVars := args.extraMVars?.getD #[] let result ← runMetaInMainM <| goalPrint
let result ← runMetaInMainM <| goalPrint goalState extraMVars state.options goalState
(rootExpr := args.rootExpr?.getD False)
(parentExpr := args.parentExpr?.getD False)
(goals := args.goals?.getD False)
(extraMVars := args.extraMVars?.getD #[])
(options := state.options)
return .ok result return .ok result
goal_save (args: Protocol.GoalSave): MainM (CR Protocol.GoalSaveResult) := do goal_save (args: Protocol.GoalSave): MainM (CR Protocol.GoalSaveResult) := do
let state ← get let state ← get

View File

@ -72,7 +72,7 @@ def test_tactic : Test :=
({ stateId := 0, root := "_uniq.9" }: Protocol.GoalStartResult), ({ stateId := 0, root := "_uniq.9" }: Protocol.GoalStartResult),
step "goal.tactic" [("stateId", .num 0), ("goalId", .num 0), ("tactic", .str "intro x")] step "goal.tactic" [("stateId", .num 0), ("goalId", .num 0), ("tactic", .str "intro x")]
({ nextStateId? := .some 1, goals? := #[goal1], }: Protocol.GoalTacticResult), ({ nextStateId? := .some 1, goals? := #[goal1], }: Protocol.GoalTacticResult),
step "goal.print" [("stateId", .num 1)] step "goal.print" [("stateId", .num 1), ("parentExpr", .bool true), ("rootExpr", .bool true)]
({ parent? := .some { pp? := .some "fun x => ?m.12 x" }, }: Protocol.GoalPrintResult), ({ parent? := .some { pp? := .some "fun x => ?m.12 x" }, }: Protocol.GoalPrintResult),
step "goal.tactic" [("stateId", .num 1), ("goalId", .num 0), ("tactic", .str "intro y")] step "goal.tactic" [("stateId", .num 1), ("goalId", .num 0), ("tactic", .str "intro y")]
({ nextStateId? := .some 2, goals? := #[goal2], }: Protocol.GoalTacticResult), ({ nextStateId? := .some 2, goals? := #[goal2], }: Protocol.GoalTacticResult),