Theory Gupta_Neutral
theory Gupta_Neutral
imports
Tarski_Neutral
begin
section "Gupta inspired variant of Tarski - Geometry"
subsection "Axioms - neutral dimension less"
locale Gupta_neutral_dimensionless =
fixes GPA GPB GPC :: 'p
and BetG :: "'p ⇒ 'p ⇒ 'p ⇒ bool"
and CongG :: "'p ⇒ 'p ⇒ 'p ⇒ 'p ⇒ bool"
assumes cong_pseudo_reflexivityG: "∀ a b.
CongG a b b a"
and cong_inner_transitivityG: "∀ a b p q r s.
CongG a b p q ∧
CongG a b r s
⟶
CongG p q r s"
and cong_identityG: "∀ a b c.
CongG a b c c
⟶
a = b"
and segment_constructionG: "∀ a b c q.
∃x. (BetG q a x ∧ CongG a x b c)"
and five_segmentG: "∀ a b c d a' b' c' d'.
a ≠ b ∧
BetG a b c ∧
BetG a' b' c'∧
CongG a b a' b' ∧
CongG b c b' c' ∧
CongG a d a' d' ∧
CongG b d b' d'
⟶
CongG c d c' d'"
and between_symmetryG: "∀ a b c.
BetG a b c
⟶
BetG c b a"
and between_inner_transitivityG: "∀ a b c d.
BetG a b d ∧
BetG b c d
⟶
BetG a b c"
and inner_paschG: "∀ a b c p q.
BetG a p c ∧
BetG b q c ∧
a ≠ p ∧
c ≠ p ∧
b ≠ q ∧
c ≠ q ∧
¬ (BetG a b c ∨ BetG b c a ∨ BetG c a b)
⟶
(∃ x. BetG p x b ∧ BetG q x a)"
and lower_dimG: "¬ (BetG GPA GPB GPC ∨ BetG GPB GPC GPA ∨ BetG GPC GPA GPB)"
context Gupta_neutral_dimensionless
begin
subsection "Definitions"
definition ColG :: "'p⇒'p⇒'p⇒bool" where
"ColG A B C ≡ BetG A B C ∨ BetG B C A ∨ BetG C A B"
subsection "Propositions"
lemma g2_1:
shows "CongG A B A B"
using cong_inner_transitivityG cong_pseudo_reflexivityG by blast
lemma g2_2:
assumes "CongG A B C D"
shows "CongG C D A B"
using assms cong_inner_transitivityG g2_1 by blast
lemma cong_inner_transitivityT:
assumes "CongG A B C D" and
"CongG A B E F"
shows "CongG C D E F"
using assms(1) assms(2) cong_inner_transitivityG by blast
lemma g2_3:
assumes "CongG A B C D"
shows "CongG B A C D"
using cong_inner_transitivityT assms cong_pseudo_reflexivityG by blast
lemma g2_4:
assumes "CongG A B C D"
shows "CongG A B D C"
using assms g2_2 g2_3 by presburger
lemma g2_5_a:
assumes "CongG A B C D" and
"A = B"
shows "C = D"
using cong_identityG assms(1) assms(2) g2_2 by blast
lemma g2_5_b:
assumes "CongG A B C D" and
"C = D"
shows "A = B"
using assms(1) assms(2) cong_identityG by blast
lemma g2_5:
assumes "CongG A B C D"
shows "A = B ⟷ C = D"
using assms cong_identityG g2_5_a by blast
lemma g2_6:
shows "BetG A B B ∧ CongG B B A A"
using cong_identityG segment_constructionG by blast
lemma g2_7:
assumes "CongG A B A' B'" and
"CongG B C B' C'" and
"BetG A B C" and
"BetG A' B' C'"
shows "CongG A C A' C'"
proof (cases "A = B")
case True
thus ?thesis
using assms(1) assms(2) g2_5_a by blast
next
case False
have "BetG A' A A"
by (simp add: g2_6)
moreover have "CongG A A A' A'"
using g2_6 by auto
ultimately have "CongG B A B' A'"
using assms(1) g2_3 g2_4 by blast
thus ?thesis
by (meson False ‹CongG A A A' A'› assms(2) assms(3) assms(4) five_segmentG g2_3 g2_4)
qed
lemma g2_8:
assumes "BetG A B C" and
"BetG A B D" and
"CongG B C B D" and
"A ≠ B"
shows "C = D"
by (meson assms(1) assms(2) assms(3) assms(4) five_segmentG g2_1 g2_5_b)
lemma g2_9:
assumes "BetG A B A"
shows "BetG C A B"
using assms between_inner_transitivityG g2_6 by blast
lemma g2_10:
assumes "BetG A B A"
shows "BetG C B A"
by (simp add: assms g2_9)
lemma g2_11:
assumes "BetG A B A" and
"A ≠ B"
shows "∃ D. BetG C D C ∧ BetG D C D ∧ C ≠ D"
by (metis(full_types) assms(1) assms(2) between_symmetryG g2_8 g2_9 segment_constructionG)
lemma g2_12:
assumes "BetG A B A"
shows "BetG A B C"
using assms between_symmetryG g2_10 by blast
lemma g2_13:
assumes "BetG A B A" and
"A ≠ B"
shows "BetG C B C"
by (metis assms(1) assms(2) between_symmetryG g2_10 g2_8 segment_constructionG)
lemma g2_14_1:
assumes "BetG A B A" and
"A ≠ B"
shows "BetG C D C"
by (metis assms(1) assms(2) g2_13 g2_9)
lemma g2_14_2:
assumes "BetG A B A" and
"A ≠ B"
shows "BetG D C D"
using assms(1) assms(2) g2_14_1 by blast
lemma g2_14:
assumes "BetG A B A" and
"A ≠ B"
shows "BetG C D C ∧ BetG D C D"
using assms(1) assms(2) g2_14_2 by blast
lemma g2_15:
assumes "BetG A B A" and
"A ≠ B"
shows "BetG C D E"
using assms(1) assms(2) g2_14 g2_9 by blast
lemma g2_16:
assumes "¬ BetG C D E" and
"BetG A B A"
shows "A = B"
by (meson assms(1) assms(2) g2_15)
lemma between_identityT:
assumes "BetG A B A"
shows "A = B"
using lower_dimG assms g2_16 by blast
lemma cong_trivial_identityT:
shows "CongG A A B B"
by (simp add: g2_6)
lemma l2_11T:
assumes "BetG A B C" and
"BetG A' B' C'" and
"CongG A B A' B'" and
"CongG B C B' C'"
shows "CongG A C A' C'"
using assms(1) assms(2) assms(3) assms(4) g2_7 by blast
lemma construction_uniquenessT:
assumes "Q ≠ A" and
"BetG Q A X" and
"CongG A X B C" and
"BetG Q A Y" and
"CongG A Y B C"
shows "X = Y"
by (meson assms(1) assms(2) assms(3) assms(4) assms(5) cong_inner_transitivityG g2_2 g2_8)
lemma between_trivialT:
shows "BetG A B B"
using g2_6 by auto
lemma bet_decG:
shows "BetG A B C ∨ ¬ BetG A B C"
by simp
lemma col_decG:
shows "ColG A B C ∨ ¬ ColG A B C"
by simp
lemma inner_paschT:
assumes "BetG A P C" and
"BetG B Q C"
shows "∃ x. BetG P x B ∧ BetG Q x A"
proof -
{
assume "A ≠ P"
{
assume "P ≠ C"
{
assume "B ≠ Q"
{
assume "Q ≠ C"
have "ColG A B C ⟶ ?thesis"
proof -
have "BetG A B C ⟶ ?thesis"
using assms(2) between_inner_transitivityG between_symmetryG
between_trivialT by blast
moreover have "BetG B C A ⟶ ?thesis"
using assms(1) assms(2) between_inner_transitivityG between_symmetryG by blast
moreover have "BetG C A B ⟶ ?thesis"
by (meson assms(1) between_inner_transitivityG between_symmetryG
between_trivialT)
ultimately show ?thesis
using ColG_def by presburger
qed
moreover have "¬ ColG A B C ⟶ ?thesis"
using ColG_def ‹A ≠ P› ‹B ≠ Q› ‹P ≠ C› ‹Q ≠ C› assms(1) assms(2)
inner_paschG by blast
ultimately have ?thesis
by blast
}
hence ?thesis
using assms(1) between_symmetryG between_trivialT by blast
}
hence ?thesis
using between_symmetryG g2_6 by blast
}
hence ?thesis
using assms(2) between_symmetryG g2_6 by blast
}
thus ?thesis
using between_symmetryG g2_6 by blast
qed
end
end