Zulip Chat Archive

Stream: general

Topic: pp.unambiguous


Johan Commelin (May 30 2020 at 14:23):

How hard would it be to write a tactic that takes an expr and prints a string that is close to the standard pretty printed version, but ready for copy-pasting into the current editor window?

Jason Rute (May 30 2020 at 14:26):

Relevant: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/pp.2Eall.20with.20more.20.40

Johan Commelin (May 30 2020 at 14:29):

Typical examples are ambiguous 0 that need a type ascription

Mario Carneiro (May 30 2020 at 14:29):

it needs more than a type ascription in general

Johan Commelin (May 30 2020 at 14:29):

why?

Mario Carneiro (May 30 2020 at 14:30):

I would start from pp.all as a baseline

Mario Carneiro (May 30 2020 at 14:31):

You can try to take pp.all output and progressively try to remove @ signs while ensuring that the elaborator still produces the right term, but this is pretty expensive since you have to typecheck hundreds of variations of the term

Mario Carneiro (May 30 2020 at 14:32):

Johan Commelin said:

why?

You could have a zero with a non-canonical instance, or one that was provided manually and can't be found by instance search

Johan Commelin (May 30 2020 at 14:39):

Mario Carneiro said:

You can try to take pp.all output and progressively try to remove @ signs while ensuring that the elaborator still produces the right term, but this is pretty expensive since you have to typecheck hundreds of variations of the term

Expensive is fine if it's only used occasionally, say in extract_goal.

Jason Rute (May 30 2020 at 14:39):

I believe Lean 4 is making sure the pp.all round trip succeeds. See https://github.com/leanprover/lean4/blob/50fc9610379243e419f75de7e281cbeb61287324/src/Lean/Delaborator.lean

Jason Rute (May 30 2020 at 14:41):

Sorry, I misunderstood. You want something closer to standard pp.

Mario Carneiro (May 30 2020 at 14:42):

It's not hard to make something like pp.all that round-trips. I am pretty sure the "delaborator" is doing what I outlined above, trying to get closer to an unmarked term

Mario Carneiro (May 30 2020 at 14:47):

I think if you design it well you can get delaboration to be "only" as expensive as elaboration. (Still pretty expensive for something that is doing printing...)


Last updated: Dec 20 2023 at 11:08 UTC