Skip to content

[ refactor ] Data.Fin.Properties of decidable equality, plus knock-ons #2740

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 19 commits into
base: master
Choose a base branch
from

Conversation

jamesmckinna
Copy link
Contributor

@jamesmckinna jamesmckinna commented Jun 21, 2025

This PR supersedes the knock-on changes for Permutation in #2738 and adds some new lemmas about transpose which simplify the dependency graph. The contribution can be seen as a belated corollary to the changes introduced in #645 / #1732 .

Downstream, we might want to revisit the dependency graph now between

  • Relation.Nullary.Decidable
  • Axiom.UniquenessOfIdentityProofs
  • Relation.Binary.PropositionalEquality

in putting these pieces together?

Outstanding (naming) issue: I followed the existing Data.Nat.Properties.≟-diag convention in Data.Fin.Properties, and then backported the refl instantiation of this to Data.Nat.Properties.≟-diag-refl... but it occurs to me that it's hard to imagine instances of ≟-diag which would use a general equality, and even if they were to, the use of diag ought (?) to be a codeword for a repeated argument/reflexive equality? I just couldn't face the deprecation headache though... so a v3.0 downstream breaking change might be in order?

@jamesmckinna jamesmckinna linked an issue Jun 24, 2025 that may be closed by this pull request
@jamesmckinna
Copy link
Contributor Author

jamesmckinna commented Jun 26, 2025

In the absence of a review yet, I'll lift out the bug fixes as a separate PR, as per @JacquesCarette 's comment on #2743

@@ -110,6 +110,12 @@ m ≟ n = map′ (≡ᵇ⇒≡ m n) (≡⇒≡ᵇ m n) (T? (m ≡ᵇ n))
≟-diag : (eq : m ≡ n) (m ≟ n) ≡ yes eq
≟-diag = ≡-≟-identity _≟_

≟-diag-refl : n (n ≟ n) ≡ yes refl
≟-diag-refl _ = ≟-diag refl
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one, on the other hand, seems to fail the Fairbairn test.

Copy link
Contributor Author

@jamesmckinna jamesmckinna Jun 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, the reflexive case us what I use for Fin, and I dislike having the APIs for Nat and Fin diverging... what is really prefer would be to only have diag refer to the refl version but... legacy names!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants