Isabelle/Isar(その24)
この?Q1を今から導く?Q2と併せて?Qとするので
moreover
により
calculation: (a∷real) + (b∷real) = (c∷real) + (d∷real)
のように蓄積し,また,thisとして0と併せて直ちに利用します.
with 0 have "?L ((c + d) / 2) <= ?R ((a + b) / 2)" by metis
このwith 0はfrom 0 and thisの略です.辺々に代入するものが等しいことは0からの帰結で,やはりmetisを用います.得られた
¦( (c∷real) + (d∷real)) / (2∷real) - c¦ + ¦(c + d) / (2∷real) - d¦
≤ ¦( (a∷real) + (b∷real)) / (2∷real) - a¦ + ¦(a + b) / (2∷real) - b¦
の個々の変形はsimpでも賄えるので,先に
lemma lem_abs: "abs ((x + y) / 2 - (x::real)) = abs (x - y) / 2" by simp
を用意し,それも参照して?Q2となります.
with lem_abs have "?Q2" by simp
これと先の?Q1とを
ultimately
により併せて?Qを得る訳ですが,本来?Qはそれらの連言なので . つまりby thisでは無理で .. つまりby (rule conjI)あるいはby ruleが入用のところを,この程度のロジック(というかマッチング)はsimpにも解るのでby simpとしています.
show "?Q" by simp
Successful attempt to solve goal by exported rule:
(∀x∷real. ¦x - (c∷real)¦ + ¦x - (d∷real)¦ ≤ ¦x - (a∷real)¦ + ¦x - (b∷real)¦) ⟹
a + b = c + d ∧ ¦c - d¦ ≤ ¦a - b¦