Zulip Chat Archive
Stream: new members
Topic: syntax question
Chase Norman (Sep 29 2020 at 05:47):
I'm a new Lean user and I'm trying to write a proposition about lists using an element-wise strategy. The following is a toy example:
def sorted : list ℕ → Prop := λ c : list ℕ, ∀ x : ℕ, x < c.length → list.nth_le c x
nth_le returns a type (x < c.length) → ℕ
. How do I use my implication assumption to retrieve the natural number value? By extension, what if I needed the expression (x-1 < c.length)
? Thanks.
Kevin Buzzard (Sep 29 2020 at 06:02):
I think the computer scientists know better ways to say a list is sorted, but you could put \forall (x : nat) (h : x < c.length), ...
Chase Norman (Sep 29 2020 at 06:05):
Yeah this is a toy example, I understand it's not necessary in this case. However I would like to know how to do it for a more complicated example.
Kevin Buzzard (Sep 29 2020 at 06:06):
My method scales. Do you know about pi types?
Kevin Buzzard (Sep 29 2020 at 06:07):
A pi type is more general than a function because the type of the output can depend on the input term. That's all I'm using here
Chase Norman (Sep 29 2020 at 06:13):
Oh I understand what you're saying now, thanks so much! As a side question, how many potential instances of x < c.length
can exist? Are all instances of this Prop equivalent? My guess is that there will be no such element of the type when x >= c.length
and 1 such element when x < c.length
.
My understanding of pi types is that they are the type of a lambda function that receives the proper input and output types. Is this a correct understanding?
Kevin Buzzard (Sep 29 2020 at 06:17):
All proofs of a proposition are equal by definition in Lean so there's so issue there. Your guess is the right model. A pi type is exactly what you have here, it's just a statement like "for all n in S, n>=37" where the type n>=37 of the conclusion depends on the input term n
Last updated: Dec 20 2023 at 11:08 UTC