Theory Proposition1
section ‹ Proposition1 ›
text ‹This theory shows that observers consider their own lightcones to be upright.›
theory Proposition1
imports Cones AxLightMinus
begin
class Proposition1 = Cones + AxLightMinus
begin
lemma lemProposition1:
assumes "x ∈ wline m m"
shows "cone m x p = regularCone x p"
proof -
have mmx: "m sees m at x" using assms by simp
have axlight: "∀ l . ∀ v ∈ lineVelocity l .
(∃ ph . (Ph ph ∧ (tangentLine l (wline m ph) x))) ⟷ (sNorm2 v = 1)"
using AxLightMinus mmx by auto
define axph where axph: "axph = (λ l . λ ph . (Ph ph ∧ (tangentLine l (wline m ph) x)))"
define lhs where lhs: "lhs = cone m x p"
define rhs where rhs: "rhs = regularCone x p"
{ assume "lhs"
hence "∃ l . onLine p l ∧ onLine x l ∧ (∃ ph . axph l ph)"
using lhs axph by auto
then obtain l
where l: "onLine p l ∧ onLine x l ∧ (∃ ph . axph l ph)" by auto
have xonl: "onLine x l" using l by auto
have ponl: "onLine p l" using l by auto
have exph: "∃ ph . axph l ph" using l by auto
then obtain ph where ph: "axph l ph" by auto
have axlight': "∀ v ∈ lineVelocity l . (∃ ph . axph l ph) ⟷ (sNorm2 v = 1)"
using axph axlight by force
hence lv1: "∀ v ∈ lineVelocity l . (sNorm2 v = 1)" using exph by blast
have tterm1: "tl l m ph x" using ph axph by force
hence "∃ p . ( (onLine p l) ∧ (p ≠ x) ∧ (∀ ε > 0 . ∃ δ > 0 . ∀ y ∈ (wline m ph). (
( (y within δ of x) ∧ (y ≠ x) ) ⟶
( ∃ r . ((onLine r (lineJoining x y)) ∧ (r within ε of p))))))"
by auto
then obtain q where q: "onLine q l ∧ q ≠ x" by auto
define qx where qx: "qx = (q ⊖ x)"
hence "(x ≠ q) ∧ onLine x l ∧ onLine q l ∧ (qx = (q ⊖ x))" using q xonl by auto
hence "∃ p q . (p ≠ q) ∧ onLine p l ∧ onLine q l ∧ (qx = (q ⊖ p))" by blast
hence qxl: "qx ∈ drtn l" by auto
define v where v: "v = velocityJoining origin qx"
hence "∃ d ∈ drtn l . v = velocityJoining origin d" using qxl by blast
hence existsv: "v ∈ lineVelocity l" by auto
hence norm2v: "sNorm2 v = 1" using lv1 by auto
hence "∃ v ∈ lineVelocity l . sNorm2 v = 1" using existsv by force
hence "onLine p l ∧ onLine x l ∧ (∃ v ∈ lineVelocity l . sNorm2 v = 1)"
using ponl xonl by auto
hence "∃ l . onLine p l ∧ onLine x l ∧ (∃ v ∈ lineVelocity l . sNorm2 v = 1)"
by blast
hence "regularCone x p" by auto
}
hence l2r: "lhs ⟶ rhs" using rhs by blast
{ assume "rhs"
hence "∃ l . onLine p l ∧ onLine x l ∧ (∃ v ∈ lineVelocity l . sNorm2 v = 1)"
using rhs by auto
then obtain l
where l: "(onLine p l) ∧ (onLine x l) ∧ (∃ v ∈ lineVelocity l . sNorm2 v = 1)"
by blast
have xonl: "onLine x l" using l by auto
have ponl: "onLine p l" using l by auto
have "∃ v ∈ lineVelocity l . sNorm2 v = 1" using l by blast
then obtain v where v: "(v ∈ lineVelocity l) ∧ (sNorm2 v = 1)" by blast
define final
where final: "final = (λ l . onLine p l ∧ onLine x l ∧ (∃ ph . axph l ph))"
have "∃ ph . axph l ph" using v axlight axph by blast
hence "final l" using ponl xonl final by auto
hence "∃ l . final l" by auto
hence "cone m x p" using final axph by auto
hence "lhs" using lhs by auto
}
hence r2l: "rhs ⟶ lhs" using lhs by blast
hence "lhs ⟷ rhs" using l2r by auto
thus ?thesis using lhs rhs by auto
qed
end
end