John, I succeeded at another set theory task in my miz3 Hilbert
axiomatic geometry formalization (almost 1000 lines below), rewriting
Between (A,X,B) as X IN open_int (A,B), via my definition
let Interval_DEF = new_definition
`!A B X. open_int (A,B) X <=> Between (A,X,B)`;;
My convexity result below really loses clarity if stated with Between:
IntervalsAreConvex_THM : thm =
|- !A B C. B IN open_int (A,C) ==> open_int (A,B) SUBSET open_int (A,C)
--
Best,
Bill
(* Paste in these 4 commands
cd ~/hol_light; ocaml
#use "hol.ml";;
#load "unix.cma";;
loadt "miz3/miz3.ml";;
and then paste in the following file. *)
(* ================================================================= *)
(* HOL Light Hilbert geometry axiomatic proofs. *)
(* ================================================================= *)
(* Thanks to Mizar folks who wrote an influential language I was able
to learn, Freek Wiedijk, who wrote the miz3 port of Mizar to HOL
Light, and especially John Harrison, who came up with the entire
framework here of porting my axiomatic proofs to HOL Light. *)
horizon := 0;;
new_type("point",0);;
new_type_abbrev("point_set",`:point->bool`);;
new_constant("Between",`:point#point#point->bool`);;
new_constant("===",`:point#point->point#point->bool`);;
new_constant("Line",`:point_set->bool`);;
parse_as_infix("===",(12, "right"));;
parse_as_infix("cong",(12, "right"));;
parse_as_infix("same_side",(12, "right"));;
parse_as_infix("int_angle",(12, "right"));;
let cong_DEF = new_definition
`A,B,C cong X,Y,Z <=>
A,B === X,Y /\ A,C === X,Z /\ B,C === Y,Z`;;
let is_ordered_DEF = new_definition
`is_ordered (A,B,C,D) <=>
Between (A,B,C) /\ Between (A,B,D) /\ Between (A,C,D) /\ Between (B,C,D)`;;
let Collinear_DEF = new_definition
`Collinear(A, B, C) <=>
?l. Line l /\ A IN l /\ B IN l /\ C IN l`;;
let same_side_DEF = new_definition
`A,B same_side l <=>
Line l /\ ~(?X. (X IN l) /\ Between(A, X, B))`;;
let Reflexive_relation_DEF = new_definition
`Reflexive_Property <=>
!l A. Line l /\ ~(A IN l) ==> A,A same_side l`;;
let Symmetric_relation_DEF = new_definition
`Symmetric_Property <=>
!l A B. Line l /\ ~(A IN l) /\ ~(B IN l) ==>
A,B same_side l ==> B,A same_side l`;;
let Transitive_relation_DEF = new_definition
`Transitive_Property <=>
!l A B C.
Line l /\ ~(A IN l) /\ ~(B IN l) /\ ~(C IN l) ==>
A,B same_side l /\ B,C same_side l ==> A,C same_side l`;;
let Ray_DEF = new_definition
`!A B X. ray(A, B) X <=> ~(A = B) /\ Collinear(A, B, X) /\ ~Between(X, A,
B)`;;
(*
exec GOAL_TAC;
p();;
let Angle_DEF = new_definition
`!A O B. Angle(A, O, B) = if Collinear(A, O, B) then {} else
{ray(O, A), ray(O, B)}`;;
*)
let InteriorAngle_DEF = new_definition
`!A O B P.
P int_angle A,O,B <=> ~Collinear(A, O, B) /\ ?a b.
Line a /\ O IN a /\ A IN a /\ Line b /\ O IN b /\ B IN b /\
~(P IN a) /\ ~(P IN b) /\ P,B same_side a /\ P,A same_side b`;;
let Interval_DEF = new_definition
`!A B X. open_int (A,B) X <=> Between (A,X,B)`;;
(* ------------------------------------------------------------------------- *)
(* The axioms. *)
(* ------------------------------------------------------------------------- *)
let I1 = new_axiom
`!A B. ~(A = B) ==> ?! l. Line l /\ A IN l /\ B IN l`;;
let I2 = new_axiom
`!l. ? A B. Line l /\ A IN l /\ B IN l /\ ~(A = B)`;;
let I3 = new_axiom
`?A B C. ~(A = B) /\ ~(A = C) /\ ~(B = C) /\
~Collinear(A, B, C)`;;
let B1 = new_axiom
`! A B C. Between(A, B, C) ==> ~(A = B) /\ ~(A = C) /\ ~(B = C) /\
Between(C, B, A) /\ Collinear(A, B, C)`;;
let B2 = new_axiom
`! A B. ~(A = B) ==> ?C. Between(A, B, C)`;;
(*
let B3 = new_axiom
`!A B C. ~(A = B) /\ ~(A = C) /\ ~(B = C) /\ Collinear(A, B, C)
==> (Between(A, B, C) \/ Between(B, C, A) \/ Between(C, A, B)) /\
~(Between(A, B, C) /\ Between(B, C, A)) /\
~(Between(A, B, C) /\ Between(C, A, B)) /\
~(Between(B, C, A) /\ Between(C, A, B))`;;
*)
let B3 = new_axiom
`!A B C. ~(A = B) /\ ~(A = C) /\ ~(B = C) /\ Collinear (A,B,C)
==> (Between (A,B,C) \/ Between (B,C,A) \/ Between (C,A,B)) /\
~(Between (A,B,C) /\ Between (B,C,A)) /\
~(Between (A,B,C) /\ Between (C,A,B)) /\
~(Between (B,C,A) /\ Between (C,A,B))`;;
let B4 = new_axiom
`!l A B C. Line l /\ ~Collinear(A, B, C) /\
~(A IN l) /\ ~(B IN l) /\ ~(C IN l) /\
(?X. X IN l /\ Between(A, X, C)) ==>
(?Y. Y IN l /\ Between(A, Y, B)) \/ (?Y. Y IN l /\ Between(B, Y, C))`;;
let BiggerThanSingleton_THM = thm `;
let p be A->bool;
let x be A;
assume x IN p [H1];
assume ~(p = {x}) [H2];
thus ?a . a IN p /\ ~(a = x)
proof
{x} SUBSET p by H1, SING_SUBSET;
~(p SUBSET {x}) by -, H2, SUBSET_ANTISYM;
consider a such that
a IN p /\ ~(a IN {x}) [X1] by -, SUBSET;
~(a = x) by -, IN_SING;
qed by -, X1`;;
let DisjointOneNotOther_THM = thm `;
let x be A;
let l m be A->bool;
assume l INTER m = {} [H1];
assume x IN m [H2];
thus ~(x IN l)
proof
assume (x IN l);
x IN l INTER m by -, H2, IN_INTER;
F by -, NOT_IN_EMPTY, H1;
qed by -`;;
let IntersectionSingletonOneNotOther_THM = thm `;
let e x be A;
let l m be A->bool;
assume l INTER m = {x} [H1];
assume e IN l [H2];
assume ~(e = x) [H3];
thus ~(e IN m)
proof
assume e IN m;
e IN l INTER m by H2, -, IN_INTER;
e = x by -, H1, IN_SING;
F by -, H3;
qed by -`;;
let EquivIntersectionHelp_THM = thm `;
let a x be A;
let l m be A->bool;
assume l INTER m = {x} [H1];
assume a IN m DELETE x [H2];
thus ~(a IN l)
proof
a IN m /\ ~(a = x) [X1] by H2, IN_DELETE;
qed by -, H1, H2, IntersectionSingletonOneNotOther_THM`;;
let DoubleSubsetEqual_THM = thm `;
let s t be A->bool;
assume s SUBSET t [H1];
assume t SUBSET s [H2];
thus s = t
proof
!x:A. x IN s ==> x IN t [sSt] by H1, SUBSET;
!x:A. x IN t ==> x IN s [tSs] by H2, SUBSET;
!x:A. x IN s <=> x IN t [sEt] by sSt, tSs;
s = t by -, EXTENSION;
qed by -`;;
let CollinearSymmetry_THM = thm `;
let A B C be point;
assume Collinear (A, B, C) [H1];
thus Collinear (A, C, B) /\ Collinear(B, A, C) /\ Collinear(B, C, A) /\
Collinear(C, A, B) /\ Collinear(C, B, A)
proof
consider l such that
Line l /\ A IN l /\ B IN l /\ C IN l by H1, Collinear_DEF;
qed by -, Collinear_DEF`;;
let OnePointImpliesAnother_THM = thm `;
let P be point;
thus ?Q:point. ~(Q = P)
proof
consider A B C such that
~(A = B) /\ ~(A = C) /\ ~(B = C) /\ ~Collinear(A, B, C) [X1] by I3;
cases;
suppose B = P;
~(A = B) by -, X1;
qed by -;
suppose ~(B = P);
qed by -;
end`;;
let ExistsPointOffLine_THM = thm `;
let l be point_set;
assume Line l [H1];
thus ?Q:point. ~(Q IN l)
proof
consider A B C such that
~(A = B) /\ ~(A = C) /\ ~(B = C) /\ ~Collinear(A, B, C) [useI3] by I3;
cases;
suppose ~(A IN l) \/ ~(B IN l) \/ ~(C IN l);
qed by -;
suppose (A IN l) /\ (B IN l) /\ (C IN l);
Collinear(A, B, C) by H1, -, Collinear_DEF;
F by -, useI3;
qed by -;
end`;;
let B4'_THM = thm `;
let l be point_set;
let A B C be point;
assume Line l [H0];
assume ~Collinear(A, B, C) /\ ~(A IN l) /\ ~(B IN l) /\ ~(C IN l) [H1];
assume A,B same_side l /\ B,C same_side l [H2];
thus A,C same_side l
proof
~(?Y. Y IN l /\ Between(A, Y, B)) /\
~(?Y. Y IN l /\ Between(B, Y, C)) ==>
~(?X. X IN l /\ Between(A, X, C)) by H0, H1, B4;
qed by -, H1, H2, same_side_DEF`;;
let BetweenLinear_THM = thm `;
let A B C be point;
let m be point_set;
assume Line m /\ A IN m /\ C IN m [H1];
assume Between(A, B, C) \/ Between(B, C, A) \/ Between(C, A, B) [H2];
thus B IN m
proof
~(A = C) /\
(Collinear(A,B,C) \/ Collinear(B,C,A) \/ Collinear(C,A,B)) [X1] by H2, B1;
consider l such that
Line l /\ A IN l /\ B IN l /\ C IN l [X2] by -, Collinear_DEF;
l = m by X1, -, H2, H1, I1;
qed by -, X2`;;
let CollinearLinear_THM = thm `;
let A B C be point;
let m be point_set;
assume Line m /\ A IN m /\ C IN m [H1];
assume Collinear(A,B,C) \/ Collinear(B,C,A) \/ Collinear(C,A,B) [H2];
assume ~(A = C) [H3];
thus B IN m
proof
consider l such that
Line l /\ A IN l /\ B IN l /\ C IN l [X1] by H2, Collinear_DEF;
l = m by H3, -, H1, I1;
qed by -, X1`;;
let NonCollinearImpliesDistinct_THM = thm `;
let A B C be point;
assume ~Collinear(A, B, C) [H1];
thus ~(A = B) /\ ~(A = C) /\ ~(B = C)
proof
cases;
suppose A = B /\ B = C [C1];
consider Q such that ~(Q = A) by OnePointImpliesAnother_THM;
consider l such that Line l /\ A IN l /\ Q IN l by -, I1;
Collinear(A, B, C) by -, C1, Collinear_DEF;
qed by -, H1;
suppose ~(A = B) /\ B = C [C2];
consider l such that Line l /\ A IN l /\ B IN l by -, I1;
Collinear(A, B, C) by -, C2, Collinear_DEF;
qed by -, H1;
suppose ~(B = C) [C3];
consider l such that Line l /\ B IN l /\ C IN l [X1] by C3, I1;
~(A = B) [U]
proof
assume A = B;
Collinear(A, B, C) by -, X1, Collinear_DEF;
qed by -, H1;
~(A = C) [V]
proof
assume A = C;
Collinear(A, B, C) by -, X1, Collinear_DEF;
qed by -, H1;
qed by U, V, C3;
end`;;
let OriginInRay_THM = thm `;
let O Q be point;
assume ~(Q = O) [H1];
thus O IN ray(O, Q)
proof
~Between (O,O,Q) [OOQ] by B1;
consider l such that
Line l /\ O IN l /\ Q IN l by H1, I1;
Collinear (O,Q,O) by -, Collinear_DEF;
qed by H1, -, OOQ, IN, Ray_DEF`;;
let Line01infinity_THM = thm `;
let X be point;
let l m be point_set;
assume Line l /\ Line m [H0];
assume ~(l = m) [H1];
assume X IN l /\ X IN m [H2];
thus l INTER m = {X}
proof
(l INTER m = {X}) \/ ~(l INTER m = {X});
assume ~(l INTER m = {X}) [H3];
X IN l INTER m by H2, IN_INTER;
consider A such that
A IN l INTER m /\ ~(A = X) [X1] by -, H3, BiggerThanSingleton_THM;
A IN l /\ X IN l /\ A IN m /\ X IN m by H0, -, H2, IN_INTER;
l = m by H0, -, X1, I1;
F by -, H1;
qed by -`;;
let EquivIntersection_THM = thm `;
let A B X be point;
let l m be point_set;
assume Line l /\ Line m [H0];
assume l INTER m = {X} [H1];
assume A IN m DELETE X /\ B IN m DELETE X [H2];
assume ~ Between(A, X, B) [H3];
thus ~(A IN l) /\ ~(B IN l) /\ A,B same_side l
proof
A IN m /\ ~(A = X) [X1] by H2, IN_DELETE;
B IN m /\ ~(B = X) [X2] by H2, IN_DELETE;
~(A IN l) /\ ~(B IN l) [X3] by H1, H2, EquivIntersectionHelp_THM;
A,B same_side l [X4]
proof
assume ~(A,B same_side l);
consider G such that
(G IN l) /\ Between(A, G, B) [X5] by H0, -, same_side_DEF;
~(A = B) /\ Collinear(A, G, B) [X6] by -, B1;
consider k such that
Line k /\ A IN k /\ G IN k /\ B IN k [X7] by -, Collinear_DEF;
k = m by H0, -, X1, X2, X6, I1;
G IN l INTER m by -, X5, X7, IN_INTER;
G = X by -, H1, IN_SING;
Between(A, X, B) by -, X5;
F by -, H3;
qed by -;
qed by X3, X4`;;
let SameSideReflexiveRelation_THM = thm `;
thus Reflexive_Property
proof
!l A. Line l ==> A,A same_side l
proof
let l be point_set;
let A be point;
assume Line l [H0];
~(?X. (X IN l) /\ Between(A, X, A)) by H0, B1;
qed by H0, -, same_side_DEF;
qed by -, Reflexive_relation_DEF`;;
let SameSideSymmetricRelation_THM = thm `;
thus Symmetric_Property
proof
!l A B. Line l /\ ~(A IN l) /\ ~(B IN l) ==>
A,B same_side l ==> B,A same_side l
proof
let l be point_set;
let A B be point;
assume Line l [H0];
assume A,B same_side l [H1];
assume ~(A IN l) /\ ~(B IN l);
~(?X. (X IN l) /\ Between(A, X, B)) by H0, H1, same_side_DEF;
~(?X. (X IN l) /\ Between(B, X, A)) by -, B1;
qed by H0, -, same_side_DEF;
qed by -, Symmetric_relation_DEF`;;
let SameSideTransitiveRelation_THM = thm `;
thus Transitive_Property
proof
!l A B C.
Line l /\ ~(A IN l) /\ ~(B IN l) /\ ~(C IN l) ==>
A,B same_side l /\ B,C same_side l ==> A,C same_side l
proof
let l be point_set;
let A B C be point;
assume Line l [lLine];
assume ~(A IN l) /\ ~(B IN l) /\ ~(C IN l) [H0];
assume A,B same_side l [H1];
assume B,C same_side l [H2];
A,C same_side l
proof
~Collinear(A, B, C) \/ Collinear(A, B, C);
cases by -;
suppose ~Collinear(A, B, C);
qed by lLine, -, H0, H1, H2, B4'_THM;
suppose Collinear(A, B, C) [Coll];
cases;
suppose A = B \/ A = C \/ B = C;
qed by lLine, -, H2, H0, SameSideReflexiveRelation_THM,
Reflexive_relation_DEF, H1;
suppose ~(A = B) /\ ~(A = C) /\ ~(B = C) [Distinct];
consider m such that
Line m /\ A IN m /\ C IN m [ACm] by Distinct, I1;
~(l = m) [not_lm] by ACm, H0;
cases;
suppose l INTER m = {} [Disjoint];
!X. Between(A, X, C) ==> ~(X IN l)
proof
let X be point;
assume Between(A, X, C);
X IN m by lLine, -, ACm, BetweenLinear_THM;
~(X IN l) by -, Disjoint, DisjointOneNotOther_THM;
qed by -;
qed by lLine, -, same_side_DEF;
suppose ~(l INTER m = {}) [NotDisjoint];
consider X such that
X IN l INTER m by NotDisjoint, MEMBER_NOT_EMPTY;
X IN l /\ X IN m [Xin_lm] by -, IN_INTER;
l INTER m = {X} [lmX] by lLine, ACm, not_lm, -,
Line01infinity_THM;
consider E such that
E IN l /\ ~(E = X) [Einl_X] by Xin_lm, I2;
~(E IN m) [notEm] by lmX, Einl_X,
IntersectionSingletonOneNotOther_THM;
~(E = B) by Einl_X, H0;
consider B' such that
Between(E, B, B') by -, B2;
Between(B', B, E) [B'BE] by -, B1;
~(B' = E) /\ ~(B = E) /\ ~(B' = B) /\ Collinear(B', B, E)
[B'BEcol] by -, B1;
consider n such that
Line n /\ E IN n /\ B' IN n [EB'n] by -, I1;
B IN n [Bn] by EB'n, B'BE, BetweenLinear_THM;
~(l = n) [not_ln] by H0, -;
l INTER n = {E} [lnE] by lLine, not_ln, EB'n, Einl_X,
Line01infinity_THM;
~(B' IN l) [notB'l] by -, EB'n, B'BEcol,
IntersectionSingletonOneNotOther_THM;
~ Between(B, E, B') [BEB'] by B'BEcol, B'BE, B3;
B' IN n DELETE E /\ B IN n DELETE E by EB'n, Bn, B'BEcol,
IN_DELETE;
B, B' same_side l [Bsim_lB'] by lLine, EB'n, lnE, -, BEB',
EquivIntersection_THM;
~(m = n) [not_mn] by EB'n, notEm;
B IN m by ACm, Coll, Distinct, CollinearLinear_THM;
m INTER n = {B} [mn_B] by ACm, EB'n, -, Bn, not_mn,
Line01infinity_THM;
~(A IN n) [not_An] by -, ACm, Distinct,
IntersectionSingletonOneNotOther_THM;
~Collinear(A, B, B')
proof
assume Collinear(A, B, B');
consider alpha such that
Line alpha /\ A IN alpha /\ B IN alpha /\ B' IN alpha
[ABB'alpha] by -, Collinear_DEF;
alpha = n by B'BEcol, ABB'alpha, EB'n, Bn, I1;
A IN n by -, ABB'alpha;
qed by -, not_An;
A,B' same_side l [Asim_lB'] by lLine, -, H0, notB'l, H1,
Bsim_lB', B4'_THM;
~(C IN n) [notCn] by mn_B, ACm, Distinct,
IntersectionSingletonOneNotOther_THM;
C,B same_side l [Csim_lB] by lLine, H0, H2,
SameSideSymmetricRelation_THM,
Symmetric_relation_DEF;
~Collinear(C, B, B')
proof
assume Collinear(C, B, B');
consider alpha such that
Line alpha /\ C IN alpha /\ B IN alpha /\ B' IN alpha
[CBB'alpha] by -, Collinear_DEF;
alpha = n by -, EB'n, B'BEcol, CBB'alpha, Bn, I1;
C IN n by -, CBB'alpha;
qed by -, notCn;
C,B' same_side l by lLine, -, H0, notB'l, Csim_lB, Bsim_lB',
B4'_THM;
B',C same_side l [B'sim_C] by lLine, H0, notB'l, -,
SameSideSymmetricRelation_THM,
Symmetric_relation_DEF;
~(B' IN m) [notB'm] by mn_B, EB'n, B'BEcol,
IntersectionSingletonOneNotOther_THM;
~Collinear(A, B', C)
proof
assume Collinear(A, B', C);
consider alpha such that
Line alpha /\ A IN alpha /\ B' IN alpha /\ C IN alpha
[AB'Calpha] by -, Collinear_DEF;
alpha = m by Distinct, -, ACm, I1;
B' IN m by -, AB'Calpha;
F by -, notB'm;
qed by -;
A, C same_side l by lLine, -, H0, notB'l, Asim_lB', B'sim_C,
B4'_THM;
qed by -;
end;
end;
end;
qed by -;
qed by -, Transitive_relation_DEF`;;
let SameSideEquivalenceRelation_THM = thm `;
thus Reflexive_Property /\ Symmetric_Property /\ Transitive_Property
proof
qed by SameSideReflexiveRelation_THM, SameSideSymmetricRelation_THM,
SameSideTransitiveRelation_THM`;;
let ConverseCrossbar_THM = thm `;
let O A B G be point;
assume ~Collinear(A, O, B) [H1];
assume Between(A, G, B) [H2];
thus G int_angle A,O,B
proof
~(A = O) /\ ~(A = B) /\ ~(O = B) [Distinct] by H1,
NonCollinearImpliesDistinct_THM;
consider a such that Line a /\ O IN a /\ A IN a
[aOA] by -, I1;
consider b such that Line b /\ O IN b /\ B IN b [bOB] by
Distinct, I1;
consider l such that Line l /\ A IN l /\ B IN l [lAB] by
Distinct, I1;
~(B IN a) by H1, aOA, Collinear_DEF;
~(a = l) by -, lAB;
a INTER l = {A} [alA] by -, aOA, lAB,
Line01infinity_THM;
~(A = G) /\ ~(A = B) /\ ~(G = B) /\ Between(B, G, A) /\ Collinear(A, G, B)
[X1] by H2,
B1;
~ Between(G, A, B) [notGAB] by -, H2, B3,
B1;
G IN l [Ginl] by lAB, H2,
BetweenLinear_THM;
~(G IN a) [notGina] by alA, Ginl, X1,
IntersectionSingletonOneNotOther_THM;
G IN l DELETE A /\ B IN l DELETE A by Ginl, lAB, X1, IN_DELETE;
G,B same_side a [Gsim_aB] by aOA, lAB, alA, -, notGAB,
EquivIntersection_THM;
:: same argument shows G,A same_side b
~(A IN b) by H1, bOB, Collinear_DEF;
~(b = l) by -, lAB;
b INTER l = {B} [blB] by -, bOB, lAB,
Line01infinity_THM;
~ Between(G, B, A) [notGBA] by H2, B1, B3;
~(G IN b) [notGinb] by blB, Ginl, X1,
IntersectionSingletonOneNotOther_THM;
G IN l DELETE B /\ A IN l DELETE B by Ginl, lAB, X1, IN_DELETE;
G,A same_side b [Gsim_bA] by bOB, lAB, blB, -, notGBA,
EquivIntersection_THM;
qed by H1, aOA, bOB, notGina, notGinb, Gsim_aB, Gsim_bA, InteriorAngle_DEF`;;
let InteriorHelp_THM = thm `;
let A O B P be point;
let a b be point_set;
assume Line a /\ O IN a /\ A IN a /\ Line b /\ O IN b /\ B IN b
[aOAbOB];
assume P int_angle A,O,B [P_AOB];
thus ~(P IN a) /\ ~(P IN b) /\ P,B same_side a /\ P,A same_side b
proof
consider alpha beta such that ~Collinear (A,O,B) /\
Line alpha /\ O IN alpha /\ A IN alpha /\
Line beta /\ O IN beta /\B IN beta /\
~(P IN alpha) /\ ~(P IN beta) /\
P,B same_side alpha /\ P,A same_side beta [exists] by P_AOB,
InteriorAngle_DEF;
~(A = O) /\ ~(A = B) /\ ~(O = B) [Distinct] by -,
NonCollinearImpliesDistinct_THM;
alpha = a /\ beta = b by -, aOAbOB, exists, I1;
qed by -, exists`;;
let WholeRayInterior_THM = thm `;
let A O B X P be point;
assume ~Collinear(A, O, B) [H1];
assume X int_angle A,O,B [H2];
assume P IN ray(O,X) [H3];
assume ~(P = O) [H4];
thus P int_angle A,O,B
proof
~(A = O) /\ ~(A = B) /\ ~(O = B) [Distinct] by H1,
NonCollinearImpliesDistinct_THM;
consider a such that Line a /\ O IN a /\ A IN a [a_OA] by Distinct,
I1;
consider b such that Line b /\ O IN b /\ B IN b [b_OB] by Distinct,
I1;
~(X IN a) /\ ~(X IN b) /\ X,B same_side a /\ X,A same_side b [XintAOB] by
H2, a_OA, b_OB, InteriorHelp_THM;
~(O = X) /\ Collinear(O, X, P) /\ ~ Between(P, O, X) [P_OX] by H3, IN,
Ray_DEF;
consider x such that Line x /\ O IN x /\ X IN x [x_OX] by P_OX, I1;
:: P IN x [Pin_x] by x_OX, P_OX, Collinear_DEF, CollinearLinear_THM;
P IN x [Pin_x] by x_OX, P_OX, CollinearLinear_THM;
P IN x DELETE O [Pin_x_O] by Pin_x, H4, IN_DELETE;
X IN x DELETE O [Xin_x_O] by x_OX, P_OX, IN_DELETE;
~(x = a) /\ ~(x = b) [x_not_ab] by XintAOB, x_OX;
a INTER x = {O} /\ b INTER x = {O} [axb_intO] by x_not_ab, x_OX, a_OA,
b_OB, Line01infinity_THM;
~(P IN a) /\ P,X same_side a [Psim_aX] by a_OA, x_OX, axb_intO, Pin_x_O,
Xin_x_O, P_OX, EquivIntersection_THM;
~(P IN b) /\ P,X same_side b [Psim_bX] by b_OB, x_OX, axb_intO, Pin_x_O,
Xin_x_O, P_OX, EquivIntersection_THM;
P,B same_side a /\ P,A same_side b by Psim_aX, Psim_bX, XintAOB, a_OA,
b_OB, H1, Collinear_DEF, SameSideTransitiveRelation_THM,
Transitive_relation_DEF;
qed by H1, a_OA, b_OB, Psim_aX, Psim_bX, -, InteriorAngle_DEF`;;
let AngleOrdering_THM = thm `;
let O A P Q be point;
let a be point_set;
assume ~(O = A) [H1];
assume Line a /\ O IN a /\ A IN a
[H2];
assume ~(P IN a) /\ ~(Q IN a) [H3];
assume P, Q same_side a [H4];
assume ~Collinear(P, O, Q) [H5];
thus P int_angle Q,O,A \/ Q int_angle P,O,A
proof
~(P = O) /\ ~(P = Q) /\ ~(O = Q) [Distinct] by H5,
NonCollinearImpliesDistinct_THM;
consider p such that Line p /\ O IN p /\ P IN p [p_OP] by
Distinct, I1;
consider q such that Line q /\ O IN q /\ Q IN q [q_OQ] by
Distinct, I1;
~(q = a) by H3, q_OQ;
q INTER a = {O} by -, H2, q_OQ, Line01infinity_THM;
~(A IN q) by -, H2, H1, IntersectionSingletonOneNotOther_THM;
~(P IN q) [notPq] by q_OQ, H5, Collinear_DEF;
~(p = q) by -, p_OP;
p INTER q = {O} by -, p_OP, q_OQ, Line01infinity_THM;
~Collinear(Q, O, A) [QOA_noncol] by H1, H2, I1, H3, Collinear_DEF;
~Collinear (P,O,A) [POA_noncol] by H1, H2, I1, H3, Collinear_DEF;
assume ~(P int_angle Q,O,A) [notP_QOA];
Q int_angle P,O,A
proof
~(P, A same_side q) by QOA_noncol, H2, q_OQ, H3,
notPq, H4, notP_QOA, InteriorAngle_DEF;
consider G such that (G IN q) /\ Between(P, G, A) [existG] by q_OQ, -,
same_side_DEF;
G int_angle P,O,A [G_POA] by POA_noncol, existG, ConverseCrossbar_THM;
~(G IN a) /\ G,P same_side a [Gsim_aP] by -, InteriorAngle_DEF, H1, H2,
I1;
~(G = O) [GnotO] by -, H2;
G,Q same_side a by H2, Gsim_aP, H3, H4,
SameSideTransitiveRelation_THM, Transitive_relation_DEF;
~Between (Q,O,G) [notQOG] by -, same_side_DEF, H2, B1;
Collinear(O,G,Q) by q_OQ, existG, Collinear_DEF;
Q IN ray(O,G) by GnotO, -, notQOG, IN, Ray_DEF;
qed by POA_noncol, G_POA, -, Distinct, WholeRayInterior_THM;
qed by -`;;
let InteriorReflectionInterior_THM = thm `;
let A O B D A' be point;
assume ~Collinear(A, O, B) [H1];
assume D int_angle A,O,B [H2];
assume Between(A, O, A') [H3];
thus B int_angle D,O,A'
proof
~(A = O) /\ ~(A = B) /\ ~(O = B) [Distinct] by H1,
NonCollinearImpliesDistinct_THM;
consider a such that
Line a /\ O IN a /\ A IN a [a_OA] by
Distinct, I1;
consider b such that
Line b /\ O IN b /\ B IN b [b_OB] by
Distinct, I1;
~(A IN b) [notAb] by b_OB, H1, Collinear_DEF;
~(B IN a) [notBa] by a_OA, H1, Collinear_DEF;
~(a = b) by -, b_OB;
b INTER a = {O} [ab_O] by -, a_OA, b_OB, Line01infinity_THM;
A' IN a [A'a] by H3, a_OA, BetweenLinear_THM;
A' IN a DELETE O by A'a, H3, B1, IN_DELETE;
~(A' IN b) [notA'b] by ab_O, -, EquivIntersectionHelp_THM;
~(A,A' same_side b) [Ansim_bA'] by b_OB, H3, same_side_DEF ;
~(D IN a) /\ ~(D IN b) /\
D,B same_side a /\ D,A same_side b [DintAOB] by a_OA, b_OB, H2,
InteriorHelp_THM;
~(D,A' same_side b) [Dnsim_bA']
proof
assume D,A' same_side b;
A',D same_side b by b_OB, DintAOB, notA'b, -,
SameSideSymmetricRelation_THM, Symmetric_relation_DEF;
A',A same_side b by b_OB, DintAOB, notA'b, notAb, -,
SameSideTransitiveRelation_THM, Transitive_relation_DEF;
A,A' same_side b by b_OB, notA'b, notAb, -,
SameSideSymmetricRelation_THM, Symmetric_relation_DEF;
F by -, Ansim_bA';
qed by -;
~(D int_angle B,O,A') [notD_BOA']
proof
assume D int_angle B,O,A';
D,A' same_side b by b_OB, a_OA, A'a, -, DintAOB, InteriorHelp_THM;
F by -, Dnsim_bA';
qed by -;
~Collinear (D,O,B) [DOB_noncol] by Distinct, b_OB, I1, DintAOB,
Collinear_DEF;
~(O = A') by H3, B1;
B int_angle D,O,A' by -, a_OA, A'a, DintAOB, notBa, DOB_noncol, notD_BOA',
AngleOrdering_THM;
qed by -`;;
let Crossbar_THM = thm `;
let O A B D be point;
assume ~Collinear(A, O, B) [H1];
assume D int_angle A,O,B [H2];
thus ?G. Between(A, G, B) /\ G IN ray(O, D)
proof
~(A = O) /\ ~(A = B) /\ ~(O = B) [Distinct] by H1,
NonCollinearImpliesDistinct_THM;
consider a such that
Line a /\ O IN a /\ A IN a [a_OA] by
Distinct, I1;
consider b such that
Line b /\ O IN b /\ B IN b [b_OB] by
Distinct, I1;
~(B IN a) [notBa] by a_OA, H1, Collinear_DEF;
~(D IN a) /\ ~(D IN b) /\ D,B same_side a [D_AOB] by a_OA, b_OB, H2,
InteriorHelp_THM;
~(D = O) [DnotO] by D_AOB, a_OA;
consider l such that
Line l /\ O IN l /\ D IN l [l_OD] by -, I1;
~(a = l) /\ ~(b = l) [abl_distinct] by l_OD, D_AOB, b_OB, notBa;
a INTER l = {O} [alO] by abl_distinct, a_OA, l_OD, Line01infinity_THM;
b INTER l = {O} [blO] by abl_distinct, b_OB, l_OD, Line01infinity_THM;
~(A IN l) /\ ~(B IN l) [ABnot_l] by alO, blO, a_OA, b_OB, Distinct,
IntersectionSingletonOneNotOther_THM;
consider A' such that Between(A, O, A') [AOA'] by Distinct, B2;
A' IN a [A'a] by a_OA, -, BetweenLinear_THM;
~(A' = O) [A'notO] by AOA', B1;
~(A,A' same_side l) [Ansim_lA'] by l_OD, AOA', same_side_DEF;
~(A' IN l) [A'not_l] by alO, A'a, A'notO,
IntersectionSingletonOneNotOther_THM;
B int_angle D,O,A' by H1, H2, AOA', InteriorReflectionInterior_THM;
B,A' same_side l [Bsim_lA'] by l_OD, a_OA, A'a, -, InteriorHelp_THM;
~(A,B same_side l) [Ansim_lB]
proof
assume A,B same_side l;
A,A' same_side l by l_OD, ABnot_l, A'not_l, -, Bsim_lA',
SameSideTransitiveRelation_THM, Transitive_relation_DEF;
qed by -, Ansim_lA';
consider G such that
Between(A, G, B) /\ G IN l [AGB] by l_OD, Ansim_lB,
same_side_DEF;
Collinear (O,D,G) [ODGcol] by AGB, l_OD, Collinear_DEF;
G int_angle A,O,B by H1, AGB, ConverseCrossbar_THM;
~(G IN a) /\ G,B same_side a [Gsim_aB] by a_OA, b_OB, -, InteriorHelp_THM;
D,B same_side a by a_OA, b_OB, H2, InteriorHelp_THM;
B,D same_side a by a_OA, notBa, D_AOB, -, SameSideSymmetricRelation_THM,
Symmetric_relation_DEF;
G,D same_side a [Gsim_aD] by a_OA, Gsim_aB, notBa, D_AOB, Gsim_aB, -,
SameSideTransitiveRelation_THM, Transitive_relation_DEF;
~Between(G, O, D) by a_OA, -, same_side_DEF;
G IN ray(O,D) [G_OD] by DnotO, ODGcol, -, IN, Ray_DEF;
qed by AGB, G_OD`;;
let IntervalTransitivity_THM = thm `;
let O P Q R be point;
let m be point_set;
assume Line m [H0];
assume O IN m [H1];
assume P IN m DELETE O /\ Q IN m DELETE O /\ R IN m DELETE O [H2];
assume ~Between(P, O, Q) /\ ~Between(Q, O, R) [H3];
thus ~Between(P, O, R)
proof
P IN m /\ Q IN m /\ R IN m /\ ~(P = O) /\ ~(Q = O) /\ ~(R = O) [H2'] by H2,
IN_DELETE;
consider E such that
~(E IN m) [notEm] by H0, ExistsPointOffLine_THM;
~(O = E) by H1, notEm;
consider l such that
Line l /\ O IN l /\ E IN l [OE_l] by -, I1;
~(m = l) by notEm, OE_l;
l INTER m = {O} [ml_O] by OE_l, H0, -, H1, OE_l,
Line01infinity_THM;
~(P IN l) /\ ~(Q IN l) /\ ~(R IN l) [PQRnotl] by ml_O, H2',
IntersectionSingletonOneNotOther_THM;
P,Q same_side l /\ Q,R same_side l [Psim_lQsim_lR] by OE_l, H0, ml_O, H2,
H3, PQRnotl, EquivIntersection_THM;
P,R same_side l [Psim_lR] by OE_l, PQRnotl,
Psim_lQsim_lR,
SameSideTransitiveRelation_THM,
Transitive_relation_DEF;
qed by OE_l, -, same_side_DEF`;;
let RayLine_THM = thm `;
let O P X be point;
let l be point_set;
assume Line l /\ O IN l /\ P IN l [H1];
assume X IN ray(O,P) [H2];
thus X IN l
proof
~(O = P) /\ Collinear (O,P,X) by H2, IN, Ray_DEF;
X IN l by H1, -, CollinearLinear_THM;
qed by -`;;
let RayWellDefinedHalfway_THM = thm `;
let O P Q be point;
assume ~(Q = O) [H1];
assume P IN ray(O, Q) DELETE O [H2];
thus ray(O, P) SUBSET ray(O, Q)
proof
consider m such that
Line m /\ O IN m /\ Q IN m [OQm] by H1, I1;
P IN ray(O, Q) /\ ~(P = O) [H2'] by H2, IN_DELETE;
P IN m [Pm] by OQm, H2', RayLine_THM;
P IN m DELETE O /\ Q IN m DELETE O [PQm_O] by Pm, H2', OQm, H1, IN_DELETE;
~Between (P, O, Q) [notPOQ] by H2', IN, Ray_DEF;
!X. X IN ray(O, P) ==> X IN ray(O, Q)
proof
let X be point;
assume X IN ray(O, P) [XrOP];
X IN m [Xm] by OQm, Pm, H2', -, RayLine_THM;
Collinear (O, Q, X) [OQXcol] by OQm, Xm, Collinear_DEF;
~Between (X, O, P) [notXOP] by XrOP, IN, Ray_DEF;
cases;
suppose X = O;
X IN ray(O, Q) by H1, -, OriginInRay_THM;
qed by -;
suppose ~(X = O) [notXO];
X IN m DELETE O by Xm, notXO, IN_DELETE;
~Between(X, O, Q) by OQm, -, PQm_O, notXOP, notPOQ,
IntervalTransitivity_THM;
X IN ray(O, Q) by H1, OQXcol, -, IN, Ray_DEF;
qed by -;
end;
qed by -, SUBSET`;;
let RayWellDefined_THM = thm `;
let O P Q be point;
assume ~(Q = O) [H1];
assume P IN ray(O, Q) DELETE O [H2];
thus ray(O, P) = ray(O, Q)
proof
ray (O,P) SUBSET ray (O,Q) [PsubsetQ] by H1, H2,
RayWellDefinedHalfway_THM;
P IN ray(O, Q) /\ ~(P = O) [H2'] by H2, IN_DELETE;
Collinear (O, Q, P) /\ ~Between (P, O, Q) [notPOQ] by H2', IN, Ray_DEF;
Collinear (O, P, Q) [OQPcol] by notPOQ, CollinearSymmetry_THM;
~Between (Q, O, P) [notQOP] by notPOQ, B1;
Q IN ray(O, P) by H2', OQPcol, notQOP, IN, Ray_DEF;
Q IN ray(O, P) DELETE O [QrOP_O] by -, H1, IN_DELETE;
ray (O,Q) SUBSET ray (O,P) [QsubsetP] by H2', QrOP_O,
RayWellDefinedHalfway_THM;
qed by PsubsetQ, QsubsetP, DoubleSubsetEqual_THM `;;
let OppositeRaysIntersect1pointHelp_THM = thm `;
let A O B X be point;
assume Between(A, O, B)
[H1];
assume X IN ray(O, B) DELETE O [H2];
thus ~(X IN ray(O, A))
proof
~(A = O) /\ ~(A = B) /\ ~(O = B) /\ Collinear (A, O, B) [B1_AOB] by H1, B1;
X IN ray(O, B) /\ ~(X = O) [H2'] by H2, IN_DELETE;
Collinear (O, B, X) /\ ~Between (X, O, B) [K2] by -, IN, Ray_DEF;
consider m such that
Line m /\ A IN m /\ B IN m [ABm] by B1_AOB, I1;
O IN m [Om] by ABm, B1_AOB, CollinearLinear_THM;
X IN m [Xm] by ABm, Om, K2, B1_AOB, CollinearLinear_THM;
A IN m DELETE O /\ X IN m DELETE O /\ B IN m DELETE O [AXBm_O] by ABm,
Xm, H2', B1_AOB, IN_DELETE;
Between(A, O, X) by H1, ABm, Om, AXBm_O, K2, IntervalTransitivity_THM;
Between(X, O, A) by -, B1;
qed by -, IN, Ray_DEF`;;
let OppositeRaysIntersect1point_THM = thm `;
let A O B be point;
assume Between(A, O, B)
[H1];
thus ray(O, A) INTER ray(O, B) = {O}
proof
~(A = O) /\ ~(A = B) /\ ~(O = B) /\ Between (B,O,A) /\ Collinear (A,O,B)
[B1_AOB] by H1, B1;
O IN ray(O, A) INTER ray(O, B) by B1_AOB, OriginInRay_THM, IN_INTER;
{O} SUBSET ray(O, A) INTER ray(O, B) [Osubset_rOA] by -, SING_SUBSET;
ray(O, A) INTER ray(O, B) SUBSET {O}
proof
!X. X IN ray(O, A) INTER ray(O, B) ==> X IN {O}
proof
let X be point;
assume X IN ray(O, A) INTER ray(O, B);
X IN ray(O, A) /\ X IN ray(O, B) [XinBothRays] by -, IN_INTER;
cases;
suppose X = O;
qed by -, IN_SING;
suppose ~(X = O);
X IN ray(O, B) DELETE O by -, XinBothRays, IN_DELETE;
~(X IN ray (O,A)) by H1, -, OppositeRaysIntersect1pointHelp_THM;
F by -, XinBothRays;
qed by -;
end;
qed by -, SUBSET;
qed by -, Osubset_rOA, DoubleSubsetEqual_THM`;;
let TransitivitybetweennessHelp_THM = thm `;
let A B C D be point;
assume Between (A,B,C) /\ Between (B,C,D) [H1];
thus Between (A,B,D)
proof
~(A = B) /\ ~(A = C) /\ ~(B = C) [Distinct] by H1, B1;
consider l such that
Line l /\ A IN l /\ C IN l [ACl] by Distinct, I1;
B IN l /\ D IN l by ACl, H1, BetweenLinear_THM;
Collinear (B,A,D) [BADcol] by ACl, -, Collinear_DEF;
~Between (D,B,C) by H1, B1, B3;
D IN ray (B,C) DELETE B by Distinct, H1, B1, -, IN, Ray_DEF, IN_DELETE;
~(D IN ray (B,A)) by Distinct, H1, -, OppositeRaysIntersect1pointHelp_THM;
Between (D,B,A) by Distinct, BADcol, -, IN, Ray_DEF;
qed by -, B1`;;
let Transitivitybetweenness_THM = thm `;
let A B C D be point;
assume Between (A,B,C) /\ Between (B,C,D) [H1];
thus is_ordered (A,B,C,D)
proof
Between (A,B,D) [ABD] by H1, TransitivitybetweennessHelp_THM;
Between (D,C,B) /\ Between (C,B,A) by H1, B1;
Between (D,C,A) [DCA] by -, TransitivitybetweennessHelp_THM;
Between (A,C,D) by -, B1;
qed by H1, ABD, -, is_ordered_DEF`;;
let Transitivitybetweenness_THM = thm `;
let A B C D be point;
assume Between (A,B,C) /\ Between (B,C,D) [H1];
thus is_ordered (A,B,C,D)
proof
!P Q R S. Between (P,Q,R) /\ Between (Q,R,S) ==> Between (P,Q,S) [help]
proof
let P Q R S be point;
assume Between (P,Q,R) /\ Between (Q,R,S) [PQRS];
~(P = Q) /\ ~(P = R) /\ ~(Q = R) [Distinct] by PQRS, B1;
consider l such that
Line l /\ P IN l /\ R IN l [PRl] by Distinct, I1;
Q IN l /\ S IN l by PRl, PQRS, BetweenLinear_THM;
Collinear (Q,P,S) [QPScol] by PRl, -, Collinear_DEF;
~Between (S,Q,R) by PQRS, B1, B3;
S IN ray (Q,R) DELETE Q by Distinct, PQRS, B1, -, IN, Ray_DEF, IN_DELETE;
~(S IN ray (Q,P)) by Distinct, PQRS, -,
OppositeRaysIntersect1pointHelp_THM;
Between (S,Q,P) by Distinct, QPScol, -, IN, Ray_DEF;
qed by -, B1;
Between (A,B,D) [ABD] by H1, help;
Between (D,C,B) /\ Between (C,B,A) by H1, B1;
Between (D,C,A) [DCA] by -, help;
Between (A,C,D) by -, B1;
qed by H1, ABD, -, is_ordered_DEF`;;
let IntervalsAreConvex_THM = thm `;
let A B C be point;
assume B IN open_int (A,C) [H1];
thus open_int (A,B) SUBSET open_int (A,C)
proof
!X. X IN open_int (A,B) ==> X IN open_int (A,C)
proof
let X be point;
assume X IN open_int (A,B) [Xin_intAB];
Between (A,B,C) [ABC] by H1, IN, Interval_DEF;
Between (A,X,B) [AXB] by Xin_intAB, IN, Interval_DEF;
~(A = X) /\ ~(A = B) /\ ~(A = C) /\ ~(X = B) /\ ~(B = C) [Distinct]
by AXB, ABC, B1;
consider l such that
Line l /\ A IN l /\ C IN l [ACl] by Distinct, I1;
B IN l /\ X IN l by ACl, ABC, AXB, BetweenLinear_THM;
Collinear (B,C,X) [BCXcol] by ACl, -, Collinear_DEF;
Collinear (B,A,X) [ABXcol] by AXB, B1, CollinearSymmetry_THM ;
~Between (X,B,A) by Distinct, ABXcol, AXB, B3;
X IN ray(B,A) DELETE B [XrBA_B] by Distinct, ABXcol, -, Ray_DEF, IN,
IN_DELETE;
~(X IN ray (B,C)) [notXrBC] by ABC, B1, XrBA_B,
OppositeRaysIntersect1pointHelp_THM;
Between (X,B,C) by Distinct, BCXcol, notXrBC, IN, Ray_DEF;
Between (A,X,C) [AXC] by AXB, -, TransitivitybetweennessHelp_THM;
X IN open_int (A,C) by AXC, IN, Interval_DEF;
qed by -;
qed by -, SUBSET`;;
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
hol-info mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/hol-info