fix: cbv handling of ite/dite/decide#12816
Conversation
This PR adds a test documenting the issue where `cbv` picks up `Classical.propDecidable` when re-synthesizing `Decidable` instances after unfolding propositions, and sketches approaches for fixing it. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
!bench |
|
Benchmark results for 15c333b against fe1ad52 are in! @wkrozowski
No significant changes detected. |
|
!bench |
|
Benchmark results for 95146e1 against fe1ad52 are in! @wkrozowski
Large changes (2🟥)
Small changes (1✅)
|
|
!bench |
|
Benchmark results for a3adbf7 against fe1ad52 are in! @wkrozowski
Small changes (1🟥)
|
|
!bench |
|
Benchmark results for a0efe1a against fe1ad52 are in! @wkrozowski
Small changes (1🟥)
|
|
Mathlib CI status (docs):
|
|
Reference manual CI status:
|
|
!bench |
|
Benchmark results for 314bfad against a165292 are in! @wkrozowski
Small changes (1🟥)
|
|
!bench |
|
Benchmark results for f9418ee against a165292 are in! @wkrozowski
Small changes (2✅, 1🟥)
|
|
!bench |
|
Benchmark results for c46d6cc against a165292 are in! @wkrozowski
Small changes (2✅, 1🟥)
|
|
!bench |
|
Benchmark results for 3f831d2 against a165292 are in! @wkrozowski
Small changes (2✅, 1🟥)
|
|
!bench |
|
Benchmark results for 3a5f5a0 against a165292 are in! @wkrozowski
Large changes (1🟥)
Small changes (2✅, 2🟥)
|
cbv from picking up classical Decidable instancescbv handling of ite/dite/decide
|
!bench |
|
Benchmark results for 699fa8e against a165292 are in! @wkrozowski
Small changes (2✅, 2🟥)
|
699fa8e to
3a5f5a0
Compare
|
!bench |
|
Benchmark results for 3a5f5a0 against a165292 are in! @wkrozowski
Large changes (1🟥)
Small changes (2✅, 2🟥)
|
This PR solves three distinct issues with the handling of
ite/dite,decide.We prevent the simprocs from picking up
noncomputable,Classicalinstances, such asClassical.propDecidable, when simplifying the proposition inite/dite/decide.We fix a type mismatch occurring when the condition/proposition is unchanged but the
Decidableinstance is simplified.If we rewrite the proposition from
ctoc'and the evaluation of the original instanceDecidable cgets stuck we try fallback path of of obtainingDecidable c'instance and evaluating it. This matters when the instance is evaluated viacbv_evallemmas.