Zulip Chat Archive
Stream: maths
Topic: Idiomatic notation for interval comparison
Geoffrey Irving (Sep 24 2024 at 20:40):
Say I have an Interval
type representing intervals of real numbers. I’d like to define a partial order on Interval
where < or <= are true if we know that the approximated real numbers satisfy that comparison. For example, we’d have [0,1] <= [1,2]
.
The problem is that then <= is not reflexive: it is not the case that [a,b] <= [a,b]
unless a = b
. As far as I can tell, this means I can’t register any instances for this order, even though it has some nice properties (transitivity, antisymmetry).
What’s the best way to proceed in terms of idiomatic use of mathlib? Should I just define < and <= and prove Interval.le_trans
and such without trying to link into the instance hierarchy?
Violeta Hernández (Sep 24 2024 at 21:30):
You could register the unbundled versions docs#IsTrans and docs#IsAntisymm
Violeta Hernández (Sep 24 2024 at 21:31):
Of course, these are significantly less useful.
Violeta Hernández (Sep 24 2024 at 21:31):
A simpler idea might be to just make the relation reflexive, and prove theorems about x ≤ y
with the hypothesis x ≠ y
whenever needed.
Violeta Hernández (Sep 24 2024 at 21:32):
So, x < y
Geoffrey Irving (Sep 24 2024 at 21:51):
Yep, both of those make sense. Though it feels like they’re less good than Interval.le_trans
, alas, so I may just do the non-instance thing.
Eric Wieser (Sep 24 2024 at 22:16):
You should definitely do the instance thing, but also having the non-instance lemmas for convenience is fine too
Last updated: May 02 2025 at 03:31 UTC