@@ -153,7 +153,7 @@ end EqcFilter
153153def ppEqc (eqc : List Expr) (children : Array MessageData := #[]) : MessageData :=
154154 .trace { cls := `eqc } (.group ("{" ++ (MessageData.joinSep (eqc.map toMessageData) ("," ++ Format.line)) ++ "}" )) children
155155
156- private def ppEqcs : M Unit := do
156+ private def ppEqcs (collapsedProps := true ) : M Unit := do
157157 let mut trueEqc? : Option MessageData := none
158158 let mut falseEqc? : Option MessageData := none
159159 let mut regularEqcs : Array MessageData := #[]
@@ -163,11 +163,11 @@ private def ppEqcs : M Unit := do
163163 if Option.isSome <| eqc.find? (·.isTrue) then
164164 let eqc := eqc.filter fun e => !e.isTrue
165165 unless eqc.isEmpty do
166- trueEqc? := ppExprArray `eqc "True propositions" eqc.toArray `prop
166+ trueEqc? := ppExprArray `eqc "True propositions" eqc.toArray `prop (collapsed := collapsedProps)
167167 else if Option.isSome <| eqc.find? (·.isFalse) then
168168 let eqc := eqc.filter fun e => !e.isFalse
169169 unless eqc.isEmpty do
170- falseEqc? := ppExprArray `eqc "False propositions" eqc.toArray `prop
170+ falseEqc? := ppExprArray `eqc "False propositions" eqc.toArray `prop (collapsed := collapsedProps)
171171 else if let e :: _ :: _ := eqc then
172172 -- We may want to add a flag to pretty print equivalence classes of nested proofs
173173 unless (← isProof e) do
@@ -270,18 +270,15 @@ private def ppCasesTrace : M Unit := do
270270 ]
271271 pushMsg <| .trace { cls := `cases } "Case analyses" msgs
272272
273- def goalToMessageData (goal : Goal) (config : Grind.Config) : MetaM MessageData := goal.mvarId.withContext do
274- if config.verbose then
275- let (_, m) ← go goal |>.run #[]
276- let gm := MessageData.trace { cls := `grind, collapsed := false } "Goal diagnostics" m
277- let r := m!"{.ofGoal goal.mvarId}\n {gm}"
278- addMessageContextFull r
279- else
280- return .ofGoal goal.mvarId
273+ def goalDiagToMessageData (goal : Goal) (config : Grind.Config) (header := "Goal diagnostics" ) (collapsedMain := true )
274+ : MetaM MessageData := do
275+ let (_, m) ← go goal |>.run #[]
276+ let gm := MessageData.trace { cls := `grind, collapsed := false } header m
277+ return gm
281278where
282279 go : M Unit := do
283- pushMsg <| ppExprArray `facts "Asserted facts" goal.facts.toArray `prop
284- ppEqcs
280+ pushMsg <| ppExprArray `facts "Asserted facts" goal.facts.toArray `prop (collapsed := collapsedMain)
281+ ppEqcs (collapsedProps := collapsedMain)
285282 ppCasesTrace
286283 ppActiveTheoremPatterns
287284 ppOffset
@@ -291,4 +288,12 @@ where
291288 ppAC
292289 ppThresholds config
293290
291+ def goalToMessageData (goal : Goal) (config : Grind.Config) : MetaM MessageData := goal.withContext do
292+ if config.verbose then
293+ let gm ← goalDiagToMessageData goal config
294+ let r := m!"{.ofGoal goal.mvarId}\n {gm}"
295+ addMessageContextFull r
296+ else
297+ return .ofGoal goal.mvarId
298+
294299end Lean.Meta.Grind
0 commit comments