Zulip Chat Archive
Stream: new members
Topic: subtypes / restrictions
Antoine Chambert-Loir (Nov 30 2021 at 09:52):
I tried to find a proof that a restriction of an injective map is injective by library_search but didn't succeed.
example (α β : Type*) (f : α → β) (hf : function.injective f) (s : set α) :
function.injective (set.restrict f s) :=
begin
intros a b h,
apply subtype.ext_val,
apply hf,
exact h,
end
By the way, I wonder, in the situation of a map fin n.succ \to \alpha
how one should get its restriction to fin n
.
Maybe it is better to do just by composition with fin.cast_le (nat.le_succ n)
(it saves a quantifier).
Johan Commelin (Nov 30 2021 at 09:53):
I would certainly use the composition
Eric Wieser (Nov 30 2021 at 09:53):
Antoine Chambert-Loir (Nov 30 2021 at 10:08):
Johan Commelin said:
I would certainly use the composition
Which means, by the way, that good writing in Lean probably requires thinking categorically.
Johan Commelin (Nov 30 2021 at 10:09):
@Antoine Chambert-Loir There's certainly a tendency towards that. Type theory nudges you in that direction.
Anatole Dedecker (Nov 30 2021 at 10:16):
I’m curious : does hf.comp subtype.coe_injective
work as a proof of your example ?
Antoine Chambert-Loir (Nov 30 2021 at 10:25):
Anatole Dedecker said:
I’m curious : does
hf.comp subtype.coe_injective
work as a proof of your example ?
Yes !
Anatole Dedecker (Nov 30 2021 at 10:56):
So in fact set.restrict
is already the composition with coe
Antoine Chambert-Loir (Nov 30 2021 at 11:16):
I see. In fact, to propose a mwe, I had simplified my own stuff where s was a set.range
of an injective map (nat.cast_le _
), hence the simplification. As Johan wrote, it is probably better to compose explicitly with coe
in my case.
Last updated: Dec 20 2023 at 11:08 UTC