ã¡ã¢æã
èªåã® Coq ã¡ã¢ãæãã¦ã¿ãã
â ; ã«ã¤ã㦠T1 ; T2 T1 é©ç¨å¾ãT1 ã«ãã£ã¦åºæ¥ãå ¨ã¦ã®ãµãã´ã¼ã«ã«å¯¾ã㦠T2 ãé©ç¨ T1 ; [T2 | T3] T1 é©ç¨å¾ãT1 ã«ãã£ã¦åºæ¥ããµãã´ã¼ã« a, b ã«å¯¾ãã¦ãa ã« T2ãb ã« T3 ãé©ç¨ (ä¸è¦ãªã T2, T3 ãçç¥å¯(ä½ãããªã)) â tacticã«ã¤ã㦠intro / intros åæã®å°å ¥ ã´ã¼ã«ã® forall ã -> ã§æ¬ãããé¨åãåæ㸠intros ã§ååãä»ããã¨ãã¯å·¦ãã åæã«æã£ã¦è¡ããªãå ´åã¯ãååã _ ã«ãã (intros ã®ã¿) apply åæ A -> Bãã´ã¼ã« B ãããã¨ããã´ã¼ã«ã A ã«ãã ã´ã¼ã«ã«é©ç¨ã§ããé¢æ°ãããã¨ããapply é¢æ° ã§ã´ã¼ã«ã«é¢æ°ãé©ç¨ãã assert assert (åæã®åå := å¼) ã§ãå¼ã«ãã£ã¦è¨¼æãããå½é¡ãåæã«è¿½å ãã exact åæ H ãã´ã¼ã«ã¨åãå ´åãexact H ã§ã´ã¼ã«ã®è¨¼æãçµäºãã 証æã¨ç価ãªé¢æ°ãããã¨ããexact é¢æ° ã§ã´ã¼ã«ã®è¨¼æãçµäºãã assumption åæã«ã´ã¼ã«ãããå ´åãã´ã¼ã«ã®è¨¼æãçµäºãã elim åæã«ãã£ã¦ã以ä¸ã®è¦åãé©ç¨ ã»åæã A /\ B ã®å ´å ã´ã¼ã« G ããA -> B -> G ã«ãã ã»åæã A \/ B ã®å ´å ã´ã¼ã« G ããA -> G 㨠B -> G ã«åå²ãã ã»åæã not A ã®å ´å ã´ã¼ã«ã A ã«ãã ã»åæã exists x : A, P x ã®å ´å ã´ã¼ã« G ããforall x:A, P x -> G ã«ãã split and ã®ã´ã¼ã«ãå解ãã apply conj ã®çç¥å½¢ left / right or ã®ã´ã¼ã«ã®çæ¹ãé¸ã¶ left 㯠apply or_introlãright 㯠apply or_intror ã®çç¥å½¢ exists åæã« H : x:A ãããã¨ããexists H ã§ãã´ã¼ã«ã® exists a:A, P a ã P x ã«ãã clear æå®ããåæãé¤å» auto intro, apply, assumption çããã¦ã¼ã¶ã®æ示ç¡ãã§çµã¿åããã¦ã´ã¼ã«ã«è¾¿ãçããå ´åãé©ç¨ trivial intro, apply, assumption çãã1åã ãé©ç¨ tauto ãã¼ããã¸ã¼ã§ããå ´åãé©ç¨ try tauto tautoãå¯è½ã§ããã°ãé©ç¨ (åºæ¥ãªããªãã°ä½ãããªã) cut cut P ã§ãã´ã¼ã« G ããP -> G 㨠P ã«åå²ãã generalize åæ Aãã´ã¼ã« G ã®ã¨ããã´ã¼ã«ã A -> G ã«ãã rewrite åæ H : A = B ã®ã¨ãã ã»rewrite (->) H ã§ã´ã¼ã«ã® A ã B ã«ãã ã»rewrite <- H ã§ã´ã¼ã«ã® B ã A ã«ãã replace A with B ã´ã¼ã« G ããG ä¸ã® A ã B ã«ç½®ãæãããã®ã¨ãB = A ã«åå² unfold A ã´ã¼ã«ã® A ãå±éãã transitivity C ã´ã¼ã«ã® A = B ã A = C 㨠C = B ã«åå² symmetry ã´ã¼ã«ã® A = B ã B = A ã«ãã reflexivity ã´ã¼ã«ã A = A ã®ã¨ããã´ã¼ã«ã®è¨¼æãçµäºãã (åå°å¾) (* ãã®ãããã¦ãã¨ã *) simpl ç°¡ç´ (?) compute / cbv ç°¡ç´ (?) congruence ã´ã¼ã«ããåå¤å¤å½¢ã§å°ããå ´åãé©ç¨ (?) omega nat, Z ä¸ã®ã~, /\, \/, -> ã§çµã¿ç«ã¦ãããçå¼ãä¸çå¼ãèªåã§é å¼µã£ã¦ããã? 使ãã¨ãã¯ãRequire Import Omega. ring ã´ã¼ã«ããç°ã®æ§è³ªã使ã£ãå¤å½¢ã§å°ããå ´åãé©ç¨ (?) field ã´ã¼ã«ããä½ã®æ§è³ªã使ã£ãå¤å½¢ã§å°ããå ´åãé©ç¨ (?) induction n n ã«é¢ãã帰ç´æ³ã®éå§ inversion H H ãæç«ããããã®åæãåæã«è¿½å ãã injection H ã³ã³ã¹ãã©ã¯ã¿ C ã«å¯¾ãåæ H : C a = C b ã®ã¨ããã´ã¼ã« G ã a = b -> G ã«ãã â coqtopã®ã³ãã³ã ï¼é常ã¢ã¼ã Check ... ...ã®åçã表示 Eval compute in ... ...ãè¨ç® Locate "(æ¼ç®å)" (æ¼ç®å) ã®å®ç¾©ã表示 Section ... ...ã¨ããååã§ã»ã¯ã·ã§ã³ãåã Goal ...(Prop) ...ã®è¨¼æãéå§ Print ...(å®çã¨ã) ...ã®ä¸èº«ãé¢æ°å½¢å¼ã§è¡¨ç¤º ï¼è¨¼æã¢ã¼ã Restart 証æãå§ããã Abort 証æãããã Undo 証æã1ã¤æ»ã â ãã®ä» -> ã¯å³çµå
ãã¥ã¼ããªã¢ã«ç¶ãèªã¾ãªãã¨ã
(1.4 ãããã¾ã§ããè¡ã£ã¦ãªã)
- 追è¨
ææ°çã¯ããã«ã