2
A
回答
3
您可以定義常量,如下所示:
Definition a := 10 + /10.
Definition b := 3 + 14/100.
但是請注意,該標準庫定義雷亞爾公理。 您可以找到主要定義here。請注意定義爲Parameter
s,這是Axiom
的同義詞。 例如,R0
和R1
代表實數0和1,Rplus
和Rmult
表示加法和乘法,但是這些定義不是歸納數據類型和函數,因爲它們缺少定義。爲了能夠處理實數,我們需要公理,控制它們之間的相互作用(給出here)。
您可以將標準庫中的實數看作,標記爲R0
,R1
,Rplus
等節點。你會得到一些規則(公理),它們指定你可以在這些AST上執行的(唯一的)轉換。
讓我們來看看勒柯克如何代表實數:
Require Import Coq.Reals.Reals.
Local Open Scope R_scope.
Unset Printing Notations.
Check 5+/2 (* 5½ *).
(*
Rplus (Rplus R1
(Rmult (Rplus R1 R1)
(Rplus R1 R1)))
(Rinv (Rplus R1 R1)).
i.e. (1 + (1 + 1) * (1 + 1)) + (1 + 1)⁻¹
*)
在這種公理化方法的後果存在的事實,下面的目標不能被reflexivity
了證明(因爲它可以用於nat
S IN進行類似的情況):
Set Printing Notations.
Goal a = 9 + 1 + /10.
Fail reflexivity.
失敗的原因是在平等的兩側的AST(條款)是不同的,勒柯克不會將它們轉換爲某種規範值,他們在最後進行比較。這次我們需要證明兩個AST是可以相互轉換的。
enough (9 + 1 = 10).
- now rewrite H.
現在我們需要證明9 + 1 = 10
:
- rewrite Rplus_comm, <-Rplus_assoc.
rewrite <-(Rmult_1_r 2) at 1.
rewrite <-Rmult_plus_distr_l.
reflexivity.
幸運的是我們有一個策略,它可以爲我們做這單調乏味的工作:
Restart.
unfold a; field.
Qed.
標準庫的方法是但不是唯一可能的。 This answer by @gallais可以幫助您探索您的其他選項。
+0
你的答案中非常有用的例子和鏈接。謝謝安東。 – FZed
相關問題
- 1. 在勒柯克
- 2. 在勒柯克
- 3. 在勒柯克
- 4. 在勒柯克
- 5. 串地圖和勒柯克
- 6. 使用勒柯克
- 7. 平等的勒柯克
- 8. 分型在勒柯克
- 9. 證明在勒柯克
- 10. FORALL平等勒柯克
- 11. 雙誘導勒柯克
- 12. 勒柯克「護航模式」
- 13. 勒柯克:替代和依賴類型
- 14. 雷亞爾和定理勒柯克
- 15. 通過勒柯克困惑進口
- 16. 幫助與勒柯克證明了亞
- 17. 勒柯克:應用及物與替代
- 18. 勒柯克:找不到庫Jessie_memory_model在loadpath
- 19. 在勒柯克,如何構建「SIG」型
- 20. 消除與命題案件勒柯克
- 21. 奇lambda語法在勒柯克
- 22. 勒柯克:?使用 「改寫」 或 「應用」
- 23. 如何編譯Logic.v在勒柯克
- 24. 勒柯克 - 證明涉及bigops在Ssreflect
- 25. 勒柯克的強制和目標匹配
- 26. OCaml解析和lexing使用流
- 27. Lexing和解析CSS層次結構
- 28. 如何使用勒柯克GenericMinMax來證明事實有關雷亞爾
- 29. 證明,如果再在其他勒柯克
- 30. 勒柯克符號的多類型列表
'定義threefourteen:R:= 314/100.'不適合你嗎? – gallais