Zulip Chat Archive

Stream: maths

Topic: Order reversing iso


Yakov Pechersky (Jan 08 2021 at 02:37):

Do we have a α ≃ order_dual α? Or the idea of a reversing order_iso?

Bryan Gin-ge Chen (Jan 08 2021 at 02:41):

docs#order_dual.to_dual has type α ≃ order_dual α.

Yakov Pechersky (Jan 08 2021 at 02:49):

But is there a proof that that takes \bot to \top?

Reid Barton (Jan 08 2021 at 02:49):

Probably rfl?

Yakov Pechersky (Jan 08 2021 at 03:12):

I guess my question is, how is it that the \bot portion of the following works, but not the \top? And am I just misusing order_dual here?

import data.fin
import order.order_dual

variable {n : }

open fin

@[simp] lemma bot_eq_zero : ( : fin (n + 1)) = 0 := rfl

@[simp] lemma top_eq_last : ( : fin (n + 1)) = last n := rfl

lemma dual_bot_eq_top {α : Type*} [bounded_lattice α] (x : α) (y : order_dual α)
  (hx : x = ) (hy : y = ) : order_dual.to_dual x = y :=
by { rw [hx, hy], refl }

/-- The isomorphism reversing the order on `fin n`. -/
def invert_iso : fin n  (fin n) := order_dual.to_dual

lemma invert_iso_zero : invert_iso (0 : fin (n + 1)) = last n :=
begin
  cases n,
  { refl },
  { rw invert_iso,
    rw dual_bot_eq_top,
    { exact bot_eq_zero },
    { symmetry,
      convert top_eq_last,
      sorry } }
end

Reid Barton (Jan 08 2021 at 03:26):

invert_iso is the identity so the lemma is false for n > 0

Reid Barton (Jan 08 2021 at 03:26):

of course most orders are not order isomorphic to their opposite orders

Reid Barton (Jan 08 2021 at 03:28):

order_dual.to_dual is just equiv.refl

Yakov Pechersky (Jan 08 2021 at 03:31):

Right, ok, makes sense. But since we have an order_iso, shouldn't we be able to use that to generate the reversing one? Or does that require an explicit construction?

Reid Barton (Jan 08 2021 at 03:33):

It needs a construction, it's entirely specific to fin

Reid Barton (Jan 08 2021 at 03:33):

or at least to finite total orders (which are all essentially fin)

Mario Carneiro (Jan 08 2021 at 03:37):

I don't think we have an order_iso on fin n

Mario Carneiro (Jan 08 2021 at 03:38):

I could imagine having a typeclass for symmetric orders, although I have no idea how important they are

Mario Carneiro (Jan 08 2021 at 03:40):

(also such an isomorphism is very often not unique even when it exists, as in int)

Yakov Pechersky (Jan 08 2021 at 05:07):

We have docs#fin.order_iso_unique

Yakov Pechersky (Jan 08 2021 at 05:07):

And of course, that order_iso is fin.cast rfl

Thomas Browning (Jan 08 2021 at 05:09):

When stating the Galois correspondence, we wrote it as a ≃ order_dual b

Thomas Browning (Jan 08 2021 at 05:09):

(we couldn't find a better option)

Yakov Pechersky (Jan 08 2021 at 05:10):

data/zmod/basic defines a has_neg on fin n and I am thinking it should be moved into a data/fin and a special locale

Mario Carneiro (Jan 08 2021 at 05:10):

@Yakov Pechersky I mean an order_iso between fin and it's dual

Mario Carneiro (Jan 08 2021 at 05:11):

which should be \lam i : fin (n+1), n - i

Mario Carneiro (Jan 08 2021 at 05:11):

and the empty function on fin 0

Yakov Pechersky (Jan 08 2021 at 05:11):

And was hoping to just use some neat way of flipping the order_iso. Yeah it's just that -- not sure why the zmod defn goes all the way through nat_mod on int coercions

Mario Carneiro (Jan 08 2021 at 05:12):

Note that zmod negation is not correct, because -0 = 0

Mario Carneiro (Jan 08 2021 at 05:12):

I mean it's correct as negation but not as the order dual isomorphism

Mario Carneiro (Jan 08 2021 at 05:14):

I don't think it would be a good idea to register this function as has_neg (fin n) because it doesn't match the zmod negation or make sense with addition

Yakov Pechersky (Jan 08 2021 at 05:17):

Is there a different comm_ring possible on fin (n + 1) other than the one defined in data/basic/zmod?

Aaron Anderson (Jan 08 2021 at 05:39):

Mario Carneiro said:

I could imagine having a typeclass for symmetric orders, although I have no idea how important they are

Basically boolean algebras where compl is surjective?

Mario Carneiro (Jan 08 2021 at 19:30):

@Aaron Anderson A boolean algebra would be an example of a "symmetric preorder", but there are many more examples. A boolean algebra needs a meet and join operation, but here we only need an order anti-automorphism

Mario Carneiro (Jan 08 2021 at 19:31):

(FYI compl is surjective in a boolean algebra because ~~a = a)

Reid Barton (Jan 08 2021 at 19:33):

I think fin n is not a boolean algebra for n >= 3, for example


Last updated: Dec 20 2023 at 11:08 UTC