Skip to content

feat: pretty print props with only if domain is prop, add pp.foralls#7812

Merged
kmill merged 1 commit intoleanprover:masterfrom
kmill:kmill_prop_forall_pp
Apr 4, 2025
Merged

feat: pretty print props with only if domain is prop, add pp.foralls#7812
kmill merged 1 commit intoleanprover:masterfrom
kmill:kmill_prop_forall_pp

Conversation

@kmill
Copy link
Copy Markdown
Collaborator

@kmill kmill commented Apr 4, 2025

This PR modifies the pretty printing of pi types. Now will be preferred over for propositions if the domain is not a proposition. For example, ∀ (n : Nat), True pretty prints as ∀ (n : Nat), True rather than as Nat → True. There is also now an option pp.foralls (default true) that when false disables using at all, for pedagogical purposes. This PR also adjusts instance implicit binder pretty printing — nondependent pi types won't show the instance binder name. Closes #1834.

The linked RFC also suggests using _ for binder names in case of non-dependance. We're tabling that idea. Potentially it is useful for hygienic names; this could improve how Nat → True pretty prints as ∀ (a : Nat), True, with this a that's chosen by implication notation elaboration. Relatedly, this PR exposes even further the issue where binder names are reused in a confusing way. Consider: Nat → Nat → (a : Nat) → a = a pretty prints as ∀ (a a a : Nat), a = a.

…alls`

This PR modifies the pretty printing of pi types. Now `∀` will be preferred over `→` for propositions if the domain is not a proposition. For example, `∀ (n : Nat), True` pretty prints as itself rather than as `Nat → True`. There is also now an option `pp.foralls` (default true) that when false disables using `∀` at all. This PR also adjusts instance implicit binder pretty printing; nondependent pi types won't show the instance binder name. Closes leanprover#1834.
@kmill kmill added the changelog-pp Pretty printing label Apr 4, 2025
@github-actions github-actions bot added the toolchain-available A toolchain is available for this PR, at leanprover/lean4-pr-releases:pr-release-NNNN label Apr 4, 2025
ghost pushed a commit to leanprover-community/batteries that referenced this pull request Apr 4, 2025
ghost pushed a commit to leanprover-community/mathlib4 that referenced this pull request Apr 4, 2025
@ghost ghost added the breaks-mathlib This is not necessarily a blocker for merging: but there needs to be a plan label Apr 4, 2025
@ghost
Copy link
Copy Markdown

ghost commented Apr 4, 2025

Mathlib CI status (docs):

@ghost ghost added builds-mathlib CI has verified that Mathlib builds against this PR and removed breaks-mathlib This is not necessarily a blocker for merging: but there needs to be a plan labels Apr 4, 2025
@kmill kmill added this pull request to the merge queue Apr 4, 2025
Merged via the queue into leanprover:master with commit 407a59d Apr 4, 2025
44 checks passed
kmill added a commit to leanprover-community/mathlib4 that referenced this pull request Apr 19, 2025
* fixes

* fix test

* fix

* chore: adaptations for leanprover/lean4#7797

* stricter rfl check

* fix merge

* Trigger CI for leanprover/lean4#7797

* Trigger CI for leanprover/lean4#7797

* Trigger CI for leanprover/lean4#7797

* inverse construction

* Update lean-toolchain for testing leanprover/lean4#7791

* lake update

* Fix

* Fix

* Fix

* chore: bump to nightly-2025-04-03

* more fixes

* merge lean-pr-testing-6325

* bump proofwidgets

* Update lean-toolchain for testing leanprover/lean4#7812

* shake

* fix shake

* fix tests

* import mathlib.init

* Update lean-toolchain for testing leanprover/lean4#7816

* Trigger CI for leanprover/lean4#7816

* Update lean-toolchain for testing leanprover/lean4#7802

* Fix

* fixes

* Fix (pending upstream changes)

* Trigger CI for leanprover/lean4#7802

* fix

* chore: bump to nightly-2025-04-04

* Fix

* Fix

* Fix

* Fix

* Fix

* Fix

* Update lean-toolchain for testing leanprover/lean4#7818

* Fix

* Fix

* Fix

* Merge master into nightly-testing

* Fix

* Fix comments

* fixes

* Trigger CI for leanprover/lean4#7816

* fix

* fix

* missing doc-string?

* chore: bump to nightly-2025-04-05

* chore: bump to nightly-2025-04-06

* move Batteries to nightly-testing

* lake update

* lint

* fix

* chore: bump to nightly-2025-04-07

* sprinkle noncomputable

* fix: relativize file paths

fix for leanprover/lean4#7822

* chore: reset cache

* chore: bump to nightly-2025-04-07

* shake

* fix: relativize more

* Update lean-toolchain for testing leanprover/lean4#7856

* Update lean-toolchain for testing leanprover/lean4#7851

* Fix

* Fix

* Fix

* Fix

* chore: bump to nightly-2025-04-08

* Update lean-toolchain for testing leanprover/lean4#7870

* Trigger CI for leanprover/lean4#7870

* Trigger CI for leanprover/lean4#7870

* Trigger CI for leanprover/lean4#7870

* wip

* Trigger CI for leanprover/lean4#7870

* .

* chore: bump to nightly-2025-04-09

* Trigger CI for leanprover/lean4#7870

* .

* bump

* lake update

* fixes for leanprover/lean4#7873

* fixes

* deprecations

* chore: bump to nightly-2025-04-10

* chore: `Option.zipWith` -> `Option.merge`

* lake update

* toolchain

* fix

* fix

* Update lean-toolchain for testing leanprover/lean4#7897

* Trigger CI for leanprover/lean4#7897

* fix

* lake update and fix

* Fix

* Fix

* Trigger CI for leanprover/lean4#7897

* fix merge

* chore: adaptations for nightly-2025-04-10

* chore: bump to nightly-2025-04-14

* fix

* .

* annotate changed goal state

* fixes (adaptation notes)

* cleanup imports

* cleanup

* Update lean-toolchain for testing leanprover/lean4#7933

* Fix

* Fix

* Update lean-toolchain for testing leanprover/lean4#7975

* remove adaptation notes

* chore: bump to nightly-2025-04-16

---------

Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com>
Co-authored-by: Kim Morrison <kim@tqft.net>
Co-authored-by: Markus Himmel <markus@lean-fro.org>
Co-authored-by: Rob23oba <robin.arnez@web.de>
Co-authored-by: Mario Carneiro <di.gama@gmail.com>
Co-authored-by: Johan Commelin <johan@commelin.net>
Co-authored-by: github-actions <github-actions@github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

builds-mathlib CI has verified that Mathlib builds against this PR changelog-pp Pretty printing toolchain-available A toolchain is available for this PR, at leanprover/lean4-pr-releases:pr-release-NNNN

Projects

None yet

Development

Successfully merging this pull request may close these issues.

RFC: pp using forall notation for all pi types from a Type to a Prop

1 participant