lemma gauss_cnj_i [simp]: ‹cnj i = - i› by (simp add: gauss_eq_iff)
lemma gauss_add_cnj: ‹z + cnj z = of_int (2 * Re z)› by (simp add: gauss_eq_iff)
lemma gauss_diff_cnj: ‹z - cnj z = of_int (2 * Im z) * i› by (simp add: gauss_eq_iff)
lemma gauss_mult_cnj: ‹z * cnj z = of_int ((Re z)🪙2 + (Im z)🪙2)› by (simp add: gauss_eq_iff power2_eq_square)
lemma cnj_add_mult_eq_Re: ‹z * cnj w + cnj z * w = of_int (2 * Re (z * cnj w))› by (simp add: gauss_eq_iff)
lemma gauss_In_mult_cnj_zero [simp]: ‹Im (z * cnj z) = 0› by simp
subsection‹Algebraic division›
instantiation gauss :: idom_modulo begin
primcorec divide_gauss :: ‹gauss ==> gauss ==> gauss› where ‹Re (x div y) = (Re x * Re y + Im x * Im y) cdiv ((Re y)🪙2 + (Im y)🪙2)›
| ‹Im (x div y) = (Im x * Re y - Re x * Im y) cdiv ((Re y)🪙2 + (Im y)🪙2)›
primcorec modulo_gauss :: ‹gauss ==> gauss ==> gauss› where ‹Re (x mod y) = Re x - ((Re x * Re y + Im x * Im y) cdiv ((Re y)🪙2 + (Im y)🪙2) * Re y - (Im x * Re y - Re x * Im y) cdiv ((Re y)🪙2 + (Im y)🪙2) * Im y)›
| ‹Im (x mod y) = Im x - ((Re x * Re y + Im x * Im y) cdiv ((Re y)🪙2 + (Im y)🪙2) * Im y + (Im x * Re y - Re x * Im y) cdiv ((Re y)🪙2 + (Im y)🪙2) * Re y)›
instanceproof fix x y :: gauss show‹x div 0 = 0› by (simp add: gauss_eq_iff) show‹x * y div y = x›if‹y ≠ 0› proof -
define Y where‹Y = (Re y)🪙2 + (Im y)🪙2› moreoverhave‹Y > 0› using that by (simp add: gauss_eq_0 less_le Y_def) have *: ‹Im y * (Im y * Re x) + Re x * (Re y * Re y) = Re x * Y› ‹Im x * (Im y * Im y) + Im x * (Re y * Re y) = Im x * Y› ‹(Im y)🪙2 + (Re y)🪙2 = Y› by (simp_all add: power2_eq_square algebra_simps Y_def) from‹Y > 0›show ?thesis by (simp add: gauss_eq_iff algebra_simps) (simp add: * nonzero_mult_cdiv_cancel_right) qed show‹x div y * y + x mod y = x› by (simp add: gauss_eq_iff) qed
instanceproof show‹euclidean_size (0::gauss) = 0› by (simp add: euclidean_size_gauss_def) show‹euclidean_size (x mod y) 🚫 y›if‹y ≠ 0›for x y :: gauss
proof-
define X and Y and R and I where‹X = (Re x)🪙2 + (Im x)🪙2›and‹Y = (Re y)🪙2 + (Im y)🪙2› and‹R = Re x * Re y + Im x * Im y›and‹I = Im x * Re y - Re x * Im y› with that have‹0 🚫›and rhs: ‹int (euclidean_size y) = Y› by (simp_all add: gauss_neq_0 euclidean_size_gauss_def) have‹X * Y = R🪙2 + I🪙2› by (simp add: R_def I_def X_def Y_def power2_eq_square algebra_simps) let ?lhs = ‹X - I * (I cdiv Y) - R * (R cdiv Y) - I cdiv Y * (I cmod Y) - R cdiv Y * (R cmod Y)› have‹?lhs = X + Y * (R cdiv Y) * (R cdiv Y) + Y * (I cdiv Y) * (I cdiv Y) - 2 * (R cdiv Y * R + I cdiv Y * I)› by (simp flip: minus_cmod_eq_mult_cdiv add: algebra_simps) alsohave‹… = (Re (x mod y))🪙2 + (Im (x mod y))🪙2› by (simp add: X_def Y_def R_def I_def algebra_simps power2_eq_square) finallyhave lhs: ‹int (euclidean_size (x mod y)) = ?lhs› by (simp add: euclidean_size_gauss_def) have‹?lhs * Y = (I cmod Y)🪙2 + (R cmod Y)🪙2› apply (simp add: algebra_simps power2_eq_square ‹X * Y = R🪙2 + I🪙2›) apply (simp flip: mult.assoc add.assoc minus_cmod_eq_mult_cdiv) apply (simp add: algebra_simps) done alsohave‹…≤ (Y div 2)🪙2 + (Y div 2)🪙2› by (rule add_mono) (use‹Y > 0› abs_cmod_less_equal [of Y] in‹simp_all add: power2_le_iff_abs_le›) alsohave‹…🚫🪙2› using‹Y > 0›by (cases ‹Y = 1›) (simp_all add: power2_eq_square mult_le_less_imp_less flip: mult.assoc) finallyhave‹?lhs * Y 🚫🪙2› . with‹Y > 0›have‹?lhs 🚫› by (simp add: power2_eq_square) thenhave‹int (euclidean_size (x mod y)) 🚫 (euclidean_size y)› by (simp only: lhs rhs) thenshow ?thesis by simp qed show‹euclidean_size x ≤ euclidean_size (x * y)›if‹y ≠ 0›for x y :: gauss proof - from that have‹euclidean_size y > 0› by (simp add: euclidean_size_gauss_def gauss_neq_0) thenhave‹euclidean_size x ≤ euclidean_size x * euclidean_size y› by simp alsohave‹… = nat (((Re x)🪙2 + (Im x)🪙2) * ((Re y)🪙2 + (Im y)🪙2))› by (simp add: euclidean_size_gauss_def nat_mult_distrib) alsohave‹… = euclidean_size (x * y)› by (simp add: euclidean_size_gauss_def eq_nat_nat_iff) (simp add: algebra_simps power2_eq_square) finallyshow ?thesis . qed qed
end
end
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-04-28)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.