Zulip Chat Archive

Stream: maths

Topic: hereditarily


Violeta Hernández (Feb 08 2023 at 09:09):

Thinking about the newly added docs#Set.hereditarily, it occurred to me that it should also have applications in game theory as well. Most notably, short games are hereditarily finite, and impartial games are hereditarily equal to their negatives.

Violeta Hernández (Feb 08 2023 at 09:35):

I was going to suggest this

def hereditarily' {α} (r : α  α  Prop) [is_well_founded α r] (p : α  Prop) : α  Prop
| x := p x  ( y, r y x  hereditarily' y)
using_well_founded {
  rel_tac := λ _ _, `[exact is_well_founded.to_has_well_founded r],
  dec_tac := `[assumption] }

but for some reason I get an app_builder exception.

Violeta Hernández (Feb 08 2023 at 09:36):

Unfortunate that this typeclass doesn't seem to interact well with the equation compiler.

Violeta Hernández (Feb 09 2023 at 23:22):

Oops forgot to ping @Junyan Xu

Junyan Xu (Feb 10 2023 at 00:24):

Actually I'm not sure hereditarily is necessary, given that it could be defined nonrecursively as a forall using docs#relation.refl_trans_gen. For pgames we already have docs#pgame.subsequent defined in terms of trans_gen, so there's even less need to use hereditarily.

Yuyang Zhao (Feb 10 2023 at 06:36):

We can change the definition of docs#Set.hereditarily if that's better.

Violeta Hernández (Feb 10 2023 at 19:26):

Junyan Xu said:

Actually I'm not sure hereditarily is necessary, given that it could be defined nonrecursively as a forall using docs#relation.refl_trans_gen.

I think having both the inductive definition and the equivalence with the transitive closure is good.

Violeta Hernández (Feb 10 2023 at 19:26):

Same applies with pgames

Violeta Hernández (Feb 10 2023 at 19:30):

Really, if there's enough of a need for it, we can also create a named relation for the reflexive transitive closure of . I wouldn't ditch hereditarily even then though. If there's more than one canonical way to write something down, that often is good justification for making a definition.

Eric Wieser (Feb 10 2023 at 19:33):

That argument only works if we add the lemma connecting the refl_trans_gen spelling to the new definition :)

Violeta Hernández (Feb 10 2023 at 19:33):

Oh of course, that's part of the plan

Violeta Hernández (Feb 10 2023 at 19:35):

Wait, I think I have a better idea.

Violeta Hernández (Feb 10 2023 at 19:36):

We could add an inductive lemma on refl_trans_gen itself

Violeta Hernández (Feb 10 2023 at 19:37):

Since after all, refl_trans_gen applies more generally than for just well-founded relations

Violeta Hernández (Feb 10 2023 at 19:40):

...oh wait, the inductive lemma in question would just be the induction principle for refl_trans_gen

Violeta Hernández (Feb 10 2023 at 19:41):

Yeah... Maybe we don't need hereditarily at all

Violeta Hernández (Feb 28 2023 at 12:46):

I just realized

Violeta Hernández (Feb 28 2023 at 12:46):

"Hereditarily transitive" is too strong of a condition

Violeta Hernández (Feb 28 2023 at 12:47):

A transitive set of transitive sets is already an ordinal

Violeta Hernández (Feb 28 2023 at 12:49):

Since "hereditarily p" for a transitive set is exactly the same as "p for all members"

Yuyang Zhao (Feb 28 2023 at 13:10):

I proved it in #18329 as Set.is_ordinal_iff_mem_is_transitive

Violeta Hernández (Feb 28 2023 at 13:10):

I see

Violeta Hernández (Feb 28 2023 at 13:11):

Surely that should be the definition instead, then? It should be strictly easier to prove

Violeta Hernández (Feb 28 2023 at 13:11):

But then, notice the definition from my PR is quite simple to prove for a transitive set of transitive sets

Violeta Hernández (Feb 28 2023 at 13:12):

theorem is_ordinal_of_transitive_of_mem_transitive (hx : x.is_transitive)
  (H :  y : Set, y  x  y.is_transitive) : x.is_ordinal :=
hx, λ y z w hyz hzw hwx, (H w hwx).subset_of_mem hzw hyz

Violeta Hernández (Feb 28 2023 at 13:24):

Not to be confrontational, but I'd rather we go with my definition for two reasons:
a. It seems like the simplest statement to prove among all the equivalences - a transitive set transitive under , a transitive set of transitive sets, and a hereditarily transitive set, are all easily proven to satisfy this; the converses aren't immediate
b. I've already gotten a lot done with it

Violeta Hernández (Feb 28 2023 at 13:28):

For reference, here's the equivalent statements (I know of):

  1. A transitive set x where y ∈ z ∈ w ∈ x implies y ∈ w (my definition)
  2. A transitive set, transitive under
  3. A transitive set, trichotomous under
  4. A transitive set, strictly totally ordered under
  5. A transitive set, well-ordered under
  6. A transitive set of transitive sets
  7. A hereditarily transitive set

Violeta Hernández (Feb 28 2023 at 13:29):

5 is the Wikipedia definition, but is far too strong (as seen by all the other statements). Listing all the immediate (one-line) implications:

  • 1 ↔ 2
  • 5 → 4 → 2 or 3
  • 7 → 6 → 2

Violeta Hernández (Feb 28 2023 at 13:30):

Takeuti & Zaring use 3, but I imagine proving ∀ (y ∈ x) (z ∈ x), y ∈ z ∨ y = z ∨ z ∈ y would be somewhat cumbersome, which only leaves 1 and 2

Yuyang Zhao (Feb 28 2023 at 13:33):

That's ok, I don't strongly request using my definition.

Violeta Hernández (Feb 28 2023 at 13:33):

And notice that 1 is just 2 without redundant conditions, since the transitivity condition gives you y ∈ x, z ∈ x, w ∈ x from y ∈ z ∈ w ∈ x

Violeta Hernández (Feb 28 2023 at 13:34):

Oh alright

Violeta Hernández (Feb 28 2023 at 13:34):

Again, hope I'm not coming off in a negative way, I've just been thinking about this for a while now

Violeta Hernández (Feb 28 2023 at 13:41):

On this topic, I just opened a new PR just containing the definition and easiest lemmas from my other larger PR

Violeta Hernández (Feb 28 2023 at 13:41):

#18513

Violeta Hernández (Feb 28 2023 at 13:41):

Should have done this much earlier, I apologize

Violeta Hernández (Feb 28 2023 at 13:41):

This doesn't depend on the sym2.game_add stuff or anything like that

Mario Carneiro (Feb 28 2023 at 19:51):

Violeta Hernández said:

Surely that should be the definition instead, then? It should be strictly easier to prove

It is extremely rare to have to prove that a random set is an ordinal. Most of the time you get ordinals out of very general constructions which are always ordinal-producing by construction. So I don't see this as a strong argument - the definition of ordinal should be almost completely irrelevant because it is so heavily dependent on its robust API

Mario Carneiro (Feb 28 2023 at 19:53):

In such a situation, I usually bias toward short definitions

Violeta Hernández (Mar 01 2023 at 11:27):

I think our definition should still make the least amount of assumptions possible.

Violeta Hernández (Mar 01 2023 at 11:27):

And I think the definition I've went with also meets this criterion


Last updated: Dec 20 2023 at 11:08 UTC