Theory Axioms
theory Axioms
imports SpaceTime SomeFunc
begin
record Body =
Ph :: "bool"
IOb :: "bool"
class WorldView = SpaceTime +
fixes
W :: "Body ⇒ Body ⇒ 'a Point ⇒ bool" (‹_ sees _ at _›)
and
wvt :: "Body ⇒ Body ⇒ 'a Point ⇒ 'a Point"
assumes
AxWVT: "⟦ IOb m; IOb k ⟧ ⟹ (W k b x ⟷ W m b (wvt m k x))"
and
AxWVTSym: "⟦ IOb m; IOb k ⟧ ⟹ (y = wvt k m x ⟷ x = wvt m k y)"
begin
end
class AxiomPreds = WorldView
begin
fun sqrtTest :: "'a ⇒ 'a ⇒ bool" where
"sqrtTest x r = ((r ≥ 0) ∧ (r*r = x))"
fun cTest :: "Body ⇒ 'a ⇒ bool" where
"cTest m v = ( (v > 0) ∧ ( ∀x y . (
(∃p. (Ph p ∧ W m p x ∧ W m p y)) ⟷ (space2 x y = (v * v)*(time2 x y))
)))"
end
class AxEuclidean = AxiomPreds + Quantities +
assumes
AxEuclidean: "(x ≥ Groups.zero_class.zero) ⟹ (∃r. sqrtTest x r)"
begin
abbreviation sqrt :: "'a ⇒ 'a" where
"sqrt ≡ someFunc sqrtTest"
lemma lemSqrt:
assumes "x ≥ 0"
and "r = sqrt x"
shows "r ≥ 0 ∧ r*r = x"
proof -
have rootExists: "(∃r. sqrtTest x r)" by (metis AxEuclidean assms(1))
hence "sqrtTest x (sqrt x)" by (metis lemSomeFunc)
thus ?thesis using assms(2) by simp
qed
end
class AxLight = WorldView +
assumes
AxLight: "∃m v.( IOb m ∧ (v > (0::'a)) ∧ ( ∀x y.(
(∃p.(Ph p ∧ W m p x ∧ W m p y)) ⟷ (space2 x y = (v * v)*time2 x y)
)))"
begin
end
class AxPh = WorldView + AxiomPreds +
assumes
AxPh: "IOb m ⟹ (∃v. cTest m v)"
begin
abbreviation c :: "Body ⇒ 'a" where
"c ≡ someFunc cTest"
fun lightcone :: "Body ⇒ 'a Point ⇒ 'a Cone" where
"lightcone m v = mkCone v (c m)"
lemma lemCProps:
assumes "IOb m"
and "v = c m"
shows "(v > 0) ∧ (∀x y.((∃p. (Ph p ∧ W m p x ∧ W m p y))
⟷ ( space2 x y = (c m * c m)*time2 x y )))"
proof -
have vExists: "(∃v. cTest m v)" by (metis AxPh assms(1))
hence "cTest m (c m)" by (metis lemSomeFunc)
thus ?thesis using assms(2) by simp
qed
lemma lemCCone:
assumes "IOb m"
and "onCone y (lightcone m x)"
shows "∃p. (Ph p ∧ W m p x ∧ W m p y)"
proof -
have "(∃p.(Ph p ∧ W m p x ∧ W m p y))
⟷ ( space2 x y = (c m * c m)*time2 x y )"
by (simp add: assms(1) lemCProps)
hence ph_exists: "(space2 x y = (c m * c m)*time2 x y) ⟶ (∃p.(Ph p ∧ W m p x ∧ W m p y))"
by metis
define lcmx where "lcmx = lightcone m x"
have lcmx_vertex: "vertex lcmx = x" by (simp add: lcmx_def)
have lcmx_slope: "slope lcmx = c m" by (simp add: lcmx_def)
have "onCone y lcmx ⟶ (space2 x y = (c m * c m)*time2 x y)"
by (metis lcmx_vertex lcmx_slope onCone.simps)
hence "space2 x y = (c m * c m)*time2 x y" by (metis lcmx_def assms(2))
thus ?thesis by (metis ph_exists)
qed
lemma lemCPos:
assumes "IOb m"
shows "c m > 0"
by (metis assms(1) lemCProps)
lemma lemCPhoton:
assumes "IOb m"
shows "∀x y. (∃p. (Ph p ∧ W m p x ∧ W m p y)) ⟷ (space2 x y = (c m * c m)*(time2 x y))"
by (metis assms(1) lemCProps)
end
class AxEv = WorldView +
assumes
AxEv: "⟦ IOb m; IOb k⟧ ⟹ (∃y. (∀b. (W m b x ⟷ W k b y)))"
begin
end
class AxThExp = WorldView + AxPh +
assumes
AxThExp: "IOb m ⟹ (∀x y .(
(∃k.(IOb k ∧ W m k x ∧ W m k y)) ⟷ (space2 x y < (c m * c m) * time2 x y)
))"
begin
end
class AxSelf = WorldView +
assumes
AxSelf: "IOb m ⟹ (W m m x) ⟶ (onAxisT x)"
begin
end
class AxC = WorldView + AxPh +
assumes
AxC: "IOb m ⟹ c m = 1"
begin
end
class AxSym = WorldView +
assumes
AxSym: "⟦ IOb m; IOb k ⟧ ⟹
(W m e x ∧ W m f y ∧ W k e x'∧ W k f y' ∧
tval x = tval y ∧ tval x' = tval y' )
⟶ (space2 x y = space2 x' y')"
begin
end
class AxLines = WorldView +
assumes
AxLines: "⟦ IOb m; IOb k; collinear x p q ⟧ ⟹
collinear (wvt k m x) (wvt k m p) (wvt k m q)"
begin
end
class AxPlanes = WorldView +
assumes
AxPlanes: "⟦ IOb m; IOb k ⟧ ⟹
(coplanar e x y z ⟶ coplanar (wvt k m e) (wvt k m x) (wvt k m y) (wvt k m z))"
begin
end
class AxCones = WorldView + AxPh +
assumes
AxCones: "⟦ IOb m; IOb k ⟧ ⟹
( onCone x (lightCone m v) ⟶ onCone (wvt k m x) (lightcone k (wvt k m v)))"
begin
end
class AxTime = WorldView +
assumes
AxTime: "⟦ IOb m; IOb k ⟧
⟹( x ≲ y ⟶ wvt k m x ≲ wvt k m y )"
begin
end
end