Created
October 12, 2020 14:17
-
-
Save Soccolo/9038cb8f8f85587959ff56791229ef4c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import algebra | |
import analysis.normed_space.inner_product | |
import data.complex.basic | |
import tactic | |
import data.complex.is_R_or_C | |
import analysis.normed_space.basic | |
import data.real.basic | |
variables (F: Type) (π : Type) [is_R_or_C π] [add_comm_group F] [vector_space π F] [c : inner_product_space.core π F] | |
include c | |
variables {Ο : F} | |
--Ο is the state of the variable, most likely a particle. In Quantum Mechanics, Ο is a wave function, and the | |
--operators are mostly differentials. We shall not define the operator structure, we shall just consider them | |
--functions with specific properties. The proof shall be taken directly from Sadri Hassani's 'Mathematical Physics'. | |
--We shall prove that, for any two operators A and B, |βͺΟ | [A,B] | Οβ«| β€ 2 * Ξ_A * Ξ_B. In Quantum Mechanics, the | |
--operators A and B are the position operator X and momentul operator P, and [X,P]=iβI, where I is the identity operator. | |
noncomputable theory | |
local notation `βͺ`x`, `y`β«` := @inner π F _ x y | |
local notation `π` := @is_R_or_C.of_real π _ | |
local notation `norm_sqK` := @is_R_or_C.norm_sq π _ | |
local notation `reK` := @is_R_or_C.re π _ | |
local notation `ext_iff` := @is_R_or_C.ext_iff π _ | |
local postfix `β `:90 := @is_R_or_C.conj π _ | |
def to_has_inner : has_inner π F := { inner := c.inner } | |
local attribute [instance] to_has_inner | |
def norm_sq (x : F) := reK βͺx, xβ« | |
local notation `norm_sqF` := @norm_sq π F _ _ _ _ | |
def to_has_norm : has_norm F := | |
{ norm := Ξ» x, real.sqrt (is_R_or_C.re βͺx, xβ«) } | |
local attribute [instance] to_has_norm | |
--First, some useful general lemmas. | |
lemma abs_min_add: β z w : π, is_R_or_C.abs(z - w) β€ is_R_or_C.abs z + is_R_or_C.abs w:= | |
begin | |
intros z w, have fact: z - w = z + (- w), {ring,}, rw fact, rw β is_R_or_C.abs_neg w, exact is_R_or_C.abs_add z (-w), | |
end | |
lemma sub_sub_sub: β a b c d : F, a - b - (c - d) = a - b - c + d:= | |
begin | |
intros a b c d, rw sub_sub_assoc_swap, have obs: a - b + d - c = a - b + d + (-1 : π) β’ c, {rw neg_one_smul π c, ring,}, | |
rw obs, rw add_assoc, have obs2: a - b + (d + (-1 : π) β’ c) = a - b + ((-1 : π) β’ c + d), {rw β add_comm ((-1:π) β’ c) d,}, | |
rw obs2, rw β add_assoc, rw neg_one_smul π, ring, | |
end | |
lemma sub_sub_add_add: β a b c d : F, a - b - c + d + b = a - c + d:= | |
begin | |
intros a b c d, | |
rw sub_add_eq_add_sub, rw add_comm, rw β add_sub_assoc, rw β add_assoc, rw add_comm b (a-b), rw sub_add_cancel a b, rw sub_add_eq_add_sub, | |
end | |
lemma op_mul (A : F β F) (ha: β x y : F, β a b : π, A (a β’ x + b β’ y) = a β’ A x + b β’ A y): β x : F, β a : π, A (a β’ x) = a β’ A x := | |
begin | |
intros x a, have fact: a β’ x = a β’ x + (0 : F), {ring}, have fact': (0 : π) β’ (0 : F) = (0 : F), {exact zero_smul π 0,}, rw β (fact') at fact, | |
rw fact, rw ha x 0 a 0, rw zero_smul π (A 0), ring, | |
end | |
lemma op_same (A : F β F) (B : F β F) (a : π) (b : π) (ha1: β x y : F, β a b : π, A (a β’ x + b β’ y) = a β’ A x + b β’ A y) | |
(ha2: β x y : F, βͺx, A y β« = βͺA x, yβ«) (hb1: β x y : F, β a b : π, B (a β’ x + b β’ y) = a β’ B x + b β’ B y) | |
(hb2: β x y : F, βͺx, B yβ« = βͺB x, yβ«) (C : F β F) (hc: β x : F, C x = A x - a β’ x) | |
(D : F β F) (hd: β x : F, D x = B x - b β’ x) : C (D Ο) - D (C Ο) = A (B Ο) - B (A Ο) := | |
begin | |
rw hc (D Ο), rw hd (C Ο), rw hd Ο, have fact: β z w : F, z - w = z + (-w), {intros z w, ring,}, rw fact (B Ο) (b β’ Ο), | |
rw hc Ο, have obs: (-1:π) β’ (b β’ Ο) = - (b β’ Ο), {exact neg_one_smul π (b β’ Ο),}, rw β obs, have obs': (1:π) β’ B Ο = B Ο, {exact one_smul π (B Ο)}, | |
rw β obs', rw ha1 (B Ο) (b β’ Ο) 1 (-1), clear obs obs', rw fact (A Ο) (a β’ Ο), | |
have obs: (-1 : π) β’ (a β’ Ο) = - (a β’ Ο), {exact neg_one_smul π (a β’ Ο),}, rw β obs, have obs': (1 : π) β’ A Ο = A Ο, {exact one_smul π (A Ο),}, | |
rw β obs', rw hb1 (A Ο) (a β’ Ο) 1 (-1), rw one_smul π (A (B Ο)), rw op_mul F π A ha1, rw op_mul F π B hb1, | |
rw one_smul π (B Ο), rw one_smul π (A Ο), rw neg_one_smul π (b β’ A Ο), rw neg_one_smul π (b β’ Ο), rw one_smul π, rw neg_one_smul π, | |
rw neg_one_smul π (a β’ Ο), ring, rw (smul_sub a (B Ο) (b β’ Ο)), rw smul_sub b (A Ο) (a β’ Ο), rw smul_smul a b Ο, rw smul_smul b a Ο, | |
rw mul_comm b a, rw sub_sub_assoc_swap, rw sub_sub_sub F π (A(B Ο)) (b β’ A Ο) (a β’ B Ο) ((a * b) β’ Ο), rw add_sub, | |
rw sub_sub_sub F π, ring, rw sub_sub_add_add F π, rw add_sub_cancel, have rk1: A(B Ο) - a β’ B Ο - B(A Ο) + a β’ B Ο = A (B Ο) - a β’ B Ο - B (A Ο) + 0 + a β’ B Ο, {ring,}, | |
rw rk1, have rk2: A (B Ο) - B (A Ο) = A (B Ο) - B (A Ο) + 0, {ring,}, rw rk2, rw sub_sub_add_add F π, | |
end | |
lemma op_linear (A : F β F) (t : π) (ha1: β x y : F, β a b : π, A (a β’ x + b β’ y) = a β’ A x + b β’ A y) | |
(C : F β F) (hc: β x : F, C x = A x - t β’ x) : β x y : F, β a b : π, C (a β’ x + b β’ y) = a β’ C x + b β’ C y := | |
begin | |
intros x y a b, rw hc (a β’ x + b β’ y), rw hc x, rw hc y, rw smul_add, rw ha1 x y a b, rw smul_sub, rw smul_sub, | |
rw add_sub, rw β sub_sub, rw smul_comm t a, rw smul_comm t b, rw β sub_add_eq_add_sub, | |
end | |
lemma op_hermitian (A : F β F) (t : π) (ht: is_R_or_C.conj t = t) (ha1: β x y : F, β a b : π, A (a β’ x + b β’ y) = a β’ A x + b β’ A y) | |
(ha2: β x y : F, βͺx, A y β« = βͺA x, yβ«) (C : F β F) (hc: β x : F, C x = A x - t β’ x) : β x y : F, βͺx, C yβ« = βͺC x, yβ«:= | |
begin | |
intros x y,rw hc y, rw hc x, rw inner_product_space.of_core.inner_sub_left, rw inner_product_space.of_core.inner_smul_left, | |
rw inner_product_space.of_core.inner_sub_right, rw inner_product_space.of_core.inner_smul_right, rw ht, rw ha2, | |
end | |
lemma average_real (A : F β F) (ha2: β x y : F, βͺx, A yβ« = βͺA x, yβ«) : is_R_or_C.conj βͺΟ, A Οβ« = βͺΟ, A Οβ« := | |
begin | |
rw inner_product_space.of_core.inner_conj_sym (A Ο) Ο, rw ha2, | |
end | |
--In this section, we shall prove the uncertainty principle without operators. Instead, we shall mention operator | |
--properties as the hypothesis. | |
section Heisenberg_without_operators | |
theorem Heisenberg_a' (A : F β F) (B : F β F) (ha1: β x y : F, β a b : π, A (a β’ x + b β’ y) = a β’ A x + b β’ A y) | |
(ha2: β x y : F, βͺx, A y β« = βͺA x, yβ«) (hb1: β x y : F, β a b : π, B (a β’ x + b β’ y) = a β’ B x + b β’ B y) | |
(hb2: β x y : F, βͺx, B yβ« = βͺB x, yβ«): | |
is_R_or_C.abs(βͺΟ, A (B Ο)β«)^2 β€ is_R_or_C.re βͺΟ, A(A Ο)β« * is_R_or_C.re βͺΟ, B(B Ο)β«:= | |
begin | |
rw ha2 Ο (B Ο), rw ha2 Ο (A Ο), rw hb2 Ο (B Ο), | |
have fact: is_R_or_C.absβͺA Ο, B Οβ«^2 = is_R_or_C.abs βͺA Ο, B Οβ« * is_R_or_C.abs βͺB Ο, A Οβ«, | |
{rw inner_product_space.of_core.inner_abs_conj_sym, ring,}, rw fact, | |
exact inner_product_space.of_core.inner_mul_inner_self_le (A Ο) (B Ο), | |
end | |
theorem Heisenberg_b' (A : F β F) (B : F β F) (ha1: β x y : F, β a b : π, A (a β’ x + b β’ y) = a β’ A x + b β’ A y) | |
(ha2: β x y : F, βͺx, A y β« = βͺA x, yβ«) (hb1: β x y : F, β a b : π, B (a β’ x + b β’ y) = a β’ B x + b β’ B y) | |
(hb2: β x y : F, βͺx, B yβ« = βͺB x, yβ«): | |
is_R_or_C.abs(βͺΟ, A (B Ο) - B (A Ο)β«)^2 β€ 4 * is_R_or_C.re βͺΟ, A (A Ο)β« * is_R_or_C.re βͺΟ, B (B Ο)β«:= | |
begin | |
rw inner_product_space.of_core.inner_sub_right, | |
have fact: is_R_or_C.abs(βͺA Ο, B Οβ« - βͺB Ο, A Οβ«) β€ 2 * is_R_or_C.abs βͺΟ, A (B Ο)β«, | |
{ | |
calc is_R_or_C.abs(βͺA Ο, B Οβ« - βͺB Ο, A Οβ«) β€ is_R_or_C.abs βͺA Ο, B Οβ« + is_R_or_C.abs βͺB Ο, A Οβ«: by exact abs_min_add F π (βͺA Ο, B Οβ«) (βͺB Ο, A Οβ«) | |
... = is_R_or_C.abs βͺA Ο, B Οβ« + is_R_or_C.abs βͺA Ο, B Οβ«: congr_arg (has_add.add (is_R_or_C.abs (inner (A Ο) (B Ο)))) (eq.symm (inner_product_space.of_core.inner_abs_conj_sym)) | |
... = 2 * is_R_or_C.abs βͺA Ο, B Οβ«: by ring | |
... = 2 * is_R_or_C.abs βͺΟ , A (B Ο)β«: congr_arg (has_mul.mul 2) (congr_arg is_R_or_C.abs (eq.symm (ha2 Ο (B Ο)))), | |
}, | |
have fact': is_R_or_C.abs(βͺA Ο, B Οβ« - βͺB Ο, A Οβ«) ^2 β€ (2 * is_R_or_C.abs βͺΟ, A (B Ο)β«)^2, | |
{ | |
have obs1: 0 β€ is_R_or_C.abs (βͺA Ο, B Οβ« - βͺB Ο, A Οβ«), {exact is_R_or_C.abs_nonneg (inner (A Ο) (B Ο) - inner (B Ο) (A Ο)),}, | |
have obs2: 0 β€ 2 * is_R_or_C.abs(βͺΟ , A (B Ο)β«), {linarith [has_le.le.trans_eq (is_R_or_C.abs_nonneg (inner (A Ο) (B Ο))) (congr_arg is_R_or_C.abs (eq.symm (ha2 Ο (B Ο))))],}, | |
exact pow_le_pow_of_le_left obs1 fact 2, | |
}, | |
ring at fact', have fact1: βͺΟ, A (B Ο)β« - βͺΟ, B (A Ο)β« = βͺA Ο , B Οβ« - βͺB Ο, A Ο β«, {rw ha2 Ο (B Ο), rw hb2 Ο (A Ο),}, | |
rw fact1, | |
have fact'': is_R_or_C.abs(βͺΟ, A (B Ο)β«)^2 β€ is_R_or_C.re βͺΟ, A (A Ο)β« * is_R_or_C.re βͺΟ, B (B Ο)β«, {exact Heisenberg_a' F π A B ha1 ha2 hb1 hb2,}, | |
linarith, | |
end | |
theorem Heisenberg_c' (A : F β F) (B : F β F) (ha1: β x y : F, β a b : π, A (a β’ x + b β’ y) = a β’ A x + b β’ A y) | |
(ha2: β x y : F, βͺx, A y β« = βͺA x, yβ«) (hb1: β x y : F, β a b : π, B (a β’ x + b β’ y) = a β’ B x + b β’ B y) | |
(hb2: β x y : F, βͺx, B yβ« = βͺB x, yβ«) (k l : π) (hk: k = βͺΟ, A Οβ«) (hl: l = βͺΟ, B Οβ«) (Ξ_A : F β F) (Ξ_B : F β F) | |
(ha: β x : F, Ξ_A x = A x - k β’ x) (hb: β x : F, Ξ_B x = B x - l β’ x): | |
is_R_or_C.abs(βͺΟ, A (B Ο) - B (A Ο)β«) β€2 * β₯Ξ_A Οβ₯ * β₯Ξ_B Οβ₯:= | |
begin | |
have hkr: is_R_or_C.conj βͺΟ, A Οβ« = βͺΟ, A Οβ«, {exact average_real F π A ha2,}, | |
have hlr: is_R_or_C.conj βͺΟ, B Οβ« = βͺΟ, B Οβ«, {exact average_real F π B hb2,}, rw β hk at hkr, rw β hl at hlr, | |
have ha1': β x y : F, β a b : π , Ξ_A (a β’ x + b β’ y) = a β’ Ξ_A x + b β’ Ξ_A y, {exact op_linear F π A k ha1 Ξ_A ha,}, | |
have ha2': β x y : F, βͺx, Ξ_A y β« = βͺΞ_A x, yβ«, {exact op_hermitian F π A k hkr ha1 ha2 Ξ_A ha,}, | |
have hb1': β x y : F, β a b : π, Ξ_B (a β’ x + b β’ y) = a β’ Ξ_B x + b β’ Ξ_B y, {exact op_linear F π B l hb1 Ξ_B hb,}, | |
have hb2': β x y : F, βͺx, Ξ_B y β« = βͺΞ_B x , yβ«, {exact op_hermitian F π B l hlr hb1 hb2 Ξ_B hb,}, | |
have fact: βͺΟ, A (B Ο) - B (A Ο)β« = βͺΟ, Ξ_A (Ξ_B Ο) - Ξ_B (Ξ_A Ο)β«, {rw β op_same F π A B k l ha1 ha2 hb1 hb2 Ξ_A ha Ξ_B hb,}, | |
rw fact, have inequality: is_R_or_C.abs(βͺΟ, Ξ_A (Ξ_B Ο ) - Ξ_B (Ξ_A Ο)β«)^2 β€ 4* is_R_or_C.re βͺΟ, Ξ_A(Ξ_A Ο)β« * is_R_or_C.re βͺΟ, Ξ_B(Ξ_B Ο)β«, | |
{exact Heisenberg_b' F π Ξ_A Ξ_B ha1' ha2' hb1' hb2',}, | |
rw ha2' Ο (Ξ_A Ο) at inequality, rw hb2' Ο (Ξ_B Ο) at inequality, | |
have sqr_a: is_R_or_C.re βͺΞ_A Ο, Ξ_A Οβ« = β₯Ξ_A Οβ₯ * β₯Ξ_A Οβ₯, {exact inner_product_space.of_core.inner_self_eq_norm_square (Ξ_A Ο),}, ring at sqr_a, | |
have sqr_b: is_R_or_C.re βͺΞ_B Ο, Ξ_B Οβ« = β₯Ξ_B Οβ₯ * β₯Ξ_B Οβ₯, {exact inner_product_space.of_core.inner_self_eq_norm_square (Ξ_B Ο),}, ring at sqr_b, | |
rw [sqr_a, sqr_b] at inequality, | |
have facta: 0 β€ is_R_or_C.abs βͺΟ, Ξ_A (Ξ_B Ο) - Ξ_B (Ξ_A Ο)β«, {exact is_R_or_C.abs_nonneg _,}, | |
have rk1 : β₯Ξ_A Οβ₯ = real.sqrt (is_R_or_C.re βͺΞ_A Ο, Ξ_A Οβ«), {refl,}, have rk2: 0 β€ β₯Ξ_A Οβ₯, {rw rk1, exact real.sqrt_nonneg _,}, | |
have rk3 : β₯Ξ_B Οβ₯ = real.sqrt (is_R_or_C.re βͺΞ_B Ο, Ξ_B Οβ«), {refl,}, have rk4: 0 β€ β₯Ξ_B Οβ₯, {rw rk3, exact real.sqrt_nonneg _,}, | |
have rk5: 0 β€ β₯Ξ_A Οβ₯ * β₯Ξ_B Οβ₯, {exact mul_nonneg rk2 rk4,}, have rk6 : 0 β€ (2:β) * β₯Ξ_A Οβ₯ * β₯Ξ_B Οβ₯, {linarith,}, | |
have rk7: ((2:β) * β₯Ξ_A Οβ₯ * β₯Ξ_B Οβ₯)^2 = 4 * β₯Ξ_A Οβ₯^2 * β₯Ξ_B Οβ₯^2 , {ring,}, | |
have rk9: 0 β€ is_R_or_C.abs βͺΟ, Ξ_A (Ξ_B Ο) - Ξ_B (Ξ_A Ο)β« ^2, {exact pow_nonneg facta 2,}, | |
have rk10: 0 β€ 4 * β₯Ξ_A Οβ₯^2 * β₯Ξ_B Οβ₯^2, {linarith,}, | |
have factb: real.sqrt (4 * β₯Ξ_A Οβ₯^2 * β₯Ξ_B Οβ₯^2) = 2 * β₯Ξ_A Οβ₯ * β₯Ξ_B Οβ₯, {exact (real.sqrt_eq_iff_sqr_eq rk10 rk6).mpr rk7,}, rw β factb, | |
have rk11: (is_R_or_C.abs βͺΟ, Ξ_A (Ξ_B Ο) - Ξ_B (Ξ_A Ο)β«)^2 = is_R_or_C.abs βͺΟ, Ξ_A (Ξ_B Ο) - Ξ_B (Ξ_A Ο)β«^2, {refl,}, | |
have factc: real.sqrt (is_R_or_C.abs βͺΟ, Ξ_A (Ξ_B Ο) - Ξ_B (Ξ_A Ο)β«^2) = is_R_or_C.abs βͺΟ, Ξ_A (Ξ_B Ο) - Ξ_B (Ξ_A Ο)β«, {exact (real.sqrt_eq_iff_sqr_eq rk9 facta).mpr rk11,}, rw β factc, | |
exact (real.sqrt_le rk9 rk10).mpr inequality, | |
end | |
end Heisenberg_without_operators | |
structure operator := | |
{operator : F β F} | |
{op_lin: β x y : F, β a b : π, operator (a β’ x + b β’ y) = a β’ operator x + b β’ operator y} | |
{op_her: β x y : F, βͺx, operator yβ« = βͺoperator x, yβ«} | |
instance : has_coe_to_fun (operator F π) := | |
β¨_, Ξ» A, A.operatorβ© | |
variables {A : operator F π} {B : operator F π} | |
@[simp] theorem coe_to_inner_A: β x : F, A x = A.operator x:= | |
begin | |
intro x, refl, | |
end | |
@[simp] theorem coe_to_inner_B: β x : F, B x = B.operator x := | |
begin | |
intro x, refl, | |
end | |
lemma op_lin_A: β x y : F, β a b : π, A (a β’ x + b β’ y) = a β’ A x + b β’ A y:= | |
begin | |
intros x y a b, rw coe_to_inner_A _, rw coe_to_inner_A _, rw coe_to_inner_A _, exact A.op_lin x y a b, | |
end | |
lemma op_her_A: β x y : F, βͺx, A yβ« = βͺA x, yβ«:= | |
begin | |
intros x y, rw coe_to_inner_A _, rw coe_to_inner_A _, exact A.op_her x y, | |
end | |
lemma op_lin_B : β x y : F, β a b : π, B (a β’ x + b β’ y) = a β’ B x + b β’ B y := | |
begin | |
intros x y a b, rw coe_to_inner_B _, rw coe_to_inner_B _, rw coe_to_inner_B _, exact B.op_lin x y a b, | |
end | |
lemma op_her_B: β x y : F, βͺx, B yβ« = βͺB x, yβ«:= | |
begin | |
intros x y, rw coe_to_inner_B _, rw coe_to_inner_B _, exact B.op_her x y, | |
end | |
structure is_operator (X : F β F) : Prop := | |
(is_op_lin: β x y : F, β a b : π, X (a β’ x + b β’ y) = a β’ X (x) + b β’ X (y)) | |
(is_op_her: β x y : F, βͺx, X yβ« = βͺX x, yβ«) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment