このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

サンプルを動くようにする: 努力段階

environ

:: From NAT_1
 vocabularies NUMBERS, ORDINAL1, REAL_1, SUBSET_1, CARD_1, ARYTM_3, TARSKI,
      RELAT_1, XXREAL_0, XCMPLX_0, ARYTM_1, XBOOLE_0, FINSET_1, FUNCT_1, NAT_1,
      FUNCOP_1, PBOOLE, PARTFUN1, FUNCT_7, SETFAM_1, ZFMISC_1;

 notations TARSKI, XBOOLE_0, ENUMSET1, ZFMISC_1, SUBSET_1, SETFAM_1, ORDINAL1,
      FINSET_1, CARD_1, PBOOLE, NUMBERS, XCMPLX_0, XREAL_0, XXREAL_0, RELAT_1,
      FUNCT_1, PARTFUN1, FUNCOP_1, FUNCT_2, BINOP_1;


 constructors NUMBERS, XCMPLX_0, XXREAL_0, XREAL_0, CARD_1, WELLORD2, FUNCT_2,
      PARTFUN1, FUNCOP_1, FUNCT_4, ENUMSET1, RELSET_1, PBOOLE, ORDINAL1,
      SETFAM_1, ZFMISC_1, BINOP_1;

 registrations SUBSET_1, ORDINAL1, NUMBERS, XXREAL_0, XREAL_0, CARD_1,
      RELSET_1, FUNCT_2, PBOOLE;

 requirements REAL, NUMERALS, SUBSET, BOOLE, ARITHM;

:: Added
 schemes NAT_1;

begin

INDUCT2: for n, m being Nat holds n + 1 = m  + 1 implies n = m;
INDUCT3: for n being Nat holds n + 0 = n;
INDUCT4: for n, m being Nat holds n + (m + 1) = (n + m) + 1;


:: ::$N The Principle of Mathematical Induction
:: scheme :: NAT_1:sch 2
::   NatInd { P[Nat] } : for k being Nat holds P[k]
:: provided
::  P[0] and
::  for k be Nat st P[k] holds P[k + 1];

reserve i,j,k,l,m,n for Nat;

i+k = j+k implies i=j
proof
  defpred P[Nat] means
    i+$1 = j+$1 implies i=j;
  A1: P[0]
  proof
    assume
    B0: i+0 = j+0;
    B1: i+0 = i by INDUCT3;
    B2: j+0 = j by INDUCT3;
    hence thesis by B0,B1,B2;
  end;
  A2: for k be Nat st P[k] holds P[k + 1]
  proof
    let l such that C1: P[l];
    assume C2: i + (l + 1) = j + (l + 1);
    then C3: (i + l) + 1 = j + (l + 1) by C2,INDUCT4
    .= (j + l) + 1 by INDUCT4;
    hence thesis by C1,INDUCT2;
  end;
  for k holds P[k] from NAT_1:sch 2(A1,A2);
  hence thesis;
end;

結果は:

Running verifier on ex03 ...
Make Environment, Mizar Ver. 8.1.04 (Win32/FPC)
Copyright (c) 1990-2015 Association of Mizar Users

Verifier based on More Strict Mizar Processor, Mizar Ver. 8.1.04 (Win32/FPC)
Copyright (c) 1990-2015 Association of Mizar Users
Processing: c:/Users/hiyama/Work/tmp/mizar-test/text/ex03.miz

Parser   [  61]   0:00
MSM      [  62]   0:00
Analyzer [  62 *1]   0:00
Checker  [  62 *2]   0:00
Time of mizaring: 0:00
c:/Users/hiyama/Work/tmp/mizar-test/text/ex03.miz:52:34: *121: Disagreement of argument types
c:/Users/hiyama/Work/tmp/mizar-test/text/ex03.miz:60:23: *191: Unknown scheme

エラー箇所は、

  A2: for k be Nat st P[k] holds P[k + 1]
::>                              *121
  proof
    let l such that C1: P[l];
    assume C2: i + (l + 1) = j + (l + 1);
    then C3: (i + l) + 1 = j + (l + 1) by C2,INDUCT4
    .= (j + l) + 1 by INDUCT4;
    hence thesis by C1,INDUCT2;
  end;
  for k holds P[k] from NAT_1:sch 2(A1,A2);
::>                   *191
  hence thesis;
end;
::> 121: Disagreement of argument types
::> 191: Unknown scheme