isabelle

    1熱度

    1回答

    考慮下面的語言環境定義: locale my_locale = fixes a :: nat assumes "a > 0" begin definition "f n ≡ a + n" lemma f_pos: "f x > 0" sorry end 在伊薩爾,如果我試圖用f定義或引理f_pos工作,語言環境的假設和固定變量都向我隱瞞。例如,thm

    1熱度

    2回答

    最近了解到how to drop an unwanted premise in an apply-style proof,我現在想知道如何刪除不需要的變量變量。也就是說,假設我有目標 1. !!x y z. A ⟹ B ⟹ C 其中y不A,B或C出現。我如何將它轉換爲以下內容? 1. !!x z. A ⟹ B ⟹ C

    2熱度

    1回答

    我們假設我們正在使用一對類型爲('a × 'a)並定義一個fun併爲其設置模式匹配。 fun test :: "('a × 'a) ⇒ 'a ⇒ bool" where "test (a,b) c = True" 如果我現在有('a × 'a)類型的變量a_b,我怎麼能代替它變成了對錶示(a,b)在應用樣式的證明。例如,顯示以下引理的最佳方式是什麼?如何將test a_b c替換爲test (

    3熱度

    1回答

    假設我有一組A ⊆ nat。我想在伊莎貝爾建立一個功能f : A ⇒ Y。我可以使用任一: 部分功能,即nat ⇒ Y option類型的一個,或 總功能,即nat ⇒ Y類型是未指定爲不A輸入之一。 我想知道哪個是'更好'的選擇。我看到了幾個因素: 「部分函數」方法更好,因爲它比較容易比較部分函數的相等性。也就是說,如果我想看看f是否等於另一個函數g : A ⇒ Y,那麼我只是說f = g。要比

    3熱度

    3回答

    在伊莎貝爾,經常可以擊中目標,證明在中間類型的術語是一個證明的正確性至關重要。例如,請考慮以下引理轉換nat 42到'a word然後再回到: theory Test imports "~~/src/HOL/Word/Word" begin lemma "unat (of_nat 42) = 42" ... 現在這種說法的真實性取決於of_nat 42類型:如果是32 wor

    2熱度

    1回答

    鑑於我有一個非常簡單的代碼生成定義。它僅在某些情況下被定義,否則會引發運行時異常。 definition "blubb a = (if P a then True else undefined)" 現在我想顯示blubb正確。應該忽略拋出異常的情況(從我的觀點來看,不是數學觀點)。然而,我最終得到一個子目標,它假設X是undefined的一些任意值。下面的引理或多或少地等同於子目標。我想顯示F

    7熱度

    3回答

    當我在應用腳本中使用apply (rule)時,通常會選擇適當的規則。對於結構化證明中的proof也是如此。我可以在哪裏學習/查找使用的規則的名稱?被聲明爲Pure.intro/intro/iff(或其?或!變種之一)

    3熱度

    2回答

    在伊莎貝爾,偶爾會有一個場景存在重複的子目標。例如,假設以下證明腳本: lemma "a ∧ a" apply (rule conjI) 與目標: proof (prove): step 1 goal (2 subgoals): 1. a 2. a 有什麼辦法消除就地重複的子目標,所以證明無需重複?

    1熱度

    1回答

    我正在用Isabelle生成Scala代碼。我怎樣才能爲我的Scala文件指定一個頭文件?例如,我想有這樣的事情: // Generated code. Generated with Isabelle/HOL // File: blubb.thy line:1234 // Date: Wed, 27.03.2013 // exported code equations: bla blub b

    5熱度

    2回答

    如何定義Isabelle中的函數,該函數根據其參數的類型或使用的上下文的類型具有不同的定義? 例如,我可能想定義一個函數is_default,其類型爲'a ⇒ bool,其中每種不同類型'a都有一個可能不同的「默認值」。 (爲了辯論的緣故,我也假定現有的概念如zero不適合。)