簡體   English   中英

這個 Isabelle 證明中是否需要歸納?

[英]Is induction required in this Isabelle proof?

我試圖證明生成器函數會產生某些仍然非常簡單的模式。 pattern_0_1生成交替 0 和 1 的列表。 我已經成功證明任何長度大於 0 的列表的第一項為零。但是,應用相同的技術未能證明第二個元素始終為 1。我的猜測是這里根本不需要歸納。 對於完成第二個引理的正確方法,我將不勝感激。

fun pattern_0_1 :: "nat ⇒ nat ⇒ nat list" where
"pattern_0_1 0 item  = []" |
"pattern_0_1 len item =  item # (pattern_0_1 (len - 1) (if item = 0 then 1 else 0))"

lemma item_0_is_0 : "lng ≥ 1 ⟹ pattern_0_1 lng 0 ! 0 = 0"
  apply(induction lng)
  apply(simp)
  by auto

lemma item_1_is_1 : "lng ≥ 2 ⟹ pattern_0_1 lng 0 ! 1 = 1"
  apply(induction lng)
  apply(simp)
  sorry

不需要歸納(它會是,你會展示一些關於所有偶數或所有奇數位置的東西)。 在這里,案例分析就足夠了,因此您可以得到案例 0、1 和 >= 2。因此,您的證明可以通過

apply(cases lng; cases "lng - 1"; auto)

其中第一種cases將是 0 或 >= 1,而第二種cases將區分 1 和 >= 2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM