for x holds P[x] & Q[x]
proof
let x;
......
......
thus P[x];
......
......
thus Q[x]; (thesis)
end;
for x,y st P[x,y] holds Q[x,y]
proof
let x,y;
assume P[x,y];
......
......
thus Q[x,y]; (thesis)
end;
for x,y st P[x,y] holds Q[x,y]
proof
let x,y such that L:P[x,y];
......
......
......
thus Q[x,y];
end;
for x,y st P[x,y] & Q[x,y] holds R[x,y]
proof
let x,y such that L1:P[x,y] and L2:Q[x,y];
......
......
thus R[x,y];
end;
let x,y such that L1:P[x,y] and L2:Q[x,y];
は,
let x,y such that L:P[x,y] & Q[x,y];
というふうに,書くこともできます.前の書き方と後の書き方は原理的には同じです.前の書き方の and は,別のラベルをたてるために2つの文に分けるためのものです.これは,A & B という1つの文を,A という文と,B とういう文とに分けたということです.それに対して,後の書き方はあくまで1つの文で,論理演算子でつながったものです.このように,and を使って1つの文を2つの文に分けたり,逆に & を使って2つの文を1つの文にすることもできます.
for x,y st P[x,y] & S[x,y] holds Q[x,y]
proof
let x,y;
assume P[x,y] & S[x,y];
......
......
thus Q[x,y];
end;
と,なったとします.
assume P[x,y] & S[x,y];
は,
assume that L1:P[x,y] and L2:S[x,y];
と書くこともできます.後の書き方に限って,P[x,y] と S[x,y] の両方にそれぞれにラベルを書くことができます.この例では L1,L2 というラベルです.
assume that A and B;
then C;
こういう書き方はできません.必ずラベルを使って,
assume that L1:A and L2:B;
C by L1,L2;
こういうふうに書かないといけません.あるいは,B だけ使うときは,
C by L2;
これだけ書きます.引用が1つの場合にも then は使えません.then でなく by L2 と書かなければいけません.ですから that が来たらラベルが来なければこの文は使えません.つまり,後で引用することができません.したがって,that の後には必ずラベルが来ると考えられます.
assume P[x,y] & Q[x,y] の場合は,
assume P[x,y] & Q[x,y];
then ......
と使うことができます.that がなくて,1つの文しかないわけです.assume のときは then を使います.