amgm2

 この結果の右辺は引き続き用いるので

also

とすれば

calculation:
GM a m (2 ^ Suc N) = root 2 (GM a m (2 ^ N) * GM a (m + 2 ^ N) (2 ^ N))

のように記憶され,右辺が...で参照できます.

 従って,次は

have "... <= (GM a m (2 ^ N) + GM a (m + 2 ^ N) (2 ^ N)) / 2"

を示すことになりますが,これには項数が2の場合の不等式が入用ですので,今回の定理に先立ち

lemma amgm2:
  "0 <= x ==> 0 <= y ==> root 2 (x * y) <= (x + y) / 2"
  using zero_le_power2 [of"root 2 x - root 2 y"]
  by (simp add: power2_diff real_root_mult)

のように準備しておきます.方針は非負値である(root 2 x - root 2 y)^2を展開し,根号を整理するというもので,参照する定理は

thm zero_le_power2 power2_diff real_root_mult

0 ≤ ?a²
(?x - ?y)² = ?x² + ?y² - 2 * ?x * ?y
0 < ?n ⟹ root ?n (?x * ?y) = root ?n ?x * root ?n ?y

の3つです.大体のマッチングはsimpにもできますが,1つ目はさすがに無理なので ?a として "root 2 x - root 2 y" を明示してやります

thm zero_le_power2 [of "root 2 x - root 2 y"]

0 ≤ (root 2 x - root 2 y)²

指定の方法は

thm zero_le_power2 [where a = "root 2 x - root 2 y"]

などでも構いません.なお

NthRoot.real_root_pow_pos2: 0 < ?n ⟹ 0 ≤ ?x ⟹ root ?n ?x ^ ?n = ?x

はsimp属性を持っていますので,自動的に適用されます.