## Stream: lean4

### Topic: structured tracing

#### Lukas Stevens (Feb 03 2021 at 20:39):

Where can I find information about the structured tracing that lean4 has? Are there any suggestive examples? I am especially interested in how one could capture the tree-like structure of a simp trace.

#### Daniel Selsam (Feb 03 2021 at 20:49):

The TraceState is in CoreM https://github.com/leanprover/lean4/blob/master/src/Lean/CoreM.lean#L31 and consists of the following data: https://github.com/leanprover/lean4/blob/master/src/Lean/Util/Trace.lean#L14-L22

#### Mario Carneiro (Feb 03 2021 at 20:50):

where's the tree structure?

#### Daniel Selsam (Feb 03 2021 at 20:50):

which tree structure are you referring to?

#### Sebastian Ullrich (Feb 03 2021 at 20:52):

https://github.com/leanprover/lean4/blob/master/src/Lean/Util/Trace.lean#L89-L95

#### Mario Carneiro (Feb 03 2021 at 20:54):

Perhaps this is a better place to point to then: https://github.com/leanprover/lean4/blob/master/src/Lean/Message.lean#L38-L57

#### Mario Carneiro (Feb 03 2021 at 20:54):

that last constructor looks especially tree-like

#### Daniel Selsam (Feb 03 2021 at 21:00):

There is also a separate, static, implicit tree structure given by the hierarchical trace names, e.g.

[Meta.Tactic.simp] no lemmas found for post-rewriting x
[Meta.Tactic.simp.rewrite] <unknown>:1000, q x ==> True
[Meta.Tactic.simp] no lemmas found for pre-rewriting True


#### Wojciech Nawrocki (Feb 03 2021 at 23:31):

And there is also a tree of elaboration information: link . It is constructed similarly to the trace tree, but serves a somewhat different purpose

#### Lukas Stevens (Feb 04 2021 at 10:39):

Thanks a lot! Are there any examples on how to use that datatype?

#### Wojciech Nawrocki (Feb 04 2021 at 20:07):

I suppose the main consumer of structured traces is the format function. A MessageData is converted to a Format expressing how it should be displayed as a String at some later point. Note that MessageData has constructors lifted from Format but that it includes semantic information as well.

Last updated: May 18 2021 at 23:14 UTC