chapter 7 of "theorem proving in lean"'dan endüktif türleri anlamaya çalışıyorum. Ben olasılıklar çift ile derleyici tatmin edebildi bazı varsayım ve oldukça kapsamlı aramadan sonraEşitlik yerine varlığın yerine geçme özelliği
inductive natural : Type
| zero : natural
| succ : natural -> natural
lemma succ_over_equality (a b : natural) (H : a = b) :
(natural.succ a) = (natural.succ b) := sorry
:
Kendime doğal sayıların bu halefi kanıtlayan bir görevi ayarlamak eşitlik üzerinde ikame özelliği vardır:
lemma succ_over_equality (a b : natural) (H : a = b) :
(natural.succ a) = (natural.succ b) :=
eq.rec_on H (eq.refl (natural.succ a))
--eq.rec_on H rfl
--eq.subst H rfl
--eq.subst H (eq.refl (natural.succ a))
--congr_arg (λ (n : natural), (natural.succ n)) H
Verdiğim provalardan herhangi birinin aslında nasıl çalıştığını anlamıyorum.
eq
(endüktif) tipi nedir? VSCode'daeq
'un tip imzasınıeq Π {α : Type} α → α → Prop
olarak görebiliyorum, ancak bireysel (endüktif) kurucular göremiyorum (zero
vesucc
analoglarınatural
). Kaynak kodunda bulabildiğim en iyisi doesn't look quite right.eq.subst
niçin(natural.succ a) = (natural.succ a)
bir kanıtı kabul etmek için(natural.succ a) = (natural.succ b)
kanıtı sunmaktan mutluluk duyarsınız?- higher order unification nedir ve bu örnek için nasıl geçerlidir?
[Lean] invalid 'eq.rec_on' application, elaborator has special support for this kind of application (it is handled as an "eliminator"), but the expected type must be known eq.rec_on : Π {α : Sort u} {a : α} {C : α → Sort l} {a_1 : α}, a = a_1 → C a → C a_1
https://github.com/leanprover/lean/blob/master/library/init/core.lean – Adam
içinde eş hayatımızın tanımı bu kanıt kabul neden olarak, afaik sen destruct zaman eşitlik a ve b'nin aynı olduğu düşünüldüğünde (hepsi aynı yapıcının argümanıdır) bu nedenle dönüş türünde de yerini alır, bir hedef nesneyi türle birlikte verir (natural.suc c a) = (natural.succ a) – Adam
'a sahip olduğunuzda, bu sorunun tek bir cümlesini bile anlamadım :-) İyi şanslar! – Stimul8d